YES We show the termination of the TRS R: U11(tt(),V1,V2) -> U12(isNat(activate(V1)),activate(V2)) U12(tt(),V2) -> U13(isNat(activate(V2))) U13(tt()) -> tt() U21(tt(),V1) -> U22(isNat(activate(V1))) U22(tt()) -> tt() U31(tt(),N) -> activate(N) U41(tt(),M,N) -> s(plus(activate(N),activate(M))) and(tt(),X) -> activate(X) isNat(n__0()) -> tt() isNat(n__plus(V1,V2)) -> U11(and(isNatKind(activate(V1)),n__isNatKind(activate(V2))),activate(V1),activate(V2)) isNat(n__s(V1)) -> U21(isNatKind(activate(V1)),activate(V1)) isNatKind(n__0()) -> tt() isNatKind(n__plus(V1,V2)) -> and(isNatKind(activate(V1)),n__isNatKind(activate(V2))) isNatKind(n__s(V1)) -> isNatKind(activate(V1)) plus(N,|0|()) -> U31(and(isNat(N),n__isNatKind(N)),N) plus(N,s(M)) -> U41(and(and(isNat(M),n__isNatKind(M)),n__and(isNat(N),n__isNatKind(N))),M,N) |0|() -> n__0() plus(X1,X2) -> n__plus(X1,X2) isNatKind(X) -> n__isNatKind(X) s(X) -> n__s(X) and(X1,X2) -> n__and(X1,X2) activate(n__0()) -> |0|() activate(n__plus(X1,X2)) -> plus(X1,X2) activate(n__isNatKind(X)) -> isNatKind(X) activate(n__s(X)) -> s(X) activate(n__and(X1,X2)) -> and(X1,X2) activate(X) -> X -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: U11#(tt(),V1,V2) -> U12#(isNat(activate(V1)),activate(V2)) p2: U11#(tt(),V1,V2) -> isNat#(activate(V1)) p3: U11#(tt(),V1,V2) -> activate#(V1) p4: U11#(tt(),V1,V2) -> activate#(V2) p5: U12#(tt(),V2) -> U13#(isNat(activate(V2))) p6: U12#(tt(),V2) -> isNat#(activate(V2)) p7: U12#(tt(),V2) -> activate#(V2) p8: U21#(tt(),V1) -> U22#(isNat(activate(V1))) p9: U21#(tt(),V1) -> isNat#(activate(V1)) p10: U21#(tt(),V1) -> activate#(V1) p11: U31#(tt(),N) -> activate#(N) p12: U41#(tt(),M,N) -> s#(plus(activate(N),activate(M))) p13: U41#(tt(),M,N) -> plus#(activate(N),activate(M)) p14: U41#(tt(),M,N) -> activate#(N) p15: U41#(tt(),M,N) -> activate#(M) p16: and#(tt(),X) -> activate#(X) p17: isNat#(n__plus(V1,V2)) -> U11#(and(isNatKind(activate(V1)),n__isNatKind(activate(V2))),activate(V1),activate(V2)) p18: isNat#(n__plus(V1,V2)) -> and#(isNatKind(activate(V1)),n__isNatKind(activate(V2))) p19: isNat#(n__plus(V1,V2)) -> isNatKind#(activate(V1)) p20: isNat#(n__plus(V1,V2)) -> activate#(V1) p21: isNat#(n__plus(V1,V2)) -> activate#(V2) p22: isNat#(n__s(V1)) -> U21#(isNatKind(activate(V1)),activate(V1)) p23: isNat#(n__s(V1)) -> isNatKind#(activate(V1)) p24: isNat#(n__s(V1)) -> activate#(V1) p25: isNatKind#(n__plus(V1,V2)) -> and#(isNatKind(activate(V1)),n__isNatKind(activate(V2))) p26: isNatKind#(n__plus(V1,V2)) -> isNatKind#(activate(V1)) p27: isNatKind#(n__plus(V1,V2)) -> activate#(V1) p28: isNatKind#(n__plus(V1,V2)) -> activate#(V2) p29: isNatKind#(n__s(V1)) -> isNatKind#(activate(V1)) p30: isNatKind#(n__s(V1)) -> activate#(V1) p31: plus#(N,|0|()) -> U31#(and(isNat(N),n__isNatKind(N)),N) p32: plus#(N,|0|()) -> and#(isNat(N),n__isNatKind(N)) p33: plus#(N,|0|()) -> isNat#(N) p34: plus#(N,s(M)) -> U41#(and(and(isNat(M),n__isNatKind(M)),n__and(isNat(N),n__isNatKind(N))),M,N) p35: plus#(N,s(M)) -> and#(and(isNat(M),n__isNatKind(M)),n__and(isNat(N),n__isNatKind(N))) p36: plus#(N,s(M)) -> and#(isNat(M),n__isNatKind(M)) p37: plus#(N,s(M)) -> isNat#(M) p38: plus#(N,s(M)) -> isNat#(N) p39: activate#(n__0()) -> |0|#() p40: activate#(n__plus(X1,X2)) -> plus#(X1,X2) p41: activate#(n__isNatKind(X)) -> isNatKind#(X) p42: activate#(n__s(X)) -> s#(X) p43: activate#(n__and(X1,X2)) -> and#(X1,X2) and R consists of: r1: U11(tt(),V1,V2) -> U12(isNat(activate(V1)),activate(V2)) r2: U12(tt(),V2) -> U13(isNat(activate(V2))) r3: U13(tt()) -> tt() r4: U21(tt(),V1) -> U22(isNat(activate(V1))) r5: U22(tt()) -> tt() r6: U31(tt(),N) -> activate(N) r7: U41(tt(),M,N) -> s(plus(activate(N),activate(M))) r8: and(tt(),X) -> activate(X) r9: isNat(n__0()) -> tt() r10: isNat(n__plus(V1,V2)) -> U11(and(isNatKind(activate(V1)),n__isNatKind(activate(V2))),activate(V1),activate(V2)) r11: isNat(n__s(V1)) -> U21(isNatKind(activate(V1)),activate(V1)) r12: isNatKind(n__0()) -> tt() r13: isNatKind(n__plus(V1,V2)) -> and(isNatKind(activate(V1)),n__isNatKind(activate(V2))) r14: isNatKind(n__s(V1)) -> isNatKind(activate(V1)) r15: plus(N,|0|()) -> U31(and(isNat(N),n__isNatKind(N)),N) r16: plus(N,s(M)) -> U41(and(and(isNat(M),n__isNatKind(M)),n__and(isNat(N),n__isNatKind(N))),M,N) r17: |0|() -> n__0() r18: plus(X1,X2) -> n__plus(X1,X2) r19: isNatKind(X) -> n__isNatKind(X) r20: s(X) -> n__s(X) r21: and(X1,X2) -> n__and(X1,X2) r22: activate(n__0()) -> |0|() r23: activate(n__plus(X1,X2)) -> plus(X1,X2) r24: activate(n__isNatKind(X)) -> isNatKind(X) r25: activate(n__s(X)) -> s(X) r26: activate(n__and(X1,X2)) -> and(X1,X2) r27: activate(X) -> X The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p6, p7, p9, p10, p11, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p40, p41, p43} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: U11#(tt(),V1,V2) -> U12#(isNat(activate(V1)),activate(V2)) p2: U12#(tt(),V2) -> activate#(V2) p3: activate#(n__and(X1,X2)) -> and#(X1,X2) p4: and#(tt(),X) -> activate#(X) p5: activate#(n__isNatKind(X)) -> isNatKind#(X) p6: isNatKind#(n__s(V1)) -> activate#(V1) p7: activate#(n__plus(X1,X2)) -> plus#(X1,X2) p8: plus#(N,s(M)) -> isNat#(N) p9: isNat#(n__s(V1)) -> activate#(V1) p10: isNat#(n__s(V1)) -> isNatKind#(activate(V1)) p11: isNatKind#(n__s(V1)) -> isNatKind#(activate(V1)) p12: isNatKind#(n__plus(V1,V2)) -> activate#(V2) p13: isNatKind#(n__plus(V1,V2)) -> activate#(V1) p14: isNatKind#(n__plus(V1,V2)) -> isNatKind#(activate(V1)) p15: isNatKind#(n__plus(V1,V2)) -> and#(isNatKind(activate(V1)),n__isNatKind(activate(V2))) p16: isNat#(n__s(V1)) -> U21#(isNatKind(activate(V1)),activate(V1)) p17: U21#(tt(),V1) -> activate#(V1) p18: U21#(tt(),V1) -> isNat#(activate(V1)) p19: isNat#(n__plus(V1,V2)) -> activate#(V2) p20: isNat#(n__plus(V1,V2)) -> activate#(V1) p21: isNat#(n__plus(V1,V2)) -> isNatKind#(activate(V1)) p22: isNat#(n__plus(V1,V2)) -> and#(isNatKind(activate(V1)),n__isNatKind(activate(V2))) p23: isNat#(n__plus(V1,V2)) -> U11#(and(isNatKind(activate(V1)),n__isNatKind(activate(V2))),activate(V1),activate(V2)) p24: U11#(tt(),V1,V2) -> activate#(V2) p25: U11#(tt(),V1,V2) -> activate#(V1) p26: U11#(tt(),V1,V2) -> isNat#(activate(V1)) p27: plus#(N,s(M)) -> isNat#(M) p28: plus#(N,s(M)) -> and#(isNat(M),n__isNatKind(M)) p29: plus#(N,s(M)) -> and#(and(isNat(M),n__isNatKind(M)),n__and(isNat(N),n__isNatKind(N))) p30: plus#(N,s(M)) -> U41#(and(and(isNat(M),n__isNatKind(M)),n__and(isNat(N),n__isNatKind(N))),M,N) p31: U41#(tt(),M,N) -> activate#(M) p32: U41#(tt(),M,N) -> activate#(N) p33: U41#(tt(),M,N) -> plus#(activate(N),activate(M)) p34: plus#(N,|0|()) -> isNat#(N) p35: plus#(N,|0|()) -> and#(isNat(N),n__isNatKind(N)) p36: plus#(N,|0|()) -> U31#(and(isNat(N),n__isNatKind(N)),N) p37: U31#(tt(),N) -> activate#(N) p38: U12#(tt(),V2) -> isNat#(activate(V2)) and R consists of: r1: U11(tt(),V1,V2) -> U12(isNat(activate(V1)),activate(V2)) r2: U12(tt(),V2) -> U13(isNat(activate(V2))) r3: U13(tt()) -> tt() r4: U21(tt(),V1) -> U22(isNat(activate(V1))) r5: U22(tt()) -> tt() r6: U31(tt(),N) -> activate(N) r7: U41(tt(),M,N) -> s(plus(activate(N),activate(M))) r8: and(tt(),X) -> activate(X) r9: isNat(n__0()) -> tt() r10: isNat(n__plus(V1,V2)) -> U11(and(isNatKind(activate(V1)),n__isNatKind(activate(V2))),activate(V1),activate(V2)) r11: isNat(n__s(V1)) -> U21(isNatKind(activate(V1)),activate(V1)) r12: isNatKind(n__0()) -> tt() r13: isNatKind(n__plus(V1,V2)) -> and(isNatKind(activate(V1)),n__isNatKind(activate(V2))) r14: isNatKind(n__s(V1)) -> isNatKind(activate(V1)) r15: plus(N,|0|()) -> U31(and(isNat(N),n__isNatKind(N)),N) r16: plus(N,s(M)) -> U41(and(and(isNat(M),n__isNatKind(M)),n__and(isNat(N),n__isNatKind(N))),M,N) r17: |0|() -> n__0() r18: plus(X1,X2) -> n__plus(X1,X2) r19: isNatKind(X) -> n__isNatKind(X) r20: s(X) -> n__s(X) r21: and(X1,X2) -> n__and(X1,X2) r22: activate(n__0()) -> |0|() r23: activate(n__plus(X1,X2)) -> plus(X1,X2) r24: activate(n__isNatKind(X)) -> isNatKind(X) r25: activate(n__s(X)) -> s(X) r26: activate(n__and(X1,X2)) -> and(X1,X2) r27: activate(X) -> X The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27 Take the reduction pair: matrix interpretations: carrier: N^4 order: lexicographic order interpretations: U11#_A(x1,x2,x3) = ((0,0,0,0),(1,0,0,0),(1,0,0,0),(0,0,0,0)) x2 + ((0,0,0,0),(1,0,0,0),(0,0,0,0),(0,0,0,0)) x3 + (0,19,53,44) tt_A() = (1,10,20,0) U12#_A(x1,x2) = ((0,0,0,0),(1,0,0,0),(0,1,0,0),(1,0,0,0)) x1 + ((0,0,0,0),(1,0,0,0),(0,1,0,0),(0,1,1,0)) x2 + (0,0,30,33) isNat_A(x1) = ((1,0,0,0),(1,1,0,0),(0,0,0,0),(1,0,0,0)) x1 + (3,10,19,0) activate_A(x1) = ((1,0,0,0),(0,1,0,0),(0,1,0,0),(1,1,1,0)) x1 + (0,7,2,4) activate#_A(x1) = ((0,0,0,0),(1,0,0,0),(1,1,0,0),(0,1,1,0)) x1 + (0,0,9,11) n__and_A(x1,x2) = ((0,0,0,0),(0,0,0,0),(0,0,0,0),(1,0,0,0)) x1 + ((1,0,0,0),(0,0,0,0),(1,0,0,0),(1,1,0,0)) x2 + (16,2,1,1) and#_A(x1,x2) = ((0,0,0,0),(1,0,0,0),(0,0,0,0),(0,0,0,0)) x2 + (0,1,8,10) n__isNatKind_A(x1) = ((1,0,0,0),(0,0,0,0),(1,1,0,0),(0,0,0,0)) x1 + (1,3,1,1) isNatKind#_A(x1) = ((0,0,0,0),(1,0,0,0),(0,1,0,0),(0,1,1,0)) x1 + (0,0,27,0) n__s_A(x1) = ((1,0,0,0),(0,0,0,0),(0,1,0,0),(1,1,1,0)) x1 + (1,5,5,1) n__plus_A(x1,x2) = ((1,0,0,0),(0,0,0,0),(0,0,0,0),(1,0,0,0)) x1 + ((1,0,0,0),(0,0,0,0),(0,1,0,0),(1,1,1,0)) x2 + (19,6,6,1) plus#_A(x1,x2) = ((0,0,0,0),(1,0,0,0),(1,0,0,0),(0,0,0,0)) x1 + ((0,0,0,0),(1,0,0,0),(0,0,0,0),(1,0,0,0)) x2 + (0,18,33,24) s_A(x1) = ((1,0,0,0),(0,0,0,0),(0,1,0,0),(0,1,1,0)) x1 + (1,6,6,0) isNat#_A(x1) = ((0,0,0,0),(1,0,0,0),(1,0,0,0),(1,0,0,0)) x1 + (0,0,34,25) isNatKind_A(x1) = ((1,0,0,0),(0,0,0,0),(0,0,0,0),(1,0,0,0)) x1 + (1,9,1,2) U21#_A(x1,x2) = ((0,0,0,0),(0,0,0,0),(0,0,0,0),(1,0,0,0)) x1 + ((0,0,0,0),(1,0,0,0),(0,0,0,0),(0,0,0,0)) x2 + (0,1,0,26) and_A(x1,x2) = ((0,0,0,0),(0,0,0,0),(0,0,0,0),(1,0,0,0)) x1 + ((1,0,0,0),(0,0,0,0),(1,0,0,0),(0,1,0,0)) x2 + (16,8,0,2) U41#_A(x1,x2,x3) = ((0,0,0,0),(0,0,0,0),(1,0,0,0),(0,1,0,0)) x1 + ((0,0,0,0),(1,0,0,0),(0,0,0,0),(0,0,0,0)) x2 + ((0,0,0,0),(1,0,0,0),(0,0,0,0),(0,0,0,0)) x3 + (0,19,0,16) |0|_A() = (1,0,1,1) U31#_A(x1,x2) = ((0,0,0,0),(0,0,0,0),(1,0,0,0),(1,0,0,0)) x1 + ((0,0,0,0),(1,0,0,0),(1,1,0,0),(1,1,1,0)) x2 + (0,1,16,9) U13_A(x1) = ((0,0,0,0),(1,0,0,0),(0,0,0,0),(0,0,0,0)) x1 + (2,10,21,1) U12_A(x1,x2) = ((0,0,0,0),(0,0,0,0),(1,0,0,0),(0,1,0,0)) x2 + (3,37,22,2) U22_A(x1) = ((0,0,0,0),(1,0,0,0),(0,1,0,0),(0,0,0,0)) x1 + (2,9,15,1) U31_A(x1,x2) = ((0,0,0,0),(1,0,0,0),(1,0,0,0),(0,0,0,0)) x1 + ((1,0,0,0),(1,1,0,0),(0,1,1,0),(0,0,1,1)) x2 + (1,5,0,0) U41_A(x1,x2,x3) = ((1,0,0,0),(0,0,0,0),(1,1,0,0),(0,0,0,0)) x2 + ((1,0,0,0),(0,0,0,0),(1,1,0,0),(0,0,0,0)) x3 + (20,7,0,0) plus_A(x1,x2) = ((1,0,0,0),(0,0,0,0),(0,0,0,0),(1,1,0,0)) x1 + ((1,0,0,0),(0,0,0,0),(1,0,0,0),(1,0,0,0)) x2 + (19,8,7,36) U11_A(x1,x2,x3) = ((0,0,0,0),(0,0,0,0),(1,0,0,0),(0,0,0,0)) x1 + ((0,0,0,0),(0,0,0,0),(1,0,0,0),(0,1,0,0)) x2 + (4,36,22,0) U21_A(x1,x2) = ((1,0,0,0),(1,1,0,0),(1,1,1,0),(1,0,0,1)) x1 + ((0,0,0,0),(1,0,0,0),(0,1,0,0),(0,0,0,0)) x2 + (2,7,0,1) n__0_A() = (1,0,0,0) The next rules are strictly ordered: p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: isNat#(n__plus(V1,V2)) -> U11#(and(isNatKind(activate(V1)),n__isNatKind(activate(V2))),activate(V1),activate(V2)) and R consists of: r1: U11(tt(),V1,V2) -> U12(isNat(activate(V1)),activate(V2)) r2: U12(tt(),V2) -> U13(isNat(activate(V2))) r3: U13(tt()) -> tt() r4: U21(tt(),V1) -> U22(isNat(activate(V1))) r5: U22(tt()) -> tt() r6: U31(tt(),N) -> activate(N) r7: U41(tt(),M,N) -> s(plus(activate(N),activate(M))) r8: and(tt(),X) -> activate(X) r9: isNat(n__0()) -> tt() r10: isNat(n__plus(V1,V2)) -> U11(and(isNatKind(activate(V1)),n__isNatKind(activate(V2))),activate(V1),activate(V2)) r11: isNat(n__s(V1)) -> U21(isNatKind(activate(V1)),activate(V1)) r12: isNatKind(n__0()) -> tt() r13: isNatKind(n__plus(V1,V2)) -> and(isNatKind(activate(V1)),n__isNatKind(activate(V2))) r14: isNatKind(n__s(V1)) -> isNatKind(activate(V1)) r15: plus(N,|0|()) -> U31(and(isNat(N),n__isNatKind(N)),N) r16: plus(N,s(M)) -> U41(and(and(isNat(M),n__isNatKind(M)),n__and(isNat(N),n__isNatKind(N))),M,N) r17: |0|() -> n__0() r18: plus(X1,X2) -> n__plus(X1,X2) r19: isNatKind(X) -> n__isNatKind(X) r20: s(X) -> n__s(X) r21: and(X1,X2) -> n__and(X1,X2) r22: activate(n__0()) -> |0|() r23: activate(n__plus(X1,X2)) -> plus(X1,X2) r24: activate(n__isNatKind(X)) -> isNatKind(X) r25: activate(n__s(X)) -> s(X) r26: activate(n__and(X1,X2)) -> and(X1,X2) r27: activate(X) -> X The estimated dependency graph contains the following SCCs: (no SCCs)