YES TRS: filter(cons(X,Y),0(),M) -> cons(0(),n__filter(activate(Y),M,M)) filter(cons(X,Y),s(N),M) -> cons(X,n__filter(activate(Y),N,M)) sieve(cons(0(),Y)) -> cons(0(),n__sieve(activate(Y))) sieve(cons(s(N),Y)) -> cons(s(N),n__sieve(filter(activate(Y),N,N))) nats(N) -> cons(N,n__nats(s(N))) zprimes() -> sieve(nats(s(s(0())))) filter(X1,X2,X3) -> n__filter(X1,X2,X3) sieve(X) -> n__sieve(X) nats(X) -> n__nats(X) activate(n__filter(X1,X2,X3)) -> filter(X1,X2,X3) activate(n__sieve(X)) -> sieve(X) activate(n__nats(X)) -> nats(X) activate(X) -> X linear polynomial interpretations on N: filter_A(x1,x2,x3) = x1 filter#_A(x1,x2,x3) = x1 + 2 cons_A(x1,x2) = x2 cons#_A(x1,x2) = 1 0_A = 1 0#_A = 0 n__filter_A(x1,x2,x3) = x1 n__filter#_A(x1,x2,x3) = 0 activate_A(x1) = x1 activate#_A(x1) = x1 + 2 s_A(x1) = 1 s#_A(x1) = 0 sieve_A(x1) = x1 + 2 sieve#_A(x1) = x1 + 3 n__sieve_A(x1) = x1 + 2 n__sieve#_A(x1) = x1 nats_A(x1) = 1 nats#_A(x1) = 2 n__nats_A(x1) = 1 n__nats#_A(x1) = 0 zprimes_A = 3 zprimes#_A = 5 precedence: n__sieve = zprimes > sieve > filter = activate = n__nats > nats > s > cons = n__filter > 0