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)