TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60002 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (2075ms).
| Problem 2 was processed with processor SubtermCriterion (2ms).
| | Problem 8 remains open; application of the following processors failed [DependencyGraph (12ms), PolynomialLinearRange4iUR (24ms), DependencyGraph (8ms), PolynomialLinearRange8NegiUR (5ms), DependencyGraph (7ms)].
| Problem 3 was processed with processor SubtermCriterion (4ms).
| Problem 4 was processed with processor SubtermCriterion (2ms).
| Problem 5 was processed with processor SubtermCriterion (1ms).
| Problem 6 was processed with processor SubtermCriterion (1ms).
| | Problem 9 remains open; application of the following processors failed [DependencyGraph (3ms), PolynomialLinearRange4iUR (0ms), DependencyGraph (2ms), PolynomialLinearRange8NegiUR (21ms), DependencyGraph (3ms)].
| Problem 7 remains open; application of the following processors failed [SubtermCriterion (1ms), DependencyGraph (277ms), PolynomialLinearRange4iUR (3333ms), DependencyGraph (216ms), PolynomialLinearRange8NegiUR (10000ms), DependencyGraph (202ms), ReductionPairSAT (timeout)].
The following open problems remain:
Open Dependency Pair Problem 7
Dependency Pairs
mark#(filter(X1, X2, X3)) | → | mark#(X3) | | mark#(0) | → | active#(0) |
mark#(cons(X1, X2)) | → | active#(cons(mark(X1), X2)) | | mark#(s(X)) | → | active#(s(mark(X))) |
active#(filter(cons(X, Y), 0, M)) | → | mark#(cons(0, filter(Y, M, M))) | | mark#(cons(X1, X2)) | → | mark#(X1) |
active#(sieve(cons(0, Y))) | → | mark#(cons(0, sieve(Y))) | | active#(filter(cons(X, Y), s(N), M)) | → | mark#(cons(X, filter(Y, N, M))) |
active#(sieve(cons(s(N), Y))) | → | mark#(cons(s(N), sieve(filter(Y, N, N)))) | | mark#(nats(X)) | → | active#(nats(mark(X))) |
active#(nats(N)) | → | mark#(cons(N, nats(s(N)))) | | mark#(zprimes) | → | active#(zprimes) |
mark#(filter(X1, X2, X3)) | → | active#(filter(mark(X1), mark(X2), mark(X3))) | | mark#(filter(X1, X2, X3)) | → | mark#(X2) |
mark#(filter(X1, X2, X3)) | → | mark#(X1) | | mark#(nats(X)) | → | mark#(X) |
mark#(s(X)) | → | mark#(X) | | mark#(sieve(X)) | → | active#(sieve(mark(X))) |
active#(zprimes) | → | mark#(sieve(nats(s(s(0))))) | | mark#(sieve(X)) | → | mark#(X) |
Rewrite Rules
active(filter(cons(X, Y), 0, M)) | → | mark(cons(0, filter(Y, M, M))) | | active(filter(cons(X, Y), s(N), M)) | → | mark(cons(X, filter(Y, N, M))) |
active(sieve(cons(0, Y))) | → | mark(cons(0, sieve(Y))) | | active(sieve(cons(s(N), Y))) | → | mark(cons(s(N), sieve(filter(Y, N, N)))) |
active(nats(N)) | → | mark(cons(N, nats(s(N)))) | | active(zprimes) | → | mark(sieve(nats(s(s(0))))) |
mark(filter(X1, X2, X3)) | → | active(filter(mark(X1), mark(X2), mark(X3))) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
mark(sieve(X)) | → | active(sieve(mark(X))) | | mark(nats(X)) | → | active(nats(mark(X))) |
mark(zprimes) | → | active(zprimes) | | filter(mark(X1), X2, X3) | → | filter(X1, X2, X3) |
filter(X1, mark(X2), X3) | → | filter(X1, X2, X3) | | filter(X1, X2, mark(X3)) | → | filter(X1, X2, X3) |
filter(active(X1), X2, X3) | → | filter(X1, X2, X3) | | filter(X1, active(X2), X3) | → | filter(X1, X2, X3) |
filter(X1, X2, active(X3)) | → | filter(X1, X2, X3) | | cons(mark(X1), X2) | → | cons(X1, X2) |
cons(X1, mark(X2)) | → | cons(X1, X2) | | cons(active(X1), X2) | → | cons(X1, X2) |
cons(X1, active(X2)) | → | cons(X1, X2) | | s(mark(X)) | → | s(X) |
s(active(X)) | → | s(X) | | sieve(mark(X)) | → | sieve(X) |
sieve(active(X)) | → | sieve(X) | | nats(mark(X)) | → | nats(X) |
nats(active(X)) | → | nats(X) |
Original Signature
Termination of terms over the following signature is verified: nats, 0, sieve, s, active, mark, zprimes, filter, cons
Open Dependency Pair Problem 8
Dependency Pairs
filter#(X1, X2, active(X3)) | → | filter#(X1, X2, X3) | | filter#(X1, X2, mark(X3)) | → | filter#(X1, X2, X3) |
filter#(X1, mark(X2), X3) | → | filter#(X1, X2, X3) | | filter#(X1, active(X2), X3) | → | filter#(X1, X2, X3) |
Rewrite Rules
active(filter(cons(X, Y), 0, M)) | → | mark(cons(0, filter(Y, M, M))) | | active(filter(cons(X, Y), s(N), M)) | → | mark(cons(X, filter(Y, N, M))) |
active(sieve(cons(0, Y))) | → | mark(cons(0, sieve(Y))) | | active(sieve(cons(s(N), Y))) | → | mark(cons(s(N), sieve(filter(Y, N, N)))) |
active(nats(N)) | → | mark(cons(N, nats(s(N)))) | | active(zprimes) | → | mark(sieve(nats(s(s(0))))) |
mark(filter(X1, X2, X3)) | → | active(filter(mark(X1), mark(X2), mark(X3))) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
mark(sieve(X)) | → | active(sieve(mark(X))) | | mark(nats(X)) | → | active(nats(mark(X))) |
mark(zprimes) | → | active(zprimes) | | filter(mark(X1), X2, X3) | → | filter(X1, X2, X3) |
filter(X1, mark(X2), X3) | → | filter(X1, X2, X3) | | filter(X1, X2, mark(X3)) | → | filter(X1, X2, X3) |
filter(active(X1), X2, X3) | → | filter(X1, X2, X3) | | filter(X1, active(X2), X3) | → | filter(X1, X2, X3) |
filter(X1, X2, active(X3)) | → | filter(X1, X2, X3) | | cons(mark(X1), X2) | → | cons(X1, X2) |
cons(X1, mark(X2)) | → | cons(X1, X2) | | cons(active(X1), X2) | → | cons(X1, X2) |
cons(X1, active(X2)) | → | cons(X1, X2) | | s(mark(X)) | → | s(X) |
s(active(X)) | → | s(X) | | sieve(mark(X)) | → | sieve(X) |
sieve(active(X)) | → | sieve(X) | | nats(mark(X)) | → | nats(X) |
nats(active(X)) | → | nats(X) |
Original Signature
Termination of terms over the following signature is verified: nats, 0, s, sieve, active, mark, zprimes, filter, cons
Open Dependency Pair Problem 9
Dependency Pairs
cons#(X1, active(X2)) | → | cons#(X1, X2) | | cons#(X1, mark(X2)) | → | cons#(X1, X2) |
Rewrite Rules
active(filter(cons(X, Y), 0, M)) | → | mark(cons(0, filter(Y, M, M))) | | active(filter(cons(X, Y), s(N), M)) | → | mark(cons(X, filter(Y, N, M))) |
active(sieve(cons(0, Y))) | → | mark(cons(0, sieve(Y))) | | active(sieve(cons(s(N), Y))) | → | mark(cons(s(N), sieve(filter(Y, N, N)))) |
active(nats(N)) | → | mark(cons(N, nats(s(N)))) | | active(zprimes) | → | mark(sieve(nats(s(s(0))))) |
mark(filter(X1, X2, X3)) | → | active(filter(mark(X1), mark(X2), mark(X3))) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
mark(sieve(X)) | → | active(sieve(mark(X))) | | mark(nats(X)) | → | active(nats(mark(X))) |
mark(zprimes) | → | active(zprimes) | | filter(mark(X1), X2, X3) | → | filter(X1, X2, X3) |
filter(X1, mark(X2), X3) | → | filter(X1, X2, X3) | | filter(X1, X2, mark(X3)) | → | filter(X1, X2, X3) |
filter(active(X1), X2, X3) | → | filter(X1, X2, X3) | | filter(X1, active(X2), X3) | → | filter(X1, X2, X3) |
filter(X1, X2, active(X3)) | → | filter(X1, X2, X3) | | cons(mark(X1), X2) | → | cons(X1, X2) |
cons(X1, mark(X2)) | → | cons(X1, X2) | | cons(active(X1), X2) | → | cons(X1, X2) |
cons(X1, active(X2)) | → | cons(X1, X2) | | s(mark(X)) | → | s(X) |
s(active(X)) | → | s(X) | | sieve(mark(X)) | → | sieve(X) |
sieve(active(X)) | → | sieve(X) | | nats(mark(X)) | → | nats(X) |
nats(active(X)) | → | nats(X) |
Original Signature
Termination of terms over the following signature is verified: nats, 0, s, sieve, active, mark, zprimes, filter, cons
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
mark#(cons(X1, X2)) | → | active#(cons(mark(X1), X2)) | | active#(sieve(cons(s(N), Y))) | → | sieve#(filter(Y, N, N)) |
active#(filter(cons(X, Y), s(N), M)) | → | filter#(Y, N, M) | | filter#(X1, active(X2), X3) | → | filter#(X1, X2, X3) |
active#(zprimes) | → | nats#(s(s(0))) | | sieve#(mark(X)) | → | sieve#(X) |
active#(sieve(cons(s(N), Y))) | → | mark#(cons(s(N), sieve(filter(Y, N, N)))) | | mark#(s(X)) | → | s#(mark(X)) |
active#(sieve(cons(s(N), Y))) | → | cons#(s(N), sieve(filter(Y, N, N))) | | active#(nats(N)) | → | mark#(cons(N, nats(s(N)))) |
active#(zprimes) | → | s#(s(0)) | | mark#(s(X)) | → | mark#(X) |
mark#(sieve(X)) | → | active#(sieve(mark(X))) | | active#(zprimes) | → | mark#(sieve(nats(s(s(0))))) |
mark#(filter(X1, X2, X3)) | → | mark#(X3) | | filter#(active(X1), X2, X3) | → | filter#(X1, X2, X3) |
active#(zprimes) | → | s#(0) | | mark#(cons(X1, X2)) | → | mark#(X1) |
mark#(nats(X)) | → | nats#(mark(X)) | | nats#(mark(X)) | → | nats#(X) |
active#(sieve(cons(0, Y))) | → | cons#(0, sieve(Y)) | | active#(sieve(cons(s(N), Y))) | → | filter#(Y, N, N) |
active#(nats(N)) | → | nats#(s(N)) | | cons#(X1, active(X2)) | → | cons#(X1, X2) |
sieve#(active(X)) | → | sieve#(X) | | filter#(X1, X2, mark(X3)) | → | filter#(X1, X2, X3) |
active#(nats(N)) | → | s#(N) | | mark#(filter(X1, X2, X3)) | → | mark#(X1) |
mark#(filter(X1, X2, X3)) | → | mark#(X2) | | mark#(nats(X)) | → | mark#(X) |
mark#(sieve(X)) | → | mark#(X) | | active#(filter(cons(X, Y), 0, M)) | → | filter#(Y, M, M) |
active#(filter(cons(X, Y), 0, M)) | → | mark#(cons(0, filter(Y, M, M))) | | cons#(mark(X1), X2) | → | cons#(X1, X2) |
filter#(mark(X1), X2, X3) | → | filter#(X1, X2, X3) | | active#(filter(cons(X, Y), s(N), M)) | → | mark#(cons(X, filter(Y, N, M))) |
nats#(active(X)) | → | nats#(X) | | filter#(X1, mark(X2), X3) | → | filter#(X1, X2, X3) |
mark#(sieve(X)) | → | sieve#(mark(X)) | | cons#(X1, mark(X2)) | → | cons#(X1, X2) |
mark#(cons(X1, X2)) | → | cons#(mark(X1), X2) | | active#(sieve(cons(s(N), Y))) | → | s#(N) |
mark#(0) | → | active#(0) | | filter#(X1, X2, active(X3)) | → | filter#(X1, X2, X3) |
mark#(s(X)) | → | active#(s(mark(X))) | | active#(filter(cons(X, Y), s(N), M)) | → | cons#(X, filter(Y, N, M)) |
active#(nats(N)) | → | cons#(N, nats(s(N))) | | active#(sieve(cons(0, Y))) | → | sieve#(Y) |
cons#(active(X1), X2) | → | cons#(X1, X2) | | active#(sieve(cons(0, Y))) | → | mark#(cons(0, sieve(Y))) |
active#(zprimes) | → | sieve#(nats(s(s(0)))) | | s#(mark(X)) | → | s#(X) |
mark#(nats(X)) | → | active#(nats(mark(X))) | | active#(filter(cons(X, Y), 0, M)) | → | cons#(0, filter(Y, M, M)) |
mark#(zprimes) | → | active#(zprimes) | | mark#(filter(X1, X2, X3)) | → | active#(filter(mark(X1), mark(X2), mark(X3))) |
s#(active(X)) | → | s#(X) | | mark#(filter(X1, X2, X3)) | → | filter#(mark(X1), mark(X2), mark(X3)) |
Rewrite Rules
active(filter(cons(X, Y), 0, M)) | → | mark(cons(0, filter(Y, M, M))) | | active(filter(cons(X, Y), s(N), M)) | → | mark(cons(X, filter(Y, N, M))) |
active(sieve(cons(0, Y))) | → | mark(cons(0, sieve(Y))) | | active(sieve(cons(s(N), Y))) | → | mark(cons(s(N), sieve(filter(Y, N, N)))) |
active(nats(N)) | → | mark(cons(N, nats(s(N)))) | | active(zprimes) | → | mark(sieve(nats(s(s(0))))) |
mark(filter(X1, X2, X3)) | → | active(filter(mark(X1), mark(X2), mark(X3))) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
mark(sieve(X)) | → | active(sieve(mark(X))) | | mark(nats(X)) | → | active(nats(mark(X))) |
mark(zprimes) | → | active(zprimes) | | filter(mark(X1), X2, X3) | → | filter(X1, X2, X3) |
filter(X1, mark(X2), X3) | → | filter(X1, X2, X3) | | filter(X1, X2, mark(X3)) | → | filter(X1, X2, X3) |
filter(active(X1), X2, X3) | → | filter(X1, X2, X3) | | filter(X1, active(X2), X3) | → | filter(X1, X2, X3) |
filter(X1, X2, active(X3)) | → | filter(X1, X2, X3) | | cons(mark(X1), X2) | → | cons(X1, X2) |
cons(X1, mark(X2)) | → | cons(X1, X2) | | cons(active(X1), X2) | → | cons(X1, X2) |
cons(X1, active(X2)) | → | cons(X1, X2) | | s(mark(X)) | → | s(X) |
s(active(X)) | → | s(X) | | sieve(mark(X)) | → | sieve(X) |
sieve(active(X)) | → | sieve(X) | | nats(mark(X)) | → | nats(X) |
nats(active(X)) | → | nats(X) |
Original Signature
Termination of terms over the following signature is verified: nats, 0, s, sieve, active, mark, zprimes, filter, cons
Strategy
The following SCCs where found
sieve#(active(X)) → sieve#(X) | sieve#(mark(X)) → sieve#(X) |
mark#(filter(X1, X2, X3)) → mark#(X3) | mark#(cons(X1, X2)) → active#(cons(mark(X1), X2)) |
mark#(0) → active#(0) | mark#(s(X)) → active#(s(mark(X))) |
active#(filter(cons(X, Y), 0, M)) → mark#(cons(0, filter(Y, M, M))) | mark#(cons(X1, X2)) → mark#(X1) |
active#(filter(cons(X, Y), s(N), M)) → mark#(cons(X, filter(Y, N, M))) | active#(sieve(cons(0, Y))) → mark#(cons(0, sieve(Y))) |
active#(sieve(cons(s(N), Y))) → mark#(cons(s(N), sieve(filter(Y, N, N)))) | mark#(nats(X)) → active#(nats(mark(X))) |
mark#(zprimes) → active#(zprimes) | active#(nats(N)) → mark#(cons(N, nats(s(N)))) |
mark#(filter(X1, X2, X3)) → active#(filter(mark(X1), mark(X2), mark(X3))) | mark#(nats(X)) → mark#(X) |
mark#(filter(X1, X2, X3)) → mark#(X1) | mark#(filter(X1, X2, X3)) → mark#(X2) |
mark#(s(X)) → mark#(X) | mark#(sieve(X)) → active#(sieve(mark(X))) |
mark#(sieve(X)) → mark#(X) | active#(zprimes) → mark#(sieve(nats(s(s(0))))) |
s#(mark(X)) → s#(X) | s#(active(X)) → s#(X) |
cons#(X1, active(X2)) → cons#(X1, X2) | cons#(mark(X1), X2) → cons#(X1, X2) |
cons#(X1, mark(X2)) → cons#(X1, X2) | cons#(active(X1), X2) → cons#(X1, X2) |
filter#(active(X1), X2, X3) → filter#(X1, X2, X3) | filter#(X1, X2, active(X3)) → filter#(X1, X2, X3) |
filter#(X1, X2, mark(X3)) → filter#(X1, X2, X3) | filter#(X1, mark(X2), X3) → filter#(X1, X2, X3) |
filter#(X1, active(X2), X3) → filter#(X1, X2, X3) | filter#(mark(X1), X2, X3) → filter#(X1, X2, X3) |
nats#(mark(X)) → nats#(X) | nats#(active(X)) → nats#(X) |
Problem 2: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
filter#(active(X1), X2, X3) | → | filter#(X1, X2, X3) | | filter#(X1, X2, active(X3)) | → | filter#(X1, X2, X3) |
filter#(X1, X2, mark(X3)) | → | filter#(X1, X2, X3) | | filter#(X1, mark(X2), X3) | → | filter#(X1, X2, X3) |
filter#(X1, active(X2), X3) | → | filter#(X1, X2, X3) | | filter#(mark(X1), X2, X3) | → | filter#(X1, X2, X3) |
Rewrite Rules
active(filter(cons(X, Y), 0, M)) | → | mark(cons(0, filter(Y, M, M))) | | active(filter(cons(X, Y), s(N), M)) | → | mark(cons(X, filter(Y, N, M))) |
active(sieve(cons(0, Y))) | → | mark(cons(0, sieve(Y))) | | active(sieve(cons(s(N), Y))) | → | mark(cons(s(N), sieve(filter(Y, N, N)))) |
active(nats(N)) | → | mark(cons(N, nats(s(N)))) | | active(zprimes) | → | mark(sieve(nats(s(s(0))))) |
mark(filter(X1, X2, X3)) | → | active(filter(mark(X1), mark(X2), mark(X3))) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
mark(sieve(X)) | → | active(sieve(mark(X))) | | mark(nats(X)) | → | active(nats(mark(X))) |
mark(zprimes) | → | active(zprimes) | | filter(mark(X1), X2, X3) | → | filter(X1, X2, X3) |
filter(X1, mark(X2), X3) | → | filter(X1, X2, X3) | | filter(X1, X2, mark(X3)) | → | filter(X1, X2, X3) |
filter(active(X1), X2, X3) | → | filter(X1, X2, X3) | | filter(X1, active(X2), X3) | → | filter(X1, X2, X3) |
filter(X1, X2, active(X3)) | → | filter(X1, X2, X3) | | cons(mark(X1), X2) | → | cons(X1, X2) |
cons(X1, mark(X2)) | → | cons(X1, X2) | | cons(active(X1), X2) | → | cons(X1, X2) |
cons(X1, active(X2)) | → | cons(X1, X2) | | s(mark(X)) | → | s(X) |
s(active(X)) | → | s(X) | | sieve(mark(X)) | → | sieve(X) |
sieve(active(X)) | → | sieve(X) | | nats(mark(X)) | → | nats(X) |
nats(active(X)) | → | nats(X) |
Original Signature
Termination of terms over the following signature is verified: nats, 0, s, sieve, active, mark, zprimes, filter, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
filter#(active(X1), X2, X3) | → | filter#(X1, X2, X3) | | filter#(mark(X1), X2, X3) | → | filter#(X1, X2, X3) |
Problem 3: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
sieve#(active(X)) | → | sieve#(X) | | sieve#(mark(X)) | → | sieve#(X) |
Rewrite Rules
active(filter(cons(X, Y), 0, M)) | → | mark(cons(0, filter(Y, M, M))) | | active(filter(cons(X, Y), s(N), M)) | → | mark(cons(X, filter(Y, N, M))) |
active(sieve(cons(0, Y))) | → | mark(cons(0, sieve(Y))) | | active(sieve(cons(s(N), Y))) | → | mark(cons(s(N), sieve(filter(Y, N, N)))) |
active(nats(N)) | → | mark(cons(N, nats(s(N)))) | | active(zprimes) | → | mark(sieve(nats(s(s(0))))) |
mark(filter(X1, X2, X3)) | → | active(filter(mark(X1), mark(X2), mark(X3))) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
mark(sieve(X)) | → | active(sieve(mark(X))) | | mark(nats(X)) | → | active(nats(mark(X))) |
mark(zprimes) | → | active(zprimes) | | filter(mark(X1), X2, X3) | → | filter(X1, X2, X3) |
filter(X1, mark(X2), X3) | → | filter(X1, X2, X3) | | filter(X1, X2, mark(X3)) | → | filter(X1, X2, X3) |
filter(active(X1), X2, X3) | → | filter(X1, X2, X3) | | filter(X1, active(X2), X3) | → | filter(X1, X2, X3) |
filter(X1, X2, active(X3)) | → | filter(X1, X2, X3) | | cons(mark(X1), X2) | → | cons(X1, X2) |
cons(X1, mark(X2)) | → | cons(X1, X2) | | cons(active(X1), X2) | → | cons(X1, X2) |
cons(X1, active(X2)) | → | cons(X1, X2) | | s(mark(X)) | → | s(X) |
s(active(X)) | → | s(X) | | sieve(mark(X)) | → | sieve(X) |
sieve(active(X)) | → | sieve(X) | | nats(mark(X)) | → | nats(X) |
nats(active(X)) | → | nats(X) |
Original Signature
Termination of terms over the following signature is verified: nats, 0, s, sieve, active, mark, zprimes, filter, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
sieve#(active(X)) | → | sieve#(X) | | sieve#(mark(X)) | → | sieve#(X) |
Problem 4: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
s#(mark(X)) | → | s#(X) | | s#(active(X)) | → | s#(X) |
Rewrite Rules
active(filter(cons(X, Y), 0, M)) | → | mark(cons(0, filter(Y, M, M))) | | active(filter(cons(X, Y), s(N), M)) | → | mark(cons(X, filter(Y, N, M))) |
active(sieve(cons(0, Y))) | → | mark(cons(0, sieve(Y))) | | active(sieve(cons(s(N), Y))) | → | mark(cons(s(N), sieve(filter(Y, N, N)))) |
active(nats(N)) | → | mark(cons(N, nats(s(N)))) | | active(zprimes) | → | mark(sieve(nats(s(s(0))))) |
mark(filter(X1, X2, X3)) | → | active(filter(mark(X1), mark(X2), mark(X3))) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
mark(sieve(X)) | → | active(sieve(mark(X))) | | mark(nats(X)) | → | active(nats(mark(X))) |
mark(zprimes) | → | active(zprimes) | | filter(mark(X1), X2, X3) | → | filter(X1, X2, X3) |
filter(X1, mark(X2), X3) | → | filter(X1, X2, X3) | | filter(X1, X2, mark(X3)) | → | filter(X1, X2, X3) |
filter(active(X1), X2, X3) | → | filter(X1, X2, X3) | | filter(X1, active(X2), X3) | → | filter(X1, X2, X3) |
filter(X1, X2, active(X3)) | → | filter(X1, X2, X3) | | cons(mark(X1), X2) | → | cons(X1, X2) |
cons(X1, mark(X2)) | → | cons(X1, X2) | | cons(active(X1), X2) | → | cons(X1, X2) |
cons(X1, active(X2)) | → | cons(X1, X2) | | s(mark(X)) | → | s(X) |
s(active(X)) | → | s(X) | | sieve(mark(X)) | → | sieve(X) |
sieve(active(X)) | → | sieve(X) | | nats(mark(X)) | → | nats(X) |
nats(active(X)) | → | nats(X) |
Original Signature
Termination of terms over the following signature is verified: nats, 0, s, sieve, active, mark, zprimes, filter, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
s#(mark(X)) | → | s#(X) | | s#(active(X)) | → | s#(X) |
Problem 5: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
nats#(mark(X)) | → | nats#(X) | | nats#(active(X)) | → | nats#(X) |
Rewrite Rules
active(filter(cons(X, Y), 0, M)) | → | mark(cons(0, filter(Y, M, M))) | | active(filter(cons(X, Y), s(N), M)) | → | mark(cons(X, filter(Y, N, M))) |
active(sieve(cons(0, Y))) | → | mark(cons(0, sieve(Y))) | | active(sieve(cons(s(N), Y))) | → | mark(cons(s(N), sieve(filter(Y, N, N)))) |
active(nats(N)) | → | mark(cons(N, nats(s(N)))) | | active(zprimes) | → | mark(sieve(nats(s(s(0))))) |
mark(filter(X1, X2, X3)) | → | active(filter(mark(X1), mark(X2), mark(X3))) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
mark(sieve(X)) | → | active(sieve(mark(X))) | | mark(nats(X)) | → | active(nats(mark(X))) |
mark(zprimes) | → | active(zprimes) | | filter(mark(X1), X2, X3) | → | filter(X1, X2, X3) |
filter(X1, mark(X2), X3) | → | filter(X1, X2, X3) | | filter(X1, X2, mark(X3)) | → | filter(X1, X2, X3) |
filter(active(X1), X2, X3) | → | filter(X1, X2, X3) | | filter(X1, active(X2), X3) | → | filter(X1, X2, X3) |
filter(X1, X2, active(X3)) | → | filter(X1, X2, X3) | | cons(mark(X1), X2) | → | cons(X1, X2) |
cons(X1, mark(X2)) | → | cons(X1, X2) | | cons(active(X1), X2) | → | cons(X1, X2) |
cons(X1, active(X2)) | → | cons(X1, X2) | | s(mark(X)) | → | s(X) |
s(active(X)) | → | s(X) | | sieve(mark(X)) | → | sieve(X) |
sieve(active(X)) | → | sieve(X) | | nats(mark(X)) | → | nats(X) |
nats(active(X)) | → | nats(X) |
Original Signature
Termination of terms over the following signature is verified: nats, 0, s, sieve, active, mark, zprimes, filter, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
nats#(mark(X)) | → | nats#(X) | | nats#(active(X)) | → | nats#(X) |
Problem 6: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
cons#(X1, active(X2)) | → | cons#(X1, X2) | | cons#(mark(X1), X2) | → | cons#(X1, X2) |
cons#(X1, mark(X2)) | → | cons#(X1, X2) | | cons#(active(X1), X2) | → | cons#(X1, X2) |
Rewrite Rules
active(filter(cons(X, Y), 0, M)) | → | mark(cons(0, filter(Y, M, M))) | | active(filter(cons(X, Y), s(N), M)) | → | mark(cons(X, filter(Y, N, M))) |
active(sieve(cons(0, Y))) | → | mark(cons(0, sieve(Y))) | | active(sieve(cons(s(N), Y))) | → | mark(cons(s(N), sieve(filter(Y, N, N)))) |
active(nats(N)) | → | mark(cons(N, nats(s(N)))) | | active(zprimes) | → | mark(sieve(nats(s(s(0))))) |
mark(filter(X1, X2, X3)) | → | active(filter(mark(X1), mark(X2), mark(X3))) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
mark(sieve(X)) | → | active(sieve(mark(X))) | | mark(nats(X)) | → | active(nats(mark(X))) |
mark(zprimes) | → | active(zprimes) | | filter(mark(X1), X2, X3) | → | filter(X1, X2, X3) |
filter(X1, mark(X2), X3) | → | filter(X1, X2, X3) | | filter(X1, X2, mark(X3)) | → | filter(X1, X2, X3) |
filter(active(X1), X2, X3) | → | filter(X1, X2, X3) | | filter(X1, active(X2), X3) | → | filter(X1, X2, X3) |
filter(X1, X2, active(X3)) | → | filter(X1, X2, X3) | | cons(mark(X1), X2) | → | cons(X1, X2) |
cons(X1, mark(X2)) | → | cons(X1, X2) | | cons(active(X1), X2) | → | cons(X1, X2) |
cons(X1, active(X2)) | → | cons(X1, X2) | | s(mark(X)) | → | s(X) |
s(active(X)) | → | s(X) | | sieve(mark(X)) | → | sieve(X) |
sieve(active(X)) | → | sieve(X) | | nats(mark(X)) | → | nats(X) |
nats(active(X)) | → | nats(X) |
Original Signature
Termination of terms over the following signature is verified: nats, 0, s, sieve, active, mark, zprimes, filter, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
cons#(mark(X1), X2) | → | cons#(X1, X2) | | cons#(active(X1), X2) | → | cons#(X1, X2) |