YES TRS: filter(cons(X),0(),M) -> cons(0()) filter(cons(X),s(N),M) -> cons(X) sieve(cons(0())) -> cons(0()) sieve(cons(s(N))) -> cons(s(N)) nats(N) -> cons(N) zprimes() -> sieve(nats(s(s(0())))) linear polynomial interpretations on N: filter_A(x1,x2,x3) = x1 + x2 + x3 + 1 filter#_A(x1,x2,x3) = x1 + x2 + x3 + 1 cons_A(x1) = x1 + 2 cons#_A(x1) = x1 + 2 0_A = 1 0#_A = 1 s_A(x1) = x1 + 1 s#_A(x1) = x1 + 1 sieve_A(x1) = x1 + 1 sieve#_A(x1) = x1 + 1 nats_A(x1) = x1 + 3 nats#_A(x1) = x1 + 3 zprimes_A = 8 zprimes#_A = 8 precedence: filter = zprimes > sieve > cons > 0 > s > nats