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())))) max/plus interpretations on N: filter_A(x1,x2,x3) = max{0, -8 + x1, 6 + x2, 0} filter#_A(x1,x2,x3) = max{15, x1, 11 + x2, -1} cons_A(x1) = max{1, 8} cons#_A(x1) = max{14, 9} 0_A = 2 0#_A = 0 s_A(x1) = max{2, -1} s#_A(x1) = max{14, 7} sieve_A(x1) = max{7, 8} sieve#_A(x1) = max{10, 7 + x1} nats_A(x1) = max{8, -3 + x1} nats#_A(x1) = max{15, 13 + x1} zprimes_A = 8 zprimes#_A = 16 precedence: zprimes > filter = nats > cons > s > sieve > 0