TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60000 ms.
Problem 1 was processed with processor DependencyGraph (45ms). | Problem 2 was processed with processor PolynomialLinearRange8NegiUR (2047ms). | | Problem 4 was processed with processor ForwardNarrowing (3ms). | | | Problem 5 was processed with processor ForwardNarrowing (1ms). | | | | Problem 6 was processed with processor ForwardInstantiation (5ms). | | | | | Problem 8 was processed with processor ForwardInstantiation (7ms). | | | | | | Problem 10 was processed with processor Propagation (24ms). | | | | | | | Problem 11 was processed with processor BackwardInstantiation (10ms). | | | | | | | | Problem 13 was processed with processor ForwardInstantiation (30ms). | | | | | | | | | Problem 14 was processed with processor Propagation (245ms). | | | | | | | | | | Problem 15 remains open; application of the following processors failed []. | Problem 3 was processed with processor BackwardInstantiation (1ms). | | Problem 7 was processed with processor BackwardInstantiation (2ms). | | | Problem 9 was processed with processor BackwardInstantiation (1ms). | | | | Problem 12 remains open; application of the following processors failed [ForwardInstantiation (0ms), Propagation (2ms)].
from#(X) | → | from#(s(X)) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
sieve#(cons(X, Y)) | → | filter#(X, sieve(Y)) | filter#(s(s(X)), cons(Y, Z)) | → | sieve#(Y) | |
sieve#(cons(X, Y)) | → | sieve#(Y) | filter#(s(s(X)), cons(Y, Z)) | → | filter#(X, sieve(Y)) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
sieve#(cons(X, Y)) | → | filter#(X, sieve(Y)) | filter#(s(s(X)), cons(Y, Z)) | → | if#(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | |
filter#(s(s(X)), cons(Y, Z)) | → | filter#(s(s(X)), Z) | primes# | → | from#(s(s(0))) | |
from#(X) | → | from#(s(X)) | filter#(s(s(X)), cons(Y, Z)) | → | sieve#(Y) | |
primes# | → | sieve#(from(s(s(0)))) | sieve#(cons(X, Y)) | → | sieve#(Y) | |
filter#(s(s(X)), cons(Y, Z)) | → | filter#(X, sieve(Y)) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
from#(X) → from#(s(X)) |
sieve#(cons(X, Y)) → filter#(X, sieve(Y)) | filter#(s(s(X)), cons(Y, Z)) → filter#(s(s(X)), Z) |
filter#(s(s(X)), cons(Y, Z)) → sieve#(Y) | sieve#(cons(X, Y)) → sieve#(Y) |
filter#(s(s(X)), cons(Y, Z)) → filter#(X, sieve(Y)) |
sieve#(cons(X, Y)) | → | filter#(X, sieve(Y)) | filter#(s(s(X)), cons(Y, Z)) | → | filter#(s(s(X)), Z) | |
filter#(s(s(X)), cons(Y, Z)) | → | sieve#(Y) | sieve#(cons(X, Y)) | → | sieve#(Y) | |
filter#(s(s(X)), cons(Y, Z)) | → | filter#(X, sieve(Y)) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) | filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | |
if(false, X, Y) | → | Y | if(true, X, Y) | → | X |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
filter#(s(s(X)), cons(Y, Z)) | → | filter#(s(s(X)), Z) |
sieve#(cons(X, Y)) | → | filter#(X, sieve(Y)) | filter#(s(s(X)), cons(Y, Z)) | → | sieve#(Y) | |
sieve#(cons(X, Y)) | → | sieve#(Y) | filter#(s(s(X)), cons(Y, Z)) | → | filter#(X, sieve(Y)) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
Relevant Terms | Irrelevant Terms |
---|---|
filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) |
sieve#(cons(X, cons(_x32, _x31))) → filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) |
sieve#(cons(X, cons(_x32, _x31))) | → | filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) | filter#(s(s(X)), cons(Y, Z)) | → | sieve#(Y) | |
sieve#(cons(X, Y)) | → | sieve#(Y) | filter#(s(s(X)), cons(Y, Z)) | → | filter#(X, sieve(Y)) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
Relevant Terms | Irrelevant Terms |
---|---|
filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) |
filter#(s(s(X)), cons(cons(_x32, _x31), Z)) → filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) |
sieve#(cons(X, cons(_x32, _x31))) | → | filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) | filter#(s(s(X)), cons(Y, Z)) | → | sieve#(Y) | |
sieve#(cons(X, Y)) | → | sieve#(Y) | filter#(s(s(X)), cons(cons(_x32, _x31), Z)) | → | filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
filter#(s(s(X)), cons(cons(X, cons(_x32, _x31)), Z)) → sieve#(cons(X, cons(_x32, _x31))) | filter#(s(s(X)), cons(cons(_X, _Y), Z)) → sieve#(cons(_X, _Y)) |
sieve#(cons(X, cons(X, cons(_x32, _x31)))) → sieve#(cons(X, cons(_x32, _x31))) | sieve#(cons(X, cons(_X, _Y))) → sieve#(cons(_X, _Y)) |
sieve#(cons(X, cons(_x32, _x31))) | → | filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) | sieve#(cons(X, cons(X, cons(_x32, _x31)))) | → | sieve#(cons(X, cons(_x32, _x31))) | |
sieve#(cons(X, cons(_X, _Y))) | → | sieve#(cons(_X, _Y)) | filter#(s(s(X)), cons(cons(X, cons(_x32, _x31)), Z)) | → | sieve#(cons(X, cons(_x32, _x31))) | |
filter#(s(s(X)), cons(cons(_x32, _x31), Z)) | → | filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) | filter#(s(s(X)), cons(cons(_X, _Y), Z)) | → | sieve#(cons(_X, _Y)) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
sieve#(cons(X, cons(X, cons(_x32, _x31)))) → sieve#(cons(X, cons(_x32, _x31))) | sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) → sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) |
sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) → sieve#(cons(_X, cons(_x32, _x31))) | sieve#(cons(X, cons(_X, cons(___X, ___Y)))) → sieve#(cons(_X, cons(___X, ___Y))) |
sieve#(cons(_X, cons(_X, cons(_X, cons(_x32, _x31))))) → sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) |
filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(__x32, __x31))), Z)) → sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) | filter#(s(s(X)), cons(cons(X, cons(_x32, _x31)), Z)) → sieve#(cons(X, cons(_x32, _x31))) |
filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, _x31))), Z)) → sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) | filter#(s(s(X)), cons(cons(_X, cons(___X, ___Y)), Z)) → sieve#(cons(_X, cons(___X, ___Y))) |
filter#(s(s(_X)), cons(cons(_X, cons(_x32, _x31)), Z)) → sieve#(cons(_X, cons(_x32, _x31))) |
filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, _x31))), Z)) | → | sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) | sieve#(cons(X, cons(_x32, _x31))) | → | filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) | |
filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(__x32, __x31))), Z)) | → | sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) | sieve#(cons(X, cons(X, cons(_x32, _x31)))) | → | sieve#(cons(X, cons(_x32, _x31))) | |
filter#(s(s(X)), cons(cons(_X, cons(___X, ___Y)), Z)) | → | sieve#(cons(_X, cons(___X, ___Y))) | filter#(s(s(_X)), cons(cons(_X, cons(_x32, _x31)), Z)) | → | sieve#(cons(_X, cons(_x32, _x31))) | |
filter#(s(s(X)), cons(cons(X, cons(_x32, _x31)), Z)) | → | sieve#(cons(X, cons(_x32, _x31))) | sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) | → | sieve#(cons(_X, cons(_x32, _x31))) | |
filter#(s(s(X)), cons(cons(_x32, _x31), Z)) | → | filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) | sieve#(cons(X, cons(_X, cons(___X, ___Y)))) | → | sieve#(cons(_X, cons(___X, ___Y))) | |
sieve#(cons(_X, cons(_X, cons(_X, cons(_x32, _x31))))) | → | sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) | sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) | → | sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
This is possible as
Removed Dependency Pairs | Added Dependency Pairs |
---|---|
filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, _x31))), Z)) → sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) | filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, _x31))), Z)) → sieve#(cons(_X, cons(_x32, _x31))) |
sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) → sieve#(cons(_X, cons(_x32, _x31))) |
sieve#(cons(X, cons(X, cons(_x32, _x31)))) | → | sieve#(cons(X, cons(_x32, _x31))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(__x32, __x31))), Z)) | → | sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) | |
sieve#(cons(X, cons(_x32, _x31))) | → | filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) | filter#(s(s(_X)), cons(cons(_X, cons(_x32, _x31)), Z)) | → | sieve#(cons(_X, cons(_x32, _x31))) | |
filter#(s(s(X)), cons(cons(_X, cons(___X, ___Y)), Z)) | → | sieve#(cons(_X, cons(___X, ___Y))) | filter#(s(s(X)), cons(cons(X, cons(_x32, _x31)), Z)) | → | sieve#(cons(X, cons(_x32, _x31))) | |
filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, _x31))), Z)) | → | sieve#(cons(_X, cons(_x32, _x31))) | sieve#(cons(_X, cons(_X, cons(_X, cons(_x32, _x31))))) | → | sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) | |
sieve#(cons(X, cons(_X, cons(___X, ___Y)))) | → | sieve#(cons(_X, cons(___X, ___Y))) | filter#(s(s(X)), cons(cons(_x32, _x31), Z)) | → | filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) | |
sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) | → | sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
sieve#(cons(__X, cons(__X, cons(__x32, __x31)))) → filter#(__X, cons(__X, filter(__X, sieve(cons(__x32, __x31))))) | sieve#(cons(__X, cons(__x32, __x31))) → filter#(__X, cons(__x32, filter(__x32, sieve(__x31)))) |
sieve#(cons(_X, cons(__x32, __x31))) → filter#(_X, cons(__x32, filter(__x32, sieve(__x31)))) | sieve#(cons(_X, cons(___X, ___Y))) → filter#(_X, cons(___X, filter(___X, sieve(___Y)))) |
sieve#(cons(__x32, cons(__x32, cons(___x32, ___x31)))) → filter#(__x32, cons(__x32, filter(__x32, sieve(cons(___x32, ___x31))))) |
sieve#(cons(__X, cons(__X, cons(__x32, __x31)))) | → | filter#(__X, cons(__X, filter(__X, sieve(cons(__x32, __x31))))) | sieve#(cons(_X, cons(__x32, __x31))) | → | filter#(_X, cons(__x32, filter(__x32, sieve(__x31)))) | |
filter#(s(s(X)), cons(cons(_X, cons(___X, ___Y)), Z)) | → | sieve#(cons(_X, cons(___X, ___Y))) | filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, _x31))), Z)) | → | sieve#(cons(_X, cons(_x32, _x31))) | |
sieve#(cons(X, cons(_X, cons(___X, ___Y)))) | → | sieve#(cons(_X, cons(___X, ___Y))) | sieve#(cons(_X, cons(_X, cons(_X, cons(_x32, _x31))))) | → | sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) | |
sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) | → | sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(__x32, __x31))), Z)) | → | sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) | |
sieve#(cons(X, cons(X, cons(_x32, _x31)))) | → | sieve#(cons(X, cons(_x32, _x31))) | sieve#(cons(__X, cons(__x32, __x31))) | → | filter#(__X, cons(__x32, filter(__x32, sieve(__x31)))) | |
sieve#(cons(_X, cons(___X, ___Y))) | → | filter#(_X, cons(___X, filter(___X, sieve(___Y)))) | filter#(s(s(_X)), cons(cons(_X, cons(_x32, _x31)), Z)) | → | sieve#(cons(_X, cons(_x32, _x31))) | |
filter#(s(s(X)), cons(cons(X, cons(_x32, _x31)), Z)) | → | sieve#(cons(X, cons(_x32, _x31))) | filter#(s(s(X)), cons(cons(_x32, _x31), Z)) | → | filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) | |
sieve#(cons(__x32, cons(__x32, cons(___x32, ___x31)))) | → | filter#(__x32, cons(__x32, filter(__x32, sieve(cons(___x32, ___x31))))) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
filter#(s(s(X)), cons(cons(_X, cons(___X, ___Y)), Z)) → sieve#(cons(_X, cons(___X, ___Y))) | filter#(s(s(X)), cons(cons(_X, cons(___X, cons(_______X, _______Y))), Z)) → sieve#(cons(_X, cons(___X, cons(_______X, _______Y)))) |
filter#(s(s(___X)), cons(cons(___X, cons(___X, cons(_x32, _x31))), Z)) → sieve#(cons(___X, cons(___X, cons(_x32, _x31)))) | filter#(s(s(X)), cons(cons(___X, cons(___X, cons(__x32, __x31))), Z)) → sieve#(cons(___X, cons(___X, cons(__x32, __x31)))) |
filter#(s(s(X)), cons(cons(___X, cons(___X, cons(___X, cons(__x32, __x31)))), Z)) → sieve#(cons(___X, cons(___X, cons(___X, cons(__x32, __x31))))) | filter#(s(s(X)), cons(cons(___X, cons(___X, cons(___x32, ___x31))), Z)) → sieve#(cons(___X, cons(___X, cons(___x32, ___x31)))) |
filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))), Z)) → sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31))))), Z)) → sieve#(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31))))) |
filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, cons(_____X, _____Y)))), Z)) → sieve#(cons(_X, cons(_x32, cons(_____X, _____Y)))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31)))), Z)) → sieve#(cons(_x32, cons(_x32, cons(___x32, ___x31)))) |
filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, _x31))), Z)) → sieve#(cons(_X, cons(_x32, _x31))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31)))), Z)) → sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) |
sieve#(cons(X, cons(___X, cons(___X, cons(___X, cons(__x32, __x31)))))) → sieve#(cons(___X, cons(___X, cons(___X, cons(__x32, __x31))))) | sieve#(cons(___X, cons(___X, cons(___X, cons(_x32, _x31))))) → sieve#(cons(___X, cons(___X, cons(_x32, _x31)))) |
sieve#(cons(X, cons(___X, cons(___X, cons(__x32, __x31))))) → sieve#(cons(___X, cons(___X, cons(__x32, __x31)))) | sieve#(cons(X, cons(___X, cons(___X, cons(___x32, ___x31))))) → sieve#(cons(___X, cons(___X, cons(___x32, ___x31)))) |
sieve#(cons(X, cons(_X, cons(___X, ___Y)))) → sieve#(cons(_X, cons(___X, ___Y))) | sieve#(cons(X, cons(_X, cons(___X, cons(_______X, _______Y))))) → sieve#(cons(_X, cons(___X, cons(_______X, _______Y)))) |
sieve#(cons(_x32, cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31)))))) → sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) | sieve#(cons(X, cons(X, cons(_x32, _x31)))) → sieve#(cons(X, cons(_x32, _x31))) |
sieve#(cons(X, cons(X, cons(_x32, cons(____X, ____Y))))) → sieve#(cons(X, cons(_x32, cons(____X, ____Y)))) | sieve#(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31))))) → sieve#(cons(_x32, cons(_x32, cons(___x32, ___x31)))) |
sieve#(cons(_x32, cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31)))))) → sieve#(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31))))) | sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) → sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) |
filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31)))), Z)) → sieve#(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31))))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(__x32, __x31))), Z)) → sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) |
filter#(s(s(_X)), cons(cons(_X, cons(_x32, cons(_____X, _____Y))), Z)) → sieve#(cons(_X, cons(_x32, cons(_____X, _____Y)))) | filter#(s(s(_X)), cons(cons(_X, cons(_x32, _x31)), Z)) → sieve#(cons(_X, cons(_x32, _x31))) |
filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(___x32, ___x31))), Z)) → sieve#(cons(_x32, cons(_x32, cons(___x32, ___x31)))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31)))), Z)) → sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) |
filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31)))), Z)) → sieve#(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31))))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(__x32, __x31))), Z)) → sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) |
filter#(s(s(X)), cons(cons(X, cons(_x32, cons(____X, ____Y))), Z)) → sieve#(cons(X, cons(_x32, cons(____X, ____Y)))) | filter#(s(s(X)), cons(cons(X, cons(_x32, _x31)), Z)) → sieve#(cons(X, cons(_x32, _x31))) |
filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(___x32, ___x31))), Z)) → sieve#(cons(_x32, cons(_x32, cons(___x32, ___x31)))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31)))), Z)) → sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) |
sieve#(cons(_x32, cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31)))))) | → | sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))), Z)) | → | sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) | |
sieve#(cons(__X, cons(__X, cons(__x32, __x31)))) | → | filter#(__X, cons(__X, filter(__X, sieve(cons(__x32, __x31))))) | sieve#(cons(X, cons(___X, cons(___X, cons(___X, cons(__x32, __x31)))))) | → | sieve#(cons(___X, cons(___X, cons(___X, cons(__x32, __x31))))) | |
filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, cons(_____X, _____Y)))), Z)) | → | sieve#(cons(_X, cons(_x32, cons(_____X, _____Y)))) | filter#(s(s(X)), cons(cons(_X, cons(___X, ___Y)), Z)) | → | sieve#(cons(_X, cons(___X, ___Y))) | |
filter#(s(s(_X)), cons(cons(_X, cons(_x32, cons(_____X, _____Y))), Z)) | → | sieve#(cons(_X, cons(_x32, cons(_____X, _____Y)))) | sieve#(cons(___X, cons(___X, cons(___X, cons(_x32, _x31))))) | → | sieve#(cons(___X, cons(___X, cons(_x32, _x31)))) | |
filter#(s(s(X)), cons(cons(_X, cons(___X, cons(_______X, _______Y))), Z)) | → | sieve#(cons(_X, cons(___X, cons(_______X, _______Y)))) | filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, _x31))), Z)) | → | sieve#(cons(_X, cons(_x32, _x31))) | |
sieve#(cons(X, cons(___X, cons(___X, cons(__x32, __x31))))) | → | sieve#(cons(___X, cons(___X, cons(__x32, __x31)))) | sieve#(cons(X, cons(___X, cons(___X, cons(___x32, ___x31))))) | → | sieve#(cons(___X, cons(___X, cons(___x32, ___x31)))) | |
sieve#(cons(X, cons(_X, cons(___X, ___Y)))) | → | sieve#(cons(_X, cons(___X, ___Y))) | sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) | → | sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) | |
filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31))))), Z)) | → | sieve#(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31))))) | filter#(s(s(X)), cons(cons(X, cons(_x32, cons(____X, ____Y))), Z)) | → | sieve#(cons(X, cons(_x32, cons(____X, ____Y)))) | |
filter#(s(s(_X)), cons(cons(_X, cons(_x32, _x31)), Z)) | → | sieve#(cons(_X, cons(_x32, _x31))) | sieve#(cons(X, cons(X, cons(_x32, cons(____X, ____Y))))) | → | sieve#(cons(X, cons(_x32, cons(____X, ____Y)))) | |
filter#(s(s(X)), cons(cons(X, cons(_x32, _x31)), Z)) | → | sieve#(cons(X, cons(_x32, _x31))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31)))), Z)) | → | sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) | |
filter#(s(s(X)), cons(cons(_x32, _x31), Z)) | → | filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) | filter#(s(s(X)), cons(cons(___X, cons(___X, cons(__x32, __x31))), Z)) | → | sieve#(cons(___X, cons(___X, cons(__x32, __x31)))) | |
sieve#(cons(_x32, cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31)))))) | → | sieve#(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31))))) | filter#(s(s(X)), cons(cons(___X, cons(___X, cons(___X, cons(__x32, __x31)))), Z)) | → | sieve#(cons(___X, cons(___X, cons(___X, cons(__x32, __x31))))) | |
sieve#(cons(_X, cons(__x32, __x31))) | → | filter#(_X, cons(__x32, filter(__x32, sieve(__x31)))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(___x32, ___x31))), Z)) | → | sieve#(cons(_x32, cons(_x32, cons(___x32, ___x31)))) | |
sieve#(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31))))) | → | sieve#(cons(_x32, cons(_x32, cons(___x32, ___x31)))) | sieve#(cons(_X, cons(_X, cons(_X, cons(_x32, _x31))))) | → | sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) | |
filter#(s(s(X)), cons(cons(___X, cons(___X, cons(___x32, ___x31))), Z)) | → | sieve#(cons(___X, cons(___X, cons(___x32, ___x31)))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31)))), Z)) | → | sieve#(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31))))) | |
filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(__x32, __x31))), Z)) | → | sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) | sieve#(cons(__X, cons(__x32, __x31))) | → | filter#(__X, cons(__x32, filter(__x32, sieve(__x31)))) | |
sieve#(cons(X, cons(X, cons(_x32, _x31)))) | → | sieve#(cons(X, cons(_x32, _x31))) | sieve#(cons(_X, cons(___X, ___Y))) | → | filter#(_X, cons(___X, filter(___X, sieve(___Y)))) | |
filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(___x32, ___x31)))), Z)) | → | sieve#(cons(_x32, cons(_x32, cons(___x32, ___x31)))) | filter#(s(s(___X)), cons(cons(___X, cons(___X, cons(_x32, _x31))), Z)) | → | sieve#(cons(___X, cons(___X, cons(_x32, _x31)))) | |
sieve#(cons(__x32, cons(__x32, cons(___x32, ___x31)))) | → | filter#(__x32, cons(__x32, filter(__x32, sieve(cons(___x32, ___x31))))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31)))), Z)) | → | sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) | |
sieve#(cons(X, cons(_X, cons(___X, cons(_______X, _______Y))))) | → | sieve#(cons(_X, cons(___X, cons(_______X, _______Y)))) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
This is possible as
Removed Dependency Pairs | Added Dependency Pairs |
---|---|
filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))), Z)) → sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) | filter#(s(s(_x32)), cons(cons(_x32, cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))), Z)) → sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) |
sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) → sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) |
from#(X) | → | from#(s(X)) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
from#(s(_X)) → from#(s(s(_X))) |
from#(s(_X)) | → | from#(s(s(_X))) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
from#(s(s(__X))) → from#(s(s(s(__X)))) |
from#(s(s(__X))) | → | from#(s(s(s(__X)))) |
primes | → | sieve(from(s(s(0)))) | from(X) | → | cons(X, from(s(X))) | |
head(cons(X, Y)) | → | X | tail(cons(X, Y)) | → | Y | |
if(true, X, Y) | → | X | if(false, X, Y) | → | Y | |
filter(s(s(X)), cons(Y, Z)) | → | if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) | sieve(cons(X, Y)) | → | cons(X, filter(X, sieve(Y))) |
Termination of terms over the following signature is verified: sieve, true, divides, from, tail, 0, s, if, false, primes, head, filter, cons
from#(s(s(s(___X)))) → from#(s(s(s(s(___X))))) |