YES O(n^4) 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())))) } DUP: We consider a non-duplicating system. 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())))) } Matrix Interpretation: Interpretation class: triangular [3] [2] [zprimes] = [0] [2] [X3] [1 2 0 2][X3] [1] [X2] [0 0 2 2][X2] [2] [nats]([X1]) = [0 0 0 2][X1] + [0] [X0] [0 0 0 0][X0] [1] [X3] [1 0 0 1][X3] [0] [X2] [0 0 0 0][X2] [0] [sieve]([X1]) = [0 0 0 0][X1] + [0] [X0] [0 0 0 0][X0] [1] [X3] [1 0 0 0][X3] [0] [X2] [0 0 0 0][X2] [0] [s]([X1]) = [0 0 0 0][X1] + [0] [X0] [0 0 0 0][X0] [0] [X11] [X7] [X3] [1 0 0 0][X11] [1 0 0 0][X7] [1 0 0 0][X3] [1] [X10] [X6] [X2] [0 0 0 1][X10] [0 0 0 0][X6] [0 0 2 2][X2] [3] [filter]([ X9], [X5], [X1]) = [0 0 0 1][X9] + [0 0 0 0][X5] + [0 0 0 2][X1] + [3] [ X8] [X4] [X0] [0 0 0 1][X8] [0 0 0 0][X4] [0 0 0 0][X0] [0] [0] [0] [0] = [0] [0] [X3] [1 0 0 0][X3] [0] [X2] [0 0 0 0][X2] [0] [cons]([X1]) = [0 0 0 0][X1] + [0] [X0] [0 0 0 0][X0] [1] Qed