(VAR V1 V2 N M X) (RULES U11(tt,V1,V2) -> U12(isNat(V1),V2) U12(tt,V2) -> U13(isNat(V2)) U13(tt) -> tt U21(tt,V1) -> U22(isNat(V1)) U22(tt) -> tt U31(tt,V1,V2) -> U32(isNat(V1),V2) U32(tt,V2) -> U33(isNat(V2)) U33(tt) -> tt U41(tt,N) -> N U51(tt,M,N) -> s(plus(N,M)) U61(tt) -> 0 U71(tt,M,N) -> plus(x(N,M),N) and(tt,X) -> X isNat(0) -> tt isNat(plus(V1,V2)) -> U11(and(isNatKind(V1),isNatKind(V2)),V1,V2) isNat(s(V1)) -> U21(isNatKind(V1),V1) isNat(x(V1,V2)) -> U31(and(isNatKind(V1),isNatKind(V2)),V1,V2) isNatKind(0) -> tt isNatKind(plus(V1,V2)) -> and(isNatKind(V1),isNatKind(V2)) isNatKind(s(V1)) -> isNatKind(V1) isNatKind(x(V1,V2)) -> and(isNatKind(V1),isNatKind(V2)) plus(N,0) -> U41(and(isNat(N),isNatKind(N)),N) plus(N,s(M)) -> U51(and(and(isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) x(N,0) -> U61(and(isNat(N),isNatKind(N))) x(N,s(M)) -> U71(and(and(isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) ) Proving termination of rewriting for MYNAT_complete: -> Dependency pairs: nF_U11(tt,V1,V2) -> nF_U12(isNat(V1),V2) nF_U11(tt,V1,V2) -> nF_isNat(V1) nF_U12(tt,V2) -> nF_U13(isNat(V2)) nF_U12(tt,V2) -> nF_isNat(V2) nF_U21(tt,V1) -> nF_U22(isNat(V1)) nF_U21(tt,V1) -> nF_isNat(V1) nF_U31(tt,V1,V2) -> nF_U32(isNat(V1),V2) nF_U31(tt,V1,V2) -> nF_isNat(V1) nF_U32(tt,V2) -> nF_U33(isNat(V2)) nF_U32(tt,V2) -> nF_isNat(V2) nF_U51(tt,M,N) -> nF_plus(N,M) nF_U71(tt,M,N) -> nF_plus(x(N,M),N) nF_U71(tt,M,N) -> nF_x(N,M) nF_isNat(plus(V1,V2)) -> nF_U11(and(isNatKind(V1),isNatKind(V2)),V1,V2) nF_isNat(plus(V1,V2)) -> nF_and(isNatKind(V1),isNatKind(V2)) nF_isNat(plus(V1,V2)) -> nF_isNatKind(V1) nF_isNat(plus(V1,V2)) -> nF_isNatKind(V2) nF_isNat(s(V1)) -> nF_U21(isNatKind(V1),V1) nF_isNat(s(V1)) -> nF_isNatKind(V1) nF_isNat(x(V1,V2)) -> nF_U31(and(isNatKind(V1),isNatKind(V2)),V1,V2) nF_isNat(x(V1,V2)) -> nF_and(isNatKind(V1),isNatKind(V2)) nF_isNat(x(V1,V2)) -> nF_isNatKind(V1) nF_isNat(x(V1,V2)) -> nF_isNatKind(V2) nF_isNatKind(plus(V1,V2)) -> nF_and(isNatKind(V1),isNatKind(V2)) nF_isNatKind(plus(V1,V2)) -> nF_isNatKind(V1) nF_isNatKind(plus(V1,V2)) -> nF_isNatKind(V2) nF_isNatKind(s(V1)) -> nF_isNatKind(V1) nF_isNatKind(x(V1,V2)) -> nF_and(isNatKind(V1),isNatKind(V2)) nF_isNatKind(x(V1,V2)) -> nF_isNatKind(V1) nF_isNatKind(x(V1,V2)) -> nF_isNatKind(V2) nF_plus(N,0) -> nF_U41(and(isNat(N),isNatKind(N)),N) nF_plus(N,0) -> nF_and(isNat(N),isNatKind(N)) nF_plus(N,0) -> nF_isNat(N) nF_plus(N,0) -> nF_isNatKind(N) nF_plus(N,s(M)) -> nF_U51(and(and(isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) nF_plus(N,s(M)) -> nF_and(and(isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))) nF_plus(N,s(M)) -> nF_and(isNat(M),isNatKind(M)) nF_plus(N,s(M)) -> nF_isNat(M) nF_plus(N,s(M)) -> nF_isNatKind(M) nF_plus(N,s(M)) -> nF_and(isNat(N),isNatKind(N)) nF_plus(N,s(M)) -> nF_isNat(N) nF_plus(N,s(M)) -> nF_isNatKind(N) nF_x(N,0) -> nF_U61(and(isNat(N),isNatKind(N))) nF_x(N,0) -> nF_and(isNat(N),isNatKind(N)) nF_x(N,0) -> nF_isNat(N) nF_x(N,0) -> nF_isNatKind(N) nF_x(N,s(M)) -> nF_U71(and(and(isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) nF_x(N,s(M)) -> nF_and(and(isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))) nF_x(N,s(M)) -> nF_and(isNat(M),isNatKind(M)) nF_x(N,s(M)) -> nF_isNat(M) nF_x(N,s(M)) -> nF_isNatKind(M) nF_x(N,s(M)) -> nF_and(isNat(N),isNatKind(N)) nF_x(N,s(M)) -> nF_isNat(N) nF_x(N,s(M)) -> nF_isNatKind(N) -> Proof of termination for MYNAT_complete_1_1: -> -> Dependency pairs in cycle: nF_U71(tt,M,N) -> nF_x(N,M) nF_x(N,s(M)) -> nF_U71(and(and(isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) Termination proved: Cycles verify subterm criterion. -> Proof of termination for MYNAT_complete_1_2: -> -> Dependency pairs in cycle: nF_U51(tt,M,N) -> nF_plus(N,M) nF_plus(N,s(M)) -> nF_U51(and(and(isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) Termination proved: Cycles verify subterm criterion. -> Proof of termination for MYNAT_complete_1_3: -> -> Dependency pairs in cycle: nF_U11(tt,V1,V2) -> nF_U12(isNat(V1),V2) nF_isNat(plus(V1,V2)) -> nF_U11(and(isNatKind(V1),isNatKind(V2)),V1,V2) nF_U32(tt,V2) -> nF_isNat(V2) nF_U31(tt,V1,V2) -> nF_U32(isNat(V1),V2) nF_isNat(x(V1,V2)) -> nF_U31(and(isNatKind(V1),isNatKind(V2)),V1,V2) nF_U31(tt,V1,V2) -> nF_isNat(V1) nF_U21(tt,V1) -> nF_isNat(V1) nF_isNat(s(V1)) -> nF_U21(isNatKind(V1),V1) nF_U12(tt,V2) -> nF_isNat(V2) nF_U11(tt,V1,V2) -> nF_isNat(V1) Usable Rules: U11(tt,V1,V2) -> U12(isNat(V1),V2) U12(tt,V2) -> U13(isNat(V2)) U13(tt) -> tt U21(tt,V1) -> U22(isNat(V1)) U22(tt) -> tt U31(tt,V1,V2) -> U32(isNat(V1),V2) U32(tt,V2) -> U33(isNat(V2)) U33(tt) -> tt and(tt,X) -> X isNat(0) -> tt isNat(plus(V1,V2)) -> U11(and(isNatKind(V1),isNatKind(V2)),V1,V2) isNat(s(V1)) -> U21(isNatKind(V1),V1) isNat(x(V1,V2)) -> U31(and(isNatKind(V1),isNatKind(V2)),V1,V2) isNatKind(0) -> tt isNatKind(plus(V1,V2)) -> and(isNatKind(V1),isNatKind(V2)) isNatKind(s(V1)) -> isNatKind(V1) isNatKind(x(V1,V2)) -> and(isNatKind(V1),isNatKind(V2)) Polynomial Interpretation: [U11](X1,X2,X3) = X2 + X3 + 1 [tt] = 1 [U12](X1,X2) = X1 + X2 [isNat](X) = X + 1 [U13](X) = X [U21](X1,X2) = X1 + X2 [U22](X) = X [U31](X1,X2,X3) = X2 + 1 [U32](X1,X2) = X1 [U33](X) = 1 [U41](X1,X2) = 0 [U51](X1,X2,X3) = 0 [s](X) = X [plus](X1,X2) = X1 + X2 + 1 [U61](X) = 0 [0] = 0 [U71](X1,X2,X3) = 0 [x](X1,X2) = X1 + X2 + 1 [and](X1,X2) = X2 [isNatKind](X) = 1 [nF_U11](X1,X2,X3) = X1 + X2 + X3 [nF_isNat](X) = X [nF_U32](X1,X2) = X1 + X2 [nF_U31](X1,X2,X3) = X1 + X2 + X3 [nF_U21](X1,X2) = X2 [nF_U12](X1,X2) = X2 TIME: 3.889e-2 -> -> Dependency pairs in cycle: nF_U11(tt,V1,V2) -> nF_U12(isNat(V1),V2) nF_isNat(plus(V1,V2)) -> nF_U11(and(isNatKind(V1),isNatKind(V2)),V1,V2) nF_U12(tt,V2) -> nF_isNat(V2) nF_U21(tt,V1) -> nF_isNat(V1) nF_isNat(s(V1)) -> nF_U21(isNatKind(V1),V1) nF_U31(tt,V1,V2) -> nF_isNat(V1) nF_isNat(x(V1,V2)) -> nF_U31(and(isNatKind(V1),isNatKind(V2)),V1,V2) nF_U32(tt,V2) -> nF_isNat(V2) nF_U31(tt,V1,V2) -> nF_U32(isNat(V1),V2) Usable Rules: U11(tt,V1,V2) -> U12(isNat(V1),V2) U12(tt,V2) -> U13(isNat(V2)) U13(tt) -> tt U21(tt,V1) -> U22(isNat(V1)) U22(tt) -> tt U31(tt,V1,V2) -> U32(isNat(V1),V2) U32(tt,V2) -> U33(isNat(V2)) U33(tt) -> tt and(tt,X) -> X isNat(0) -> tt isNat(plus(V1,V2)) -> U11(and(isNatKind(V1),isNatKind(V2)),V1,V2) isNat(s(V1)) -> U21(isNatKind(V1),V1) isNat(x(V1,V2)) -> U31(and(isNatKind(V1),isNatKind(V2)),V1,V2) isNatKind(0) -> tt isNatKind(plus(V1,V2)) -> and(isNatKind(V1),isNatKind(V2)) isNatKind(s(V1)) -> isNatKind(V1) isNatKind(x(V1,V2)) -> and(isNatKind(V1),isNatKind(V2)) Polynomial Interpretation: [U11](X1,X2,X3) = X3 [tt] = 1 [U12](X1,X2) = X2 [isNat](X) = X [U13](X) = X [U21](X1,X2) = X2 [U22](X) = X [U31](X1,X2,X3) = X3 [U32](X1,X2) = X2 [U33](X) = X [U41](X1,X2) = 0 [U51](X1,X2,X3) = 0 [s](X) = X + 1 [plus](X1,X2) = X2 + 1 [U61](X) = 0 [0] = 1 [U71](X1,X2,X3) = 0 [x](X1,X2) = X1 + X2 [and](X1,X2) = X2 [isNatKind](X) = 1 [nF_U11](X1,X2,X3) = X1 + X3 [nF_isNat](X) = X + 1 [nF_U12](X1,X2) = X2 + 1 [nF_U21](X1,X2) = X1 + X2 [nF_U31](X1,X2,X3) = X1 + X2 + X3 [nF_U32](X1,X2) = X1 + X2 TIME: 3.881e-2 -> -> Dependency pairs in cycle: nF_U11(tt,V1,V2) -> nF_U12(isNat(V1),V2) nF_isNat(plus(V1,V2)) -> nF_U11(and(isNatKind(V1),isNatKind(V2)),V1,V2) nF_U31(tt,V1,V2) -> nF_isNat(V1) nF_isNat(x(V1,V2)) -> nF_U31(and(isNatKind(V1),isNatKind(V2)),V1,V2) nF_U21(tt,V1) -> nF_isNat(V1) nF_isNat(s(V1)) -> nF_U21(isNatKind(V1),V1) nF_U12(tt,V2) -> nF_isNat(V2) Termination proved: Cycles verify subterm criterion. -> Proof of termination for MYNAT_complete_1_4: -> -> Dependency pairs in cycle: nF_isNatKind(x(V1,V2)) -> nF_isNatKind(V2) nF_isNatKind(x(V1,V2)) -> nF_isNatKind(V1) nF_isNatKind(s(V1)) -> nF_isNatKind(V1) nF_isNatKind(plus(V1,V2)) -> nF_isNatKind(V2) nF_isNatKind(plus(V1,V2)) -> nF_isNatKind(V1) Termination proved: Cycles verify subterm criterion. SETTINGS: Base ordering: Polynomial ordering Proof mode: SCCs in DG + base ordering Upper bound for coeffs: 1 Rationals below 1 for all non-replacing args: No Polynomial interpretation: Linear Coeffs in polynomials: No rationals Delta: automatic Termination was proved succesfully.