TIMEOUT

The TRS could not be proven terminating. The proof attempt took 60007 ms.

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (236ms).
 | – Problem 2 remains open; application of the following processors failed [SubtermCriterion (0ms), DependencyGraph (37ms), PolynomialLinearRange4iUR (2120ms), DependencyGraph (37ms), PolynomialLinearRange8NegiUR (12300ms), DependencyGraph (76ms), ReductionPairSAT (timeout)].

The following open problems remain:



Open Dependency Pair Problem 2

Dependency Pairs

sieve#(cons(X, Y))activate#(Y)activate#(n__cons(X1, X2))activate#(X1)
filter#(s(s(X)), cons(Y, Z))activate#(Z)activate#(n__s(X))activate#(X)
activate#(n__filter(X1, X2))filter#(activate(X1), activate(X2))activate#(n__sieve(X))activate#(X)
activate#(n__filter(X1, X2))activate#(X1)activate#(n__from(X))activate#(X)
activate#(n__sieve(X))sieve#(activate(X))activate#(n__filter(X1, X2))activate#(X2)

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, n__from(n__s(X)))
head(cons(X, Y))Xtail(cons(X, Y))activate(Y)
if(true, X, Y)activate(X)if(false, X, Y)activate(Y)
filter(s(s(X)), cons(Y, Z))if(divides(s(s(X)), Y), n__filter(n__s(n__s(X)), activate(Z)), n__cons(Y, n__filter(X, n__sieve(Y))))sieve(cons(X, Y))cons(X, n__filter(X, n__sieve(activate(Y))))
from(X)n__from(X)s(X)n__s(X)
filter(X1, X2)n__filter(X1, X2)cons(X1, X2)n__cons(X1, X2)
sieve(X)n__sieve(X)activate(n__from(X))from(activate(X))
activate(n__s(X))s(activate(X))activate(n__filter(X1, X2))filter(activate(X1), activate(X2))
activate(n__cons(X1, X2))cons(activate(X1), X2)activate(n__sieve(X))sieve(activate(X))
activate(X)X

Original Signature

Termination of terms over the following signature is verified: sieve, n__from, true, divides, from, tail, n__s, activate, n__cons, 0, s, if, n__filter, false, primes, head, filter, n__sieve, cons


Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

activate#(n__s(X))activate#(X)activate#(n__filter(X1, X2))filter#(activate(X1), activate(X2))
primes#sieve#(from(s(s(0))))activate#(n__filter(X1, X2))activate#(X2)
sieve#(cons(X, Y))activate#(Y)activate#(n__cons(X1, X2))cons#(activate(X1), X2)
activate#(n__cons(X1, X2))activate#(X1)sieve#(cons(X, Y))cons#(X, n__filter(X, n__sieve(activate(Y))))
if#(false, X, Y)activate#(Y)primes#from#(s(s(0)))
filter#(s(s(X)), cons(Y, Z))s#(X)tail#(cons(X, Y))activate#(Y)
activate#(n__sieve(X))sieve#(activate(X))filter#(s(s(X)), cons(Y, Z))s#(s(X))
primes#s#(s(0))filter#(s(s(X)), cons(Y, Z))if#(divides(s(s(X)), Y), n__filter(n__s(n__s(X)), activate(Z)), n__cons(Y, n__filter(X, n__sieve(Y))))
activate#(n__from(X))activate#(X)activate#(n__filter(X1, X2))activate#(X1)
primes#s#(0)filter#(s(s(X)), cons(Y, Z))activate#(Z)
from#(X)cons#(X, n__from(n__s(X)))if#(true, X, Y)activate#(X)
activate#(n__from(X))from#(activate(X))activate#(n__sieve(X))activate#(X)
activate#(n__s(X))s#(activate(X))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, n__from(n__s(X)))
head(cons(X, Y))Xtail(cons(X, Y))activate(Y)
if(true, X, Y)activate(X)if(false, X, Y)activate(Y)
filter(s(s(X)), cons(Y, Z))if(divides(s(s(X)), Y), n__filter(n__s(n__s(X)), activate(Z)), n__cons(Y, n__filter(X, n__sieve(Y))))sieve(cons(X, Y))cons(X, n__filter(X, n__sieve(activate(Y))))
from(X)n__from(X)s(X)n__s(X)
filter(X1, X2)n__filter(X1, X2)cons(X1, X2)n__cons(X1, X2)
sieve(X)n__sieve(X)activate(n__from(X))from(activate(X))
activate(n__s(X))s(activate(X))activate(n__filter(X1, X2))filter(activate(X1), activate(X2))
activate(n__cons(X1, X2))cons(activate(X1), X2)activate(n__sieve(X))sieve(activate(X))
activate(X)X

Original Signature

Termination of terms over the following signature is verified: sieve, n__from, true, divides, from, tail, n__s, activate, n__cons, 0, s, if, n__filter, false, primes, head, n__sieve, filter, cons

Strategy


The following SCCs where found

sieve#(cons(X, Y)) → activate#(Y)activate#(n__cons(X1, X2)) → activate#(X1)
filter#(s(s(X)), cons(Y, Z)) → activate#(Z)activate#(n__s(X)) → activate#(X)
activate#(n__filter(X1, X2)) → filter#(activate(X1), activate(X2))activate#(n__from(X)) → activate#(X)
activate#(n__filter(X1, X2)) → activate#(X1)activate#(n__sieve(X)) → activate#(X)
activate#(n__sieve(X)) → sieve#(activate(X))activate#(n__filter(X1, X2)) → activate#(X2)