YES We show the termination of the TRS R: a__U11(tt(),N) -> mark(N) a__U21(tt(),M,N) -> s(a__plus(mark(N),mark(M))) a__and(tt(),X) -> mark(X) a__isNat(|0|()) -> tt() a__isNat(plus(V1,V2)) -> a__and(a__isNat(V1),isNat(V2)) a__isNat(s(V1)) -> a__isNat(V1) a__plus(N,|0|()) -> a__U11(a__isNat(N),N) a__plus(N,s(M)) -> a__U21(a__and(a__isNat(M),isNat(N)),M,N) mark(U11(X1,X2)) -> a__U11(mark(X1),X2) mark(U21(X1,X2,X3)) -> a__U21(mark(X1),X2,X3) mark(plus(X1,X2)) -> a__plus(mark(X1),mark(X2)) mark(and(X1,X2)) -> a__and(mark(X1),X2) mark(isNat(X)) -> a__isNat(X) mark(tt()) -> tt() mark(s(X)) -> s(mark(X)) mark(|0|()) -> |0|() a__U11(X1,X2) -> U11(X1,X2) a__U21(X1,X2,X3) -> U21(X1,X2,X3) a__plus(X1,X2) -> plus(X1,X2) a__and(X1,X2) -> and(X1,X2) a__isNat(X) -> isNat(X) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),N) -> mark#(N) p2: a__U21#(tt(),M,N) -> a__plus#(mark(N),mark(M)) p3: a__U21#(tt(),M,N) -> mark#(N) p4: a__U21#(tt(),M,N) -> mark#(M) p5: a__and#(tt(),X) -> mark#(X) p6: a__isNat#(plus(V1,V2)) -> a__and#(a__isNat(V1),isNat(V2)) p7: a__isNat#(plus(V1,V2)) -> a__isNat#(V1) p8: a__isNat#(s(V1)) -> a__isNat#(V1) p9: a__plus#(N,|0|()) -> a__U11#(a__isNat(N),N) p10: a__plus#(N,|0|()) -> a__isNat#(N) p11: a__plus#(N,s(M)) -> a__U21#(a__and(a__isNat(M),isNat(N)),M,N) p12: a__plus#(N,s(M)) -> a__and#(a__isNat(M),isNat(N)) p13: a__plus#(N,s(M)) -> a__isNat#(M) p14: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) p15: mark#(U11(X1,X2)) -> mark#(X1) p16: mark#(U21(X1,X2,X3)) -> a__U21#(mark(X1),X2,X3) p17: mark#(U21(X1,X2,X3)) -> mark#(X1) p18: mark#(plus(X1,X2)) -> a__plus#(mark(X1),mark(X2)) p19: mark#(plus(X1,X2)) -> mark#(X1) p20: mark#(plus(X1,X2)) -> mark#(X2) p21: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p22: mark#(and(X1,X2)) -> mark#(X1) p23: mark#(isNat(X)) -> a__isNat#(X) p24: mark#(s(X)) -> mark#(X) and R consists of: r1: a__U11(tt(),N) -> mark(N) r2: a__U21(tt(),M,N) -> s(a__plus(mark(N),mark(M))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(plus(V1,V2)) -> a__and(a__isNat(V1),isNat(V2)) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__plus(N,|0|()) -> a__U11(a__isNat(N),N) r8: a__plus(N,s(M)) -> a__U21(a__and(a__isNat(M),isNat(N)),M,N) r9: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r10: mark(U21(X1,X2,X3)) -> a__U21(mark(X1),X2,X3) r11: mark(plus(X1,X2)) -> a__plus(mark(X1),mark(X2)) r12: mark(and(X1,X2)) -> a__and(mark(X1),X2) r13: mark(isNat(X)) -> a__isNat(X) r14: mark(tt()) -> tt() r15: mark(s(X)) -> s(mark(X)) r16: mark(|0|()) -> |0|() r17: a__U11(X1,X2) -> U11(X1,X2) r18: a__U21(X1,X2,X3) -> U21(X1,X2,X3) r19: a__plus(X1,X2) -> plus(X1,X2) r20: a__and(X1,X2) -> and(X1,X2) r21: a__isNat(X) -> isNat(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),N) -> mark#(N) p2: mark#(s(X)) -> mark#(X) p3: mark#(isNat(X)) -> a__isNat#(X) p4: a__isNat#(s(V1)) -> a__isNat#(V1) p5: a__isNat#(plus(V1,V2)) -> a__isNat#(V1) p6: a__isNat#(plus(V1,V2)) -> a__and#(a__isNat(V1),isNat(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(and(X1,X2)) -> mark#(X1) p9: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p10: mark#(plus(X1,X2)) -> mark#(X2) p11: mark#(plus(X1,X2)) -> mark#(X1) p12: mark#(plus(X1,X2)) -> a__plus#(mark(X1),mark(X2)) p13: a__plus#(N,s(M)) -> a__isNat#(M) p14: a__plus#(N,s(M)) -> a__and#(a__isNat(M),isNat(N)) p15: a__plus#(N,s(M)) -> a__U21#(a__and(a__isNat(M),isNat(N)),M,N) p16: a__U21#(tt(),M,N) -> mark#(M) p17: mark#(U21(X1,X2,X3)) -> mark#(X1) p18: mark#(U21(X1,X2,X3)) -> a__U21#(mark(X1),X2,X3) p19: a__U21#(tt(),M,N) -> mark#(N) p20: mark#(U11(X1,X2)) -> mark#(X1) p21: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) p22: a__U21#(tt(),M,N) -> a__plus#(mark(N),mark(M)) p23: a__plus#(N,|0|()) -> a__isNat#(N) p24: a__plus#(N,|0|()) -> a__U11#(a__isNat(N),N) and R consists of: r1: a__U11(tt(),N) -> mark(N) r2: a__U21(tt(),M,N) -> s(a__plus(mark(N),mark(M))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(plus(V1,V2)) -> a__and(a__isNat(V1),isNat(V2)) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__plus(N,|0|()) -> a__U11(a__isNat(N),N) r8: a__plus(N,s(M)) -> a__U21(a__and(a__isNat(M),isNat(N)),M,N) r9: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r10: mark(U21(X1,X2,X3)) -> a__U21(mark(X1),X2,X3) r11: mark(plus(X1,X2)) -> a__plus(mark(X1),mark(X2)) r12: mark(and(X1,X2)) -> a__and(mark(X1),X2) r13: mark(isNat(X)) -> a__isNat(X) r14: mark(tt()) -> tt() r15: mark(s(X)) -> s(mark(X)) r16: mark(|0|()) -> |0|() r17: a__U11(X1,X2) -> U11(X1,X2) r18: a__U21(X1,X2,X3) -> U21(X1,X2,X3) r19: a__plus(X1,X2) -> plus(X1,X2) r20: a__and(X1,X2) -> and(X1,X2) r21: a__isNat(X) -> isNat(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 Take the reduction pair: matrix interpretations: carrier: N^4 order: lexicographic order interpretations: a__U11#_A(x1,x2) = ((1,0,0,0),(0,1,0,0),(0,0,1,0),(0,1,0,0)) x1 + ((1,0,0,0),(1,1,0,0),(1,1,1,0),(0,0,0,0)) x2 + (0,0,41,9) tt_A() = (0,3,5,0) mark#_A(x1) = ((1,0,0,0),(1,1,0,0),(1,1,1,0),(0,0,0,0)) x1 + (0,2,0,18) s_A(x1) = x1 + (12,1,8,15) isNat_A(x1) = ((0,0,0,0),(1,0,0,0),(1,1,0,0),(0,0,0,0)) x1 + (0,1,1,0) a__isNat#_A(x1) = ((0,0,0,0),(1,0,0,0),(1,1,0,0),(1,0,0,0)) x1 + (0,2,38,9) plus_A(x1,x2) = ((1,0,0,0),(1,0,0,0),(0,0,0,0),(1,1,0,0)) x1 + ((1,0,0,0),(1,1,0,0),(1,0,0,0),(1,1,0,0)) x2 + (13,2,14,1) a__and#_A(x1,x2) = ((1,0,0,0),(1,1,0,0),(1,1,1,0),(0,1,0,0)) x2 + (0,12,1,19) a__isNat_A(x1) = ((0,0,0,0),(1,0,0,0),(0,1,0,0),(0,1,0,0)) x1 + (0,2,2,2) and_A(x1,x2) = ((1,0,0,0),(0,1,0,0),(0,1,1,0),(0,0,0,0)) x1 + ((1,0,0,0),(1,1,0,0),(1,1,1,0),(0,0,0,1)) x2 + (0,11,1,1) mark_A(x1) = ((1,0,0,0),(0,1,0,0),(0,1,1,0),(0,0,1,1)) x1 + (0,9,1,2) a__plus#_A(x1,x2) = ((1,0,0,0),(1,1,0,0),(0,0,0,0),(0,1,0,0)) x1 + ((1,0,0,0),(0,1,0,0),(1,0,0,0),(1,1,1,0)) x2 + (0,0,30,0) a__U21#_A(x1,x2,x3) = ((1,0,0,0),(0,0,0,0),(0,1,0,0),(0,0,0,0)) x1 + ((1,0,0,0),(1,1,0,0),(1,1,0,0),(0,0,0,0)) x2 + ((1,0,0,0),(1,1,0,0),(1,1,1,0),(0,0,0,0)) x3 + (0,19,26,18) a__and_A(x1,x2) = ((1,0,0,0),(0,1,0,0),(0,1,1,0),(0,0,0,0)) x1 + ((1,0,0,0),(1,1,0,0),(1,1,1,0),(0,1,1,1)) x2 + (0,11,2,2) U21_A(x1,x2,x3) = ((1,0,0,0),(0,1,0,0),(1,0,0,0),(0,0,0,0)) x1 + ((1,0,0,0),(0,0,0,0),(1,0,0,0),(0,0,0,0)) x2 + ((1,0,0,0),(0,0,0,0),(0,0,0,0),(0,1,0,0)) x3 + (25,1,9,14) U11_A(x1,x2) = ((1,0,0,0),(0,0,0,0),(1,0,0,0),(1,0,0,0)) x1 + x2 + (19,2,21,1) |0|_A() = (7,2,1,1) a__U11_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,1,0,0),(0,0,1,0),(1,1,1,1)) x2 + (19,10,22,25) a__U21_A(x1,x2,x3) = ((1,0,0,0),(0,1,0,0),(1,0,0,0),(0,0,0,0)) x1 + ((1,0,0,0),(0,0,0,0),(1,0,0,0),(0,0,0,0)) x2 + ((1,0,0,0),(0,0,0,0),(0,0,0,0),(0,1,0,0)) x3 + (25,1,9,14) a__plus_A(x1,x2) = ((1,0,0,0),(1,0,0,0),(0,0,0,0),(0,1,0,0)) x1 + ((1,0,0,0),(1,1,0,0),(1,0,0,0),(1,1,0,0)) x2 + (13,2,16,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, p23, p24 We remove them from the problem. Then no dependency pair remains.