YES TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) rm(N,nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) purge(nil()) -> nil() purge(add(N,X)) -> add(N,purge(rm(N,X))) linear polynomial interpretations on N: eq_A(x1,x2) = x2 + 1 eq#_A(x1,x2) = x1 + x2 + 1 0_A = 1 0#_A = 1 true_A = 1 true#_A = 0 s_A(x1) = x1 + 1 s#_A(x1) = 3 false_A = 1 false#_A = 2 rm_A(x1,x2) = x2 rm#_A(x1,x2) = x1 + x2 + 1 nil_A = 1 nil#_A = 0 add_A(x1,x2) = x1 + x2 + 3 add#_A(x1,x2) = 2 ifrm_A(x1,x2,x3) = x3 ifrm#_A(x1,x2,x3) = x2 + x3 purge_A(x1) = x1 + 1 purge#_A(x1) = x1 + 3 precedence: ifrm > nil = add > purge > s = rm > eq = 0 > true = false