YES We show the termination of R/S, where R is app(nil,k) -> k app(l,nil) -> l app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil)) -> cons(x,nil) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(0,y) -> y plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0,x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) pred(cons(s(x),nil)) -> cons(x,nil) and S is: cons(x,cons(y,l)) -> cons(y,cons(x,l)) Since R almost dominates S and S is non-duplicating, it is enough to show finiteness of (P, Q). Here P consists of the dependency pairs app#(cons(x,l),k) -> app#(l,k) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(cons(x,cons(y,l))) -> plus#(x,y) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) sum#(app(l,cons(x,cons(y,k)))) -> app#(l,sum(cons(x,cons(y,k)))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) plus#(s(x),y) -> plus#(x,y) sum#(plus(cons(0,x),cons(y,l))) -> pred#(sum(cons(s(x),cons(y,l)))) sum#(plus(cons(0,x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) and Q consists of the rules: app(nil,k) -> k app(l,nil) -> l app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil)) -> cons(x,nil) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(0,y) -> y plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0,x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) pred(cons(s(x),nil)) -> cons(x,nil) cons(x,cons(y,l)) -> cons(y,cons(x,l)) The weakly monotone algebra (N^3, >_lex) with app#_A((x1,y1,z1),(x2,y2,z2)) = (x1 + x2, y1 + y2 + 2, z1) cons_A((x1,y1,z1),(x2,y2,z2)) = (x1 + x2 + 2, y1 + y2 + 2, z2 + 2) sum#_A((x1,y1,z1)) = (x1, y1, z1) plus_A((x1,y1,z1),(x2,y2,z2)) = (x1 + x2 + 1, 3, 5) plus#_A((x1,y1,z1),(x2,y2,z2)) = (x1 + x2, y1 + y2 + 5, z1 + z2) app_A((x1,y1,z1),(x2,y2,z2)) = (x1 + x2 + 1, y1 + y2 + 1, z1 + z2 + 1) sum_A((x1,y1,z1)) = (x1, y1, 3) s_A((x1,y1,z1)) = (x1 + 1, y1, z1) 0_A = (1, 1, 1) pred#_A((x1,y1,z1)) = (x1, 0, 6) nil_A = (1, 1, 1) pred_A((x1,y1,z1)) = (x1, y1 + 1, z1 + 1) strictly orients the following dependency pairs: app#(cons(x,l),k) -> app#(l,k) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(cons(x,cons(y,l))) -> plus#(x,y) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) sum#(app(l,cons(x,cons(y,k)))) -> app#(l,sum(cons(x,cons(y,k)))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) plus#(s(x),y) -> plus#(x,y) sum#(plus(cons(0,x),cons(y,l))) -> pred#(sum(cons(s(x),cons(y,l)))) sum#(plus(cons(0,x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) We remove them from the set of dependency pairs. No dependency pair remains.