YES We show the termination of the TRS R: a__incr(nil()) -> nil() a__incr(cons(X,L)) -> cons(s(mark(X)),incr(L)) a__adx(nil()) -> nil() a__adx(cons(X,L)) -> a__incr(cons(mark(X),adx(L))) a__nats() -> a__adx(a__zeros()) a__zeros() -> cons(|0|(),zeros()) a__head(cons(X,L)) -> mark(X) a__tail(cons(X,L)) -> mark(L) mark(incr(X)) -> a__incr(mark(X)) mark(adx(X)) -> a__adx(mark(X)) mark(nats()) -> a__nats() mark(zeros()) -> a__zeros() mark(head(X)) -> a__head(mark(X)) mark(tail(X)) -> a__tail(mark(X)) mark(nil()) -> nil() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) mark(|0|()) -> |0|() a__incr(X) -> incr(X) a__adx(X) -> adx(X) a__nats() -> nats() a__zeros() -> zeros() a__head(X) -> head(X) a__tail(X) -> tail(X) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__incr#(cons(X,L)) -> mark#(X) p2: a__adx#(cons(X,L)) -> a__incr#(cons(mark(X),adx(L))) p3: a__adx#(cons(X,L)) -> mark#(X) p4: a__nats#() -> a__adx#(a__zeros()) p5: a__nats#() -> a__zeros#() p6: a__head#(cons(X,L)) -> mark#(X) p7: a__tail#(cons(X,L)) -> mark#(L) p8: mark#(incr(X)) -> a__incr#(mark(X)) p9: mark#(incr(X)) -> mark#(X) p10: mark#(adx(X)) -> a__adx#(mark(X)) p11: mark#(adx(X)) -> mark#(X) p12: mark#(nats()) -> a__nats#() p13: mark#(zeros()) -> a__zeros#() p14: mark#(head(X)) -> a__head#(mark(X)) p15: mark#(head(X)) -> mark#(X) p16: mark#(tail(X)) -> a__tail#(mark(X)) p17: mark#(tail(X)) -> mark#(X) p18: mark#(cons(X1,X2)) -> mark#(X1) p19: mark#(s(X)) -> mark#(X) and R consists of: r1: a__incr(nil()) -> nil() r2: a__incr(cons(X,L)) -> cons(s(mark(X)),incr(L)) r3: a__adx(nil()) -> nil() r4: a__adx(cons(X,L)) -> a__incr(cons(mark(X),adx(L))) r5: a__nats() -> a__adx(a__zeros()) r6: a__zeros() -> cons(|0|(),zeros()) r7: a__head(cons(X,L)) -> mark(X) r8: a__tail(cons(X,L)) -> mark(L) r9: mark(incr(X)) -> a__incr(mark(X)) r10: mark(adx(X)) -> a__adx(mark(X)) r11: mark(nats()) -> a__nats() r12: mark(zeros()) -> a__zeros() r13: mark(head(X)) -> a__head(mark(X)) r14: mark(tail(X)) -> a__tail(mark(X)) r15: mark(nil()) -> nil() r16: mark(cons(X1,X2)) -> cons(mark(X1),X2) r17: mark(s(X)) -> s(mark(X)) r18: mark(|0|()) -> |0|() r19: a__incr(X) -> incr(X) r20: a__adx(X) -> adx(X) r21: a__nats() -> nats() r22: a__zeros() -> zeros() r23: a__head(X) -> head(X) r24: a__tail(X) -> tail(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p6, p7, p8, p9, p10, p11, p12, p14, p15, p16, p17, p18, p19} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__incr#(cons(X,L)) -> mark#(X) p2: mark#(s(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) p4: mark#(tail(X)) -> mark#(X) p5: mark#(tail(X)) -> a__tail#(mark(X)) p6: a__tail#(cons(X,L)) -> mark#(L) p7: mark#(head(X)) -> mark#(X) p8: mark#(head(X)) -> a__head#(mark(X)) p9: a__head#(cons(X,L)) -> mark#(X) p10: mark#(nats()) -> a__nats#() p11: a__nats#() -> a__adx#(a__zeros()) p12: a__adx#(cons(X,L)) -> mark#(X) p13: mark#(adx(X)) -> mark#(X) p14: mark#(adx(X)) -> a__adx#(mark(X)) p15: a__adx#(cons(X,L)) -> a__incr#(cons(mark(X),adx(L))) p16: mark#(incr(X)) -> mark#(X) p17: mark#(incr(X)) -> a__incr#(mark(X)) and R consists of: r1: a__incr(nil()) -> nil() r2: a__incr(cons(X,L)) -> cons(s(mark(X)),incr(L)) r3: a__adx(nil()) -> nil() r4: a__adx(cons(X,L)) -> a__incr(cons(mark(X),adx(L))) r5: a__nats() -> a__adx(a__zeros()) r6: a__zeros() -> cons(|0|(),zeros()) r7: a__head(cons(X,L)) -> mark(X) r8: a__tail(cons(X,L)) -> mark(L) r9: mark(incr(X)) -> a__incr(mark(X)) r10: mark(adx(X)) -> a__adx(mark(X)) r11: mark(nats()) -> a__nats() r12: mark(zeros()) -> a__zeros() r13: mark(head(X)) -> a__head(mark(X)) r14: mark(tail(X)) -> a__tail(mark(X)) r15: mark(nil()) -> nil() r16: mark(cons(X1,X2)) -> cons(mark(X1),X2) r17: mark(s(X)) -> s(mark(X)) r18: mark(|0|()) -> |0|() r19: a__incr(X) -> incr(X) r20: a__adx(X) -> adx(X) r21: a__nats() -> nats() r22: a__zeros() -> zeros() r23: a__head(X) -> head(X) r24: a__tail(X) -> tail(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 Take the reduction pair: lexicographic combination of reduction pairs: 1. matrix interpretations: carrier: N^4 order: lexicographic order interpretations: a__incr#_A(x1) = ((1,0,0,0),(0,1,0,0),(0,1,1,0),(0,1,1,1)) x1 + (0,0,4,0) cons_A(x1,x2) = ((1,0,0,0),(0,1,0,0),(1,0,0,0),(1,0,0,0)) x1 + ((1,0,0,0),(1,0,0,0),(1,1,0,0),(1,1,0,0)) x2 + (0,7,1,1) mark#_A(x1) = ((1,0,0,0),(0,1,0,0),(1,0,1,0),(0,0,1,1)) x1 + (0,6,9,10) s_A(x1) = ((1,0,0,0),(1,1,0,0),(1,0,1,0),(0,0,0,1)) x1 + (0,0,1,1) tail_A(x1) = ((1,0,0,0),(0,1,0,0),(1,1,1,0),(0,0,0,0)) x1 + (5,1,1,0) a__tail#_A(x1) = ((1,0,0,0),(1,0,0,0),(1,1,0,0),(1,1,1,0)) x1 + (1,5,3,5) mark_A(x1) = ((1,0,0,0),(0,1,0,0),(1,1,1,0),(0,0,1,1)) x1 + (0,4,3,7) head_A(x1) = ((1,0,0,0),(0,0,0,0),(0,1,0,0),(1,1,1,0)) x1 + (2,2,0,0) a__head#_A(x1) = ((1,0,0,0),(1,0,0,0),(1,0,0,0),(0,0,0,0)) x1 + (1,5,12,0) nats_A() = (14,18,1,1) a__nats#_A() = (3,15,17,13) a__adx#_A(x1) = ((1,0,0,0),(0,1,0,0),(0,1,1,0),(0,0,1,1)) x1 + (1,6,0,9) a__zeros_A() = (1,8,8,9) adx_A(x1) = ((1,0,0,0),(1,1,0,0),(1,0,1,0),(1,1,0,1)) x1 + (1,11,14,1) incr_A(x1) = ((1,0,0,0),(1,1,0,0),(0,1,1,0),(0,0,0,0)) x1 + (0,4,1,1) a__incr_A(x1) = ((1,0,0,0),(1,1,0,0),(0,1,1,0),(0,0,0,0)) x1 + (0,4,1,4) nil_A() = (1,1,1,1) a__adx_A(x1) = ((1,0,0,0),(1,1,0,0),(1,0,1,0),(1,0,0,1)) x1 + (1,11,25,2) a__nats_A() = (14,21,35,10) a__head_A(x1) = ((1,0,0,0),(0,0,0,0),(0,1,0,0),(0,1,1,0)) x1 + (2,5,4,0) a__tail_A(x1) = ((1,0,0,0),(0,1,0,0),(1,1,1,0),(1,1,1,1)) x1 + (5,1,2,0) |0|_A() = (0,0,0,0) zeros_A() = (1,5,0,1) 2. lexicographic path order with precedence: precedence: adx > incr > cons > mark# > mark > a__nats > a__adx > nats > a__nats# > a__zeros > zeros > a__incr > nil > |0| > a__head > a__tail > head > a__head# > a__adx# > tail > a__incr# > a__tail# > s argument filter: pi(a__incr#) = [1] pi(cons) = [] pi(mark#) = [] pi(s) = 1 pi(tail) = [] pi(a__tail#) = [] pi(mark) = [] pi(head) = [] pi(a__head#) = [] pi(nats) = [] pi(a__nats#) = [] pi(a__adx#) = [1] pi(a__zeros) = [] pi(adx) = [1] pi(incr) = [] pi(a__incr) = [] pi(nil) = [] pi(a__adx) = [] pi(a__nats) = [] pi(a__head) = [] pi(a__tail) = [] pi(|0|) = [] pi(zeros) = [] The next rules are strictly ordered: p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17 We remove them from the problem. Then no dependency pair remains.