TIMEOUT

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (6524ms).
 | – Problem 2 was processed with processor SubtermCriterion (5ms).
 |    | – Problem 12 remains open; application of the following processors failed [DependencyGraph (4ms), PolynomialLinearRange4iUR (18ms), DependencyGraph (4ms), PolynomialLinearRange8NegiUR (20ms), DependencyGraph (4ms), ReductionPairSAT (timeout)].
 | – Problem 3 was processed with processor SubtermCriterion (1ms).
 | – Problem 4 was processed with processor SubtermCriterion (1ms).
 |    | – Problem 13 remains open; application of the following processors failed [DependencyGraph (4ms), PolynomialLinearRange4iUR (2ms), DependencyGraph (4ms), PolynomialLinearRange8NegiUR (26ms), DependencyGraph (5ms)].
 | – Problem 5 was processed with processor SubtermCriterion (1ms).
 |    | – Problem 14 remains open; application of the following processors failed [DependencyGraph (3ms), PolynomialLinearRange4iUR (17ms), DependencyGraph (5ms), PolynomialLinearRange8NegiUR (62ms), DependencyGraph (4ms)].
 | – Problem 6 was processed with processor SubtermCriterion (1ms).
 | – Problem 7 was processed with processor SubtermCriterion (3ms).
 | – Problem 8 was processed with processor SubtermCriterion (1ms).
 |    | – Problem 15 remains open; application of the following processors failed [DependencyGraph (11ms), PolynomialLinearRange4iUR (11ms), DependencyGraph (11ms), PolynomialLinearRange8NegiUR (3ms), DependencyGraph (11ms)].
 | – Problem 9 was processed with processor SubtermCriterion (1ms).
 | – Problem 10 remains open; application of the following processors failed [SubtermCriterion (0ms), DependencyGraph (878ms), PolynomialLinearRange4iUR (2000ms), DependencyGraph (921ms), PolynomialLinearRange8NegiUR (6000ms), DependencyGraph (920ms), ReductionPairSAT (42296ms)].
 | – Problem 11 was processed with processor SubtermCriterion (1ms).

The following open problems remain:



Open Dependency Pair Problem 10

Dependency Pairs

mark#(filter(X1, X2)) → mark#(X1)mark#(false) → active#(false)
mark#(head(X)) → active#(head(mark(X)))mark#(cons(X1, X2)) → active#(cons(mark(X1), X2))
active#(head(cons(X, Y))) → mark#(X)mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))
active#(if(false, X, Y)) → mark#(Y)mark#(divides(X1, X2)) → mark#(X1)
active#(if(true, X, Y)) → mark#(X)mark#(filter(X1, X2)) → mark#(X2)
mark#(tail(X)) → active#(tail(mark(X)))mark#(head(X)) → mark#(X)
active#(filter(s(s(X)), cons(Y, Z))) → mark#(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))mark#(primes) → active#(primes)
mark#(s(X)) → mark#(X)mark#(sieve(X)) → active#(sieve(mark(X)))
mark#(0) → active#(0)mark#(s(X)) → active#(s(mark(X)))
mark#(true) → active#(true)active#(sieve(cons(X, Y))) → mark#(cons(X, filter(X, sieve(Y))))
mark#(from(X)) → mark#(X)mark#(cons(X1, X2)) → mark#(X1)
mark#(filter(X1, X2)) → active#(filter(mark(X1), mark(X2)))active#(from(X)) → mark#(cons(X, from(s(X))))
mark#(from(X)) → active#(from(mark(X)))active#(primes) → mark#(sieve(from(s(s(0)))))
active#(tail(cons(X, Y))) → mark#(Y)mark#(tail(X)) → mark#(X)
mark#(if(X1, X2, X3)) → mark#(X1)mark#(divides(X1, X2)) → active#(divides(mark(X1), mark(X2)))
mark#(divides(X1, X2)) → mark#(X2)mark#(sieve(X)) → mark#(X)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

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




Open Dependency Pair Problem 12

Dependency Pairs

divides#(X1, mark(X2)) → divides#(X1, X2)divides#(X1, active(X2)) → divides#(X1, X2)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

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




Open Dependency Pair Problem 13

Dependency Pairs

cons#(X1, active(X2)) → cons#(X1, X2)cons#(X1, mark(X2)) → cons#(X1, X2)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

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




Open Dependency Pair Problem 14

Dependency Pairs

filter#(X1, active(X2)) → filter#(X1, X2)filter#(X1, mark(X2)) → filter#(X1, X2)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

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




Open Dependency Pair Problem 15

Dependency Pairs

if#(X1, mark(X2), X3) → if#(X1, X2, X3)if#(X1, X2, mark(X3)) → if#(X1, X2, X3)
if#(X1, active(X2), X3) → if#(X1, X2, X3)if#(X1, X2, active(X3)) → if#(X1, X2, X3)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

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


Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

mark#(filter(X1, X2)) → mark#(X1)mark#(cons(X1, X2)) → active#(cons(mark(X1), X2))
active#(primes) → sieve#(from(s(s(0))))mark#(divides(X1, X2)) → mark#(X1)
if#(X1, X2, active(X3)) → if#(X1, X2, X3)active#(filter(s(s(X)), cons(Y, Z))) → cons#(Y, filter(X, sieve(Y)))
active#(primes) → s#(s(0))sieve#(mark(X)) → sieve#(X)
mark#(s(X)) → s#(mark(X))active#(if(true, X, Y)) → mark#(X)
mark#(tail(X)) → active#(tail(mark(X)))active#(filter(s(s(X)), cons(Y, Z))) → filter#(X, sieve(Y))
active#(sieve(cons(X, Y))) → sieve#(Y)active#(filter(s(s(X)), cons(Y, Z))) → mark#(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))
filter#(X1, mark(X2)) → filter#(X1, X2)active#(filter(s(s(X)), cons(Y, Z))) → filter#(s(s(X)), Z)
mark#(s(X)) → mark#(X)mark#(sieve(X)) → active#(sieve(mark(X)))
mark#(true) → active#(true)active#(primes) → s#(0)
active#(sieve(cons(X, Y))) → mark#(cons(X, filter(X, sieve(Y))))mark#(from(X)) → mark#(X)
mark#(cons(X1, X2)) → mark#(X1)mark#(filter(X1, X2)) → active#(filter(mark(X1), mark(X2)))
tail#(mark(X)) → tail#(X)active#(from(X)) → mark#(cons(X, from(s(X))))
active#(from(X)) → s#(X)cons#(X1, active(X2)) → cons#(X1, X2)
mark#(from(X)) → from#(mark(X))sieve#(active(X)) → sieve#(X)
if#(X1, mark(X2), X3) → if#(X1, X2, X3)mark#(from(X)) → active#(from(mark(X)))
mark#(tail(X)) → mark#(X)if#(X1, X2, mark(X3)) → if#(X1, X2, X3)
from#(active(X)) → from#(X)divides#(mark(X1), X2) → divides#(X1, X2)
if#(mark(X1), X2, X3) → if#(X1, X2, X3)mark#(divides(X1, X2)) → divides#(mark(X1), mark(X2))
head#(active(X)) → head#(X)mark#(if(X1, X2, X3)) → mark#(X1)
mark#(divides(X1, X2)) → active#(divides(mark(X1), mark(X2)))divides#(active(X1), X2) → divides#(X1, X2)
mark#(sieve(X)) → mark#(X)mark#(false) → active#(false)
mark#(head(X)) → active#(head(mark(X)))active#(head(cons(X, Y))) → mark#(X)
mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))active#(if(false, X, Y)) → mark#(Y)
cons#(mark(X1), X2) → cons#(X1, X2)mark#(tail(X)) → tail#(mark(X))
if#(X1, active(X2), X3) → if#(X1, X2, X3)from#(mark(X)) → from#(X)
active#(sieve(cons(X, Y))) → filter#(X, sieve(Y))active#(filter(s(s(X)), cons(Y, Z))) → sieve#(Y)
mark#(filter(X1, X2)) → mark#(X2)divides#(X1, mark(X2)) → divides#(X1, X2)
mark#(head(X)) → mark#(X)active#(sieve(cons(X, Y))) → cons#(X, filter(X, sieve(Y)))
active#(filter(s(s(X)), cons(Y, Z))) → if#(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y))))tail#(active(X)) → tail#(X)
active#(from(X)) → cons#(X, from(s(X)))mark#(primes) → active#(primes)
mark#(sieve(X)) → sieve#(mark(X))filter#(mark(X1), X2) → filter#(X1, X2)
cons#(X1, mark(X2)) → cons#(X1, X2)mark#(cons(X1, X2)) → cons#(mark(X1), X2)
active#(filter(s(s(X)), cons(Y, Z))) → s#(s(X))mark#(if(X1, X2, X3)) → if#(mark(X1), X2, X3)
mark#(0) → active#(0)active#(filter(s(s(X)), cons(Y, Z))) → s#(X)
mark#(s(X)) → active#(s(mark(X)))head#(mark(X)) → head#(X)
divides#(X1, active(X2)) → divides#(X1, X2)filter#(active(X1), X2) → filter#(X1, X2)
cons#(active(X1), X2) → cons#(X1, X2)mark#(head(X)) → head#(mark(X))
if#(active(X1), X2, X3) → if#(X1, X2, X3)s#(mark(X)) → s#(X)
filter#(X1, active(X2)) → filter#(X1, X2)active#(primes) → mark#(sieve(from(s(s(0)))))
active#(tail(cons(X, Y))) → mark#(Y)active#(filter(s(s(X)), cons(Y, Z))) → divides#(s(s(X)), Y)
mark#(filter(X1, X2)) → filter#(mark(X1), mark(X2))s#(active(X)) → s#(X)
active#(primes) → from#(s(s(0)))mark#(divides(X1, X2)) → mark#(X2)
active#(from(X)) → from#(s(X))

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

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

Strategy


The following SCCs where found

filter#(X1, active(X2)) → filter#(X1, X2)filter#(X1, mark(X2)) → filter#(X1, X2)
filter#(active(X1), X2) → filter#(X1, X2)filter#(mark(X1), X2) → filter#(X1, X2)

sieve#(active(X)) → sieve#(X)sieve#(mark(X)) → sieve#(X)

from#(active(X)) → from#(X)from#(mark(X)) → from#(X)

tail#(active(X)) → tail#(X)tail#(mark(X)) → tail#(X)

if#(X1, mark(X2), X3) → if#(X1, X2, X3)if#(X1, X2, mark(X3)) → if#(X1, X2, X3)
if#(mark(X1), X2, X3) → if#(X1, X2, X3)if#(X1, active(X2), X3) → if#(X1, X2, X3)
if#(X1, X2, active(X3)) → if#(X1, X2, X3)if#(active(X1), X2, X3) → if#(X1, X2, X3)

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)

s#(mark(X)) → s#(X)s#(active(X)) → s#(X)

divides#(X1, mark(X2)) → divides#(X1, X2)divides#(X1, active(X2)) → divides#(X1, X2)
divides#(mark(X1), X2) → divides#(X1, X2)divides#(active(X1), X2) → divides#(X1, X2)

mark#(filter(X1, X2)) → mark#(X1)mark#(cons(X1, X2)) → active#(cons(mark(X1), X2))
mark#(head(X)) → active#(head(mark(X)))mark#(false) → active#(false)
mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))active#(head(cons(X, Y))) → mark#(X)
active#(if(false, X, Y)) → mark#(Y)mark#(divides(X1, X2)) → mark#(X1)
mark#(filter(X1, X2)) → mark#(X2)active#(if(true, X, Y)) → mark#(X)
mark#(tail(X)) → active#(tail(mark(X)))mark#(head(X)) → mark#(X)
mark#(primes) → active#(primes)active#(filter(s(s(X)), cons(Y, Z))) → mark#(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))
mark#(s(X)) → mark#(X)mark#(sieve(X)) → active#(sieve(mark(X)))
mark#(0) → active#(0)mark#(s(X)) → active#(s(mark(X)))
mark#(true) → active#(true)active#(sieve(cons(X, Y))) → mark#(cons(X, filter(X, sieve(Y))))
mark#(from(X)) → mark#(X)mark#(cons(X1, X2)) → mark#(X1)
mark#(filter(X1, X2)) → active#(filter(mark(X1), mark(X2)))active#(from(X)) → mark#(cons(X, from(s(X))))
active#(primes) → mark#(sieve(from(s(s(0)))))mark#(from(X)) → active#(from(mark(X)))
mark#(tail(X)) → mark#(X)active#(tail(cons(X, Y))) → mark#(Y)
mark#(if(X1, X2, X3)) → mark#(X1)mark#(divides(X1, X2)) → active#(divides(mark(X1), mark(X2)))
mark#(divides(X1, X2)) → mark#(X2)mark#(sieve(X)) → mark#(X)

head#(mark(X)) → head#(X)head#(active(X)) → head#(X)

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

divides#(X1, mark(X2)) → divides#(X1, X2)divides#(X1, active(X2)) → divides#(X1, X2)
divides#(mark(X1), X2) → divides#(X1, X2)divides#(active(X1), X2) → divides#(X1, X2)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

divides#(mark(X1), X2) → divides#(X1, X2)divides#(active(X1), X2) → divides#(X1, X2)

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

head#(mark(X)) → head#(X)head#(active(X)) → head#(X)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

head#(mark(X)) → head#(X)head#(active(X)) → head#(X)

Problem 4: 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(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

Termination of terms over the following signature is verified: sieve, true, divides, mark, from, tail, 0, s, if, active, false, primes, head, 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)

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

filter#(X1, active(X2)) → filter#(X1, X2)filter#(X1, mark(X2)) → filter#(X1, X2)
filter#(active(X1), X2) → filter#(X1, X2)filter#(mark(X1), X2) → filter#(X1, X2)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

filter#(mark(X1), X2) → filter#(X1, X2)filter#(active(X1), X2) → filter#(X1, X2)

Problem 6: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

s#(mark(X)) → s#(X)s#(active(X)) → s#(X)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

Termination of terms over the following signature is verified: sieve, true, divides, mark, from, tail, 0, s, if, active, false, primes, head, 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 7: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

sieve#(active(X)) → sieve#(X)sieve#(mark(X)) → sieve#(X)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

Termination of terms over the following signature is verified: sieve, true, divides, mark, from, tail, 0, s, if, active, false, primes, head, 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 8: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

if#(X1, mark(X2), X3) → if#(X1, X2, X3)if#(X1, X2, mark(X3)) → if#(X1, X2, X3)
if#(mark(X1), X2, X3) → if#(X1, X2, X3)if#(X1, active(X2), X3) → if#(X1, X2, X3)
if#(X1, X2, active(X3)) → if#(X1, X2, X3)if#(active(X1), X2, X3) → if#(X1, X2, X3)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

if#(mark(X1), X2, X3) → if#(X1, X2, X3)if#(active(X1), X2, X3) → if#(X1, X2, X3)

Problem 9: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

tail#(active(X)) → tail#(X)tail#(mark(X)) → tail#(X)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

tail#(active(X)) → tail#(X)tail#(mark(X)) → tail#(X)

Problem 11: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

from#(active(X)) → from#(X)from#(mark(X)) → from#(X)

Rewrite Rules

active(primes) → mark(sieve(from(s(s(0)))))active(from(X)) → mark(cons(X, from(s(X))))
active(head(cons(X, Y))) → mark(X)active(tail(cons(X, Y))) → mark(Y)
active(if(true, X, Y)) → mark(X)active(if(false, X, Y)) → mark(Y)
active(filter(s(s(X)), cons(Y, Z))) → mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))))active(sieve(cons(X, Y))) → mark(cons(X, filter(X, sieve(Y))))
mark(primes) → active(primes)mark(sieve(X)) → active(sieve(mark(X)))
mark(from(X)) → active(from(mark(X)))mark(s(X)) → active(s(mark(X)))
mark(0) → active(0)mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(head(X)) → active(head(mark(X)))mark(tail(X)) → active(tail(mark(X)))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))mark(true) → active(true)
mark(false) → active(false)mark(filter(X1, X2)) → active(filter(mark(X1), mark(X2)))
mark(divides(X1, X2)) → active(divides(mark(X1), mark(X2)))sieve(mark(X)) → sieve(X)
sieve(active(X)) → sieve(X)from(mark(X)) → from(X)
from(active(X)) → from(X)s(mark(X)) → s(X)
s(active(X)) → s(X)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)head(mark(X)) → head(X)
head(active(X)) → head(X)tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)filter(mark(X1), X2) → filter(X1, X2)
filter(X1, mark(X2)) → filter(X1, X2)filter(active(X1), X2) → filter(X1, X2)
filter(X1, active(X2)) → filter(X1, X2)divides(mark(X1), X2) → divides(X1, X2)
divides(X1, mark(X2)) → divides(X1, X2)divides(active(X1), X2) → divides(X1, X2)
divides(X1, active(X2)) → divides(X1, X2)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

from#(active(X)) → from#(X)from#(mark(X)) → from#(X)