Term Rewriting System R: [X, Y, M, N, X1, X2, X3] 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)) filter(X1, X2, X3) -> n__filter(X1, X2, X3) 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))) sieve(X) -> n__sieve(X) nats(N) -> cons(N, n__nats(s(N))) nats(X) -> n__nats(X) zprimes -> sieve(nats(s(s(0)))) 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 Termination of R to be shown. R contains the following Dependency Pairs: ACTIVATE(n__nats(X)) -> NATS(X) ACTIVATE(n__filter(X1, X2, X3)) -> FILTER(X1, X2, X3) ACTIVATE(n__sieve(X)) -> SIEVE(X) ZPRIMES -> SIEVE(nats(s(s(0)))) ZPRIMES -> NATS(s(s(0))) SIEVE(cons(s(N), Y)) -> FILTER(activate(Y), N, N) SIEVE(cons(s(N), Y)) -> ACTIVATE(Y) SIEVE(cons(0, Y)) -> ACTIVATE(Y) FILTER(cons(X, Y), 0, M) -> ACTIVATE(Y) FILTER(cons(X, Y), s(N), M) -> ACTIVATE(Y) Furthermore, R contains one SCC. SCC1: SIEVE(cons(0, Y)) -> ACTIVATE(Y) SIEVE(cons(s(N), Y)) -> ACTIVATE(Y) FILTER(cons(X, Y), s(N), M) -> ACTIVATE(Y) SIEVE(cons(s(N), Y)) -> FILTER(activate(Y), N, N) ACTIVATE(n__sieve(X)) -> SIEVE(X) FILTER(cons(X, Y), 0, M) -> ACTIVATE(Y) ACTIVATE(n__filter(X1, X2, X3)) -> FILTER(X1, X2, X3) By using a polynomial ordering, at least one Dependency Pair of this SCC can be strictly oriented. Additionally, the following rules can be oriented: activate(n__nats(X)) -> nats(X) activate(X) -> X activate(n__filter(X1, X2, X3)) -> filter(X1, X2, X3) activate(n__sieve(X)) -> sieve(X) sieve(cons(s(N), Y)) -> cons(s(N), n__sieve(filter(activate(Y), N, N))) sieve(X) -> n__sieve(X) sieve(cons(0, Y)) -> cons(0, n__sieve(activate(Y))) 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)) filter(X1, X2, X3) -> n__filter(X1, X2, X3) nats(N) -> cons(N, n__nats(s(N))) nats(X) -> n__nats(X) Used ordering: Polynomial ordering with Polynomial interpretation: POL(activate(x_1)) = x_1 POL(s(x_1)) = 0 POL(sieve(x_1)) = 1 + x_1 POL(nats(x_1)) = 0 POL(n__nats(x_1)) = 0 POL(filter(x_1, x_2, x_3)) = x_1 POL(0) = 0 POL(cons(x_1, x_2)) = x_2 POL(n__sieve(x_1)) = 1 + x_1 POL(FILTER(x_1, x_2, x_3)) = x_1 POL(ACTIVATE(x_1)) = x_1 POL(n__filter(x_1, x_2, x_3)) = x_1 POL(SIEVE(x_1)) = 1 + x_1 resulting in one subcycle. SCC1.Polo1: FILTER(cons(X, Y), 0, M) -> ACTIVATE(Y) ACTIVATE(n__filter(X1, X2, X3)) -> FILTER(X1, X2, X3) FILTER(cons(X, Y), s(N), M) -> ACTIVATE(Y) Removing rules from R by ordering and analyzing Dependency Pairs, Usable Rules, and Usable Equations. This is possible by using the following (C_E-compatible) Polynomial ordering. Polynomial interpretation: POL(s(x_1)) = x_1 POL(FILTER(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(ACTIVATE(x_1)) = x_1 POL(n__filter(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(0) = 0 POL(cons(x_1, x_2)) = x_1 + x_2 The following Dependency Pairs can be deleted: FILTER(cons(X, Y), 0, M) -> ACTIVATE(Y) ACTIVATE(n__filter(X1, X2, X3)) -> FILTER(X1, X2, X3) FILTER(cons(X, Y), s(N), M) -> ACTIVATE(Y) This transformation is resulting in no new subcycles. Termination of R successfully shown. Duration: 1.18 seconds.