TIMEOUT

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

The following DP Processors were used


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)].

The following open problems remain:



Open Dependency Pair Problem 3

Dependency Pairs

from#(X)from#(s(X))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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




Open Dependency Pair Problem 4

Dependency Pairs

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))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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


Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

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))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


The following SCCs where found

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))

Problem 2: PolynomialLinearRange8NegiUR



Dependency Pair Problem

Dependency Pairs

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))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


Polynomial Interpretation

Improved Usable rules

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)Yif(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)

Problem 4: ForwardNarrowing



Dependency Pair Problem

Dependency Pairs

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))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


The right-hand side of the rule sieve#(cons(X, Y)) → filter#(X, sieve(Y)) is narrowed to the following relevant and irrelevant terms (a narrowing is irrelevant if by dropping it the correctness (and completeness) of the processor is not influenced).
Relevant TermsIrrelevant Terms
filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) 
Thus, the rule sieve#(cons(X, Y)) → filter#(X, sieve(Y)) is replaced by the following rules:
sieve#(cons(X, cons(_x32, _x31))) → filter#(X, cons(_x32, filter(_x32, sieve(_x31))))

Problem 5: ForwardNarrowing



Dependency Pair Problem

Dependency Pairs

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))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


The right-hand side of the rule filter#(s(s(X)), cons(Y, Z)) → filter#(X, sieve(Y)) is narrowed to the following relevant and irrelevant terms (a narrowing is irrelevant if by dropping it the correctness (and completeness) of the processor is not influenced).
Relevant TermsIrrelevant Terms
filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) 
Thus, the rule filter#(s(s(X)), cons(Y, Z)) → filter#(X, sieve(Y)) is replaced by the following rules:
filter#(s(s(X)), cons(cons(_x32, _x31), Z)) → filter#(X, cons(_x32, filter(_x32, sieve(_x31))))

Problem 6: ForwardInstantiation



Dependency Pair Problem

Dependency Pairs

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))))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


Instantiation

For all potential successors l → r of the rule filter#(s(s(X)), cons(Y, Z)) → sieve#(Y) on dependency pair chains it holds that: Thus, filter#(s(s(X)), cons(Y, Z)) → sieve#(Y) is replaced by instances determined through the above matching. These instances are:
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))

Instantiation

For all potential successors l → r of the rule sieve#(cons(X, Y)) → sieve#(Y) on dependency pair chains it holds that: Thus, sieve#(cons(X, Y)) → sieve#(Y) is replaced by instances determined through the above matching. These instances are:
sieve#(cons(X, cons(X, cons(_x32, _x31)))) → sieve#(cons(X, cons(_x32, _x31)))sieve#(cons(X, cons(_X, _Y))) → sieve#(cons(_X, _Y))

Problem 8: ForwardInstantiation



Dependency Pair Problem

Dependency Pairs

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))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


Instantiation

For all potential successors l → r of the rule sieve#(cons(X, cons(X, cons(_x32, _x31)))) → sieve#(cons(X, cons(_x32, _x31))) on dependency pair chains it holds that: Thus, sieve#(cons(X, cons(X, cons(_x32, _x31)))) → sieve#(cons(X, cons(_x32, _x31))) is replaced by instances determined through the above matching. These instances are:
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))))

Instantiation

For all potential successors l → r of the rule sieve#(cons(X, cons(_X, _Y))) → sieve#(cons(_X, _Y)) on dependency pair chains it holds that: Thus, sieve#(cons(X, cons(_X, _Y))) → sieve#(cons(_X, _Y)) is replaced by instances determined through the above matching. These instances are:
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))))

Instantiation

For all potential successors l → r of the rule filter#(s(s(X)), cons(cons(X, cons(_x32, _x31)), Z)) → sieve#(cons(X, cons(_x32, _x31))) on dependency pair chains it holds that: Thus, filter#(s(s(X)), cons(cons(X, cons(_x32, _x31)), Z)) → sieve#(cons(X, cons(_x32, _x31))) is replaced by instances determined through the above matching. These instances are:
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)))

Instantiation

For all potential successors l → r of the rule filter#(s(s(X)), cons(cons(_X, _Y), Z)) → sieve#(cons(_X, _Y)) on dependency pair chains it holds that: Thus, filter#(s(s(X)), cons(cons(_X, _Y), Z)) → sieve#(cons(_X, _Y)) is replaced by instances determined through the above matching. These instances are:
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)))

Problem 10: Propagation



Dependency Pair Problem

Dependency Pairs

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))))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


The dependency pairs filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, _x31))), Z)) → sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) and sieve#(cons(_X, cons(_X, cons(_x32, _x31)))) → sieve#(cons(_X, cons(_x32, _x31))) are consolidated into the rule filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, _x31))), Z)) → sieve#(cons(_X, cons(_x32, _x31))) .

This is possible as


Summary

Removed Dependency PairsAdded 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))) 

Problem 11: BackwardInstantiation



Dependency Pair Problem

Dependency Pairs

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))))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


Instantiation

For all potential predecessors l → r of the rule sieve#(cons(X, cons(_x32, _x31))) → filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) on dependency pair chains it holds that: Thus, sieve#(cons(X, cons(_x32, _x31))) → filter#(X, cons(_x32, filter(_x32, sieve(_x31)))) is replaced by instances determined through the above matching. These instances are:
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)))))

Problem 13: ForwardInstantiation



Dependency Pair Problem

Dependency Pairs

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)))))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


Instantiation

For all potential successors l → r of the rule filter#(s(s(X)), cons(cons(_X, cons(___X, ___Y)), Z)) → sieve#(cons(_X, cons(___X, ___Y))) on dependency pair chains it holds that: Thus, filter#(s(s(X)), cons(cons(_X, cons(___X, ___Y)), Z)) → sieve#(cons(_X, cons(___X, ___Y))) is replaced by instances determined through the above matching. These instances are:
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))))

Instantiation

For all potential successors l → r of the rule filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, _x31))), Z)) → sieve#(cons(_X, cons(_x32, _x31))) on dependency pair chains it holds that: Thus, filter#(s(s(_X)), cons(cons(_X, cons(_X, cons(_x32, _x31))), Z)) → sieve#(cons(_X, cons(_x32, _x31))) is replaced by instances determined through the above matching. These instances are:
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))))

Instantiation

For all potential successors l → r of the rule sieve#(cons(X, cons(_X, cons(___X, ___Y)))) → sieve#(cons(_X, cons(___X, ___Y))) on dependency pair chains it holds that: Thus, sieve#(cons(X, cons(_X, cons(___X, ___Y)))) → sieve#(cons(_X, cons(___X, ___Y))) is replaced by instances determined through the above matching. These instances are:
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))))

Instantiation

For all potential successors l → r of the rule sieve#(cons(X, cons(X, cons(_x32, _x31)))) → sieve#(cons(X, cons(_x32, _x31))) on dependency pair chains it holds that: Thus, sieve#(cons(X, cons(X, cons(_x32, _x31)))) → sieve#(cons(X, cons(_x32, _x31))) is replaced by instances determined through the above matching. These instances are:
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))))

Instantiation

For all potential successors l → r of the rule filter#(s(s(_X)), cons(cons(_X, cons(_x32, _x31)), Z)) → sieve#(cons(_X, cons(_x32, _x31))) on dependency pair chains it holds that: Thus, filter#(s(s(_X)), cons(cons(_X, cons(_x32, _x31)), Z)) → sieve#(cons(_X, cons(_x32, _x31))) is replaced by instances determined through the above matching. These instances are:
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)))))

Instantiation

For all potential successors l → r of the rule filter#(s(s(X)), cons(cons(X, cons(_x32, _x31)), Z)) → sieve#(cons(X, cons(_x32, _x31))) on dependency pair chains it holds that: Thus, filter#(s(s(X)), cons(cons(X, cons(_x32, _x31)), Z)) → sieve#(cons(X, cons(_x32, _x31))) is replaced by instances determined through the above matching. These instances are:
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)))))

Problem 14: Propagation



Dependency Pair Problem

Dependency Pairs

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))))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


The 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))))) and sieve#(cons(_x32, cons(_x32, cons(_x32, cons(__x32, __x31))))) → sieve#(cons(_x32, cons(_x32, cons(__x32, __x31)))) are consolidated into the rule 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)))) .

This is possible as


Summary

Removed Dependency PairsAdded 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)))) 

Problem 3: BackwardInstantiation



Dependency Pair Problem

Dependency Pairs

from#(X)from#(s(X))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


Instantiation

For all potential predecessors l → r of the rule from#(X) → from#(s(X)) on dependency pair chains it holds that: Thus, from#(X) → from#(s(X)) is replaced by instances determined through the above matching. These instances are:
from#(s(_X)) → from#(s(s(_X)))

Problem 7: BackwardInstantiation



Dependency Pair Problem

Dependency Pairs

from#(s(_X))from#(s(s(_X)))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


Instantiation

For all potential predecessors l → r of the rule from#(s(_X)) → from#(s(s(_X))) on dependency pair chains it holds that: Thus, from#(s(_X)) → from#(s(s(_X))) is replaced by instances determined through the above matching. These instances are:
from#(s(s(__X))) → from#(s(s(s(__X))))

Problem 9: BackwardInstantiation



Dependency Pair Problem

Dependency Pairs

from#(s(s(__X)))from#(s(s(s(__X))))

Rewrite Rules

primessieve(from(s(s(0))))from(X)cons(X, from(s(X)))
head(cons(X, Y))Xtail(cons(X, Y))Y
if(true, X, Y)Xif(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)))

Original Signature

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

Strategy


Instantiation

For all potential predecessors l → r of the rule from#(s(s(__X))) → from#(s(s(s(__X)))) on dependency pair chains it holds that: Thus, from#(s(s(__X))) → from#(s(s(s(__X)))) is replaced by instances determined through the above matching. These instances are:
from#(s(s(s(___X)))) → from#(s(s(s(s(___X)))))