YES
The TRS could be proven terminating. The proof took 886 ms.
Problem 1 was processed with processor DependencyGraph (100ms). | Problem 2 was processed with processor PolynomialLinearRange4 (124ms). | | Problem 3 was processed with processor PolynomialLinearRange4 (106ms). | | | Problem 4 was processed with processor PolynomialLinearRange4 (57ms). | | | | Problem 5 was processed with processor PolynomialLinearRange4 (137ms).
T(nats(x_1)) | → | T(x_1) | T(sieve(Y)) | → | sieve#(Y) | |
T(filter(x_1, x_2, x_3)) | → | T(x_3) | T(filter(x_1, x_2, x_3)) | → | T(x_2) | |
zprimes# | → | nats#(s(s(0))) | zprimes# | → | sieve#(nats(s(s(0)))) | |
T(filter(x_1, x_2, x_3)) | → | T(x_1) | T(nats(s(N))) | → | nats#(s(N)) | |
T(s(x_1)) | → | T(x_1) | T(filter(Y, M, M)) | → | filter#(Y, M, M) | |
T(filter(Y, N, M)) | → | filter#(Y, N, M) | T(sieve(x_1)) | → | T(x_1) | |
T(filter(Y, N, N)) | → | filter#(Y, N, N) | T(sieve(filter(Y, N, N))) | → | sieve#(filter(Y, N, N)) |
filter(cons(X, Y), 0, M) | → | cons(0, filter(Y, M, M)) | filter(cons(X, Y), s(N), M) | → | cons(X, filter(Y, N, M)) | |
sieve(cons(0, Y)) | → | cons(0, sieve(Y)) | sieve(cons(s(N), Y)) | → | cons(s(N), sieve(filter(Y, N, N))) | |
nats(N) | → | cons(N, nats(s(N))) | zprimes | → | sieve(nats(s(s(0)))) |
Termination of terms over the following signature is verified: nats, 0, s, sieve, zprimes, filter, cons
Context-sensitive strategy:
μ(T) = μ(0) = μ(zprimes#) = μ(zprimes) = ∅
μ(nats) = μ(sieve) = μ(s) = μ(sieve#) = μ(nats#) = μ(cons) = {1}
μ(filter#) = μ(filter) = {1, 2, 3}
T(nats(x_1)) → T(x_1) | T(filter(x_1, x_2, x_3)) → T(x_1) |
T(filter(x_1, x_2, x_3)) → T(x_3) | T(s(x_1)) → T(x_1) |
T(sieve(x_1)) → T(x_1) | T(filter(x_1, x_2, x_3)) → T(x_2) |
T(nats(x_1)) | → | T(x_1) | T(filter(x_1, x_2, x_3)) | → | T(x_1) | |
T(filter(x_1, x_2, x_3)) | → | T(x_3) | T(s(x_1)) | → | T(x_1) | |
T(sieve(x_1)) | → | T(x_1) | T(filter(x_1, x_2, x_3)) | → | T(x_2) |
filter(cons(X, Y), 0, M) | → | cons(0, filter(Y, M, M)) | filter(cons(X, Y), s(N), M) | → | cons(X, filter(Y, N, M)) | |
sieve(cons(0, Y)) | → | cons(0, sieve(Y)) | sieve(cons(s(N), Y)) | → | cons(s(N), sieve(filter(Y, N, N))) | |
nats(N) | → | cons(N, nats(s(N))) | zprimes | → | sieve(nats(s(s(0)))) |
Termination of terms over the following signature is verified: nats, 0, s, sieve, zprimes, filter, cons
Context-sensitive strategy:
μ(T) = μ(0) = μ(zprimes#) = μ(zprimes) = ∅
μ(nats) = μ(s) = μ(sieve) = μ(sieve#) = μ(nats#) = μ(cons) = {1}
μ(filter#) = μ(filter) = {1, 2, 3}
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
T(nats(x_1)) | → | T(x_1) |
T(filter(x_1, x_2, x_3)) | → | T(x_3) | T(filter(x_1, x_2, x_3)) | → | T(x_1) | |
T(s(x_1)) | → | T(x_1) | T(sieve(x_1)) | → | T(x_1) | |
T(filter(x_1, x_2, x_3)) | → | T(x_2) |
filter(cons(X, Y), 0, M) | → | cons(0, filter(Y, M, M)) | filter(cons(X, Y), s(N), M) | → | cons(X, filter(Y, N, M)) | |
sieve(cons(0, Y)) | → | cons(0, sieve(Y)) | sieve(cons(s(N), Y)) | → | cons(s(N), sieve(filter(Y, N, N))) | |
nats(N) | → | cons(N, nats(s(N))) | zprimes | → | sieve(nats(s(s(0)))) |
Termination of terms over the following signature is verified: nats, 0, sieve, s, zprimes, filter, cons
Context-sensitive strategy:
μ(T) = μ(0) = μ(zprimes#) = μ(zprimes) = ∅
μ(nats) = μ(sieve) = μ(s) = μ(sieve#) = μ(nats#) = μ(cons) = {1}
μ(filter#) = μ(filter) = {1, 2, 3}
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
T(s(x_1)) | → | T(x_1) |
T(filter(x_1, x_2, x_3)) | → | T(x_1) | T(filter(x_1, x_2, x_3)) | → | T(x_3) | |
T(sieve(x_1)) | → | T(x_1) | T(filter(x_1, x_2, x_3)) | → | T(x_2) |
filter(cons(X, Y), 0, M) | → | cons(0, filter(Y, M, M)) | filter(cons(X, Y), s(N), M) | → | cons(X, filter(Y, N, M)) | |
sieve(cons(0, Y)) | → | cons(0, sieve(Y)) | sieve(cons(s(N), Y)) | → | cons(s(N), sieve(filter(Y, N, N))) | |
nats(N) | → | cons(N, nats(s(N))) | zprimes | → | sieve(nats(s(s(0)))) |
Termination of terms over the following signature is verified: nats, 0, s, sieve, zprimes, filter, cons
Context-sensitive strategy:
μ(T) = μ(0) = μ(zprimes#) = μ(zprimes) = ∅
μ(nats) = μ(s) = μ(sieve) = μ(sieve#) = μ(nats#) = μ(cons) = {1}
μ(filter#) = μ(filter) = {1, 2, 3}
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
T(filter(x_1, x_2, x_3)) | → | T(x_3) | T(filter(x_1, x_2, x_3)) | → | T(x_1) | |
T(filter(x_1, x_2, x_3)) | → | T(x_2) |
T(sieve(x_1)) | → | T(x_1) |
filter(cons(X, Y), 0, M) | → | cons(0, filter(Y, M, M)) | filter(cons(X, Y), s(N), M) | → | cons(X, filter(Y, N, M)) | |
sieve(cons(0, Y)) | → | cons(0, sieve(Y)) | sieve(cons(s(N), Y)) | → | cons(s(N), sieve(filter(Y, N, N))) | |
nats(N) | → | cons(N, nats(s(N))) | zprimes | → | sieve(nats(s(s(0)))) |
Termination of terms over the following signature is verified: nats, 0, sieve, s, zprimes, filter, cons
Context-sensitive strategy:
μ(T) = μ(0) = μ(zprimes#) = μ(zprimes) = ∅
μ(nats) = μ(sieve) = μ(s) = μ(sieve#) = μ(nats#) = μ(cons) = {1}
μ(filter#) = μ(filter) = {1, 2, 3}
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
T(sieve(x_1)) | → | T(x_1) |