YES

The TRS could be proven terminating. The proof took 43351 ms.

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (695ms).
 | – Problem 2 was processed with processor SubtermCriterion (0ms).
 |    | – Problem 9 was processed with processor SubtermCriterion (0ms).
 | – Problem 3 was processed with processor SubtermCriterion (1ms).
 | – Problem 4 was processed with processor PolynomialLinearRange4 (642ms).
 |    | – Problem 12 was processed with processor PolynomialLinearRange4 (261ms).
 |    |    | – Problem 13 was processed with processor PolynomialLinearRange4 (269ms).
 |    |    |    | – Problem 14 was processed with processor PolynomialLinearRange4 (154ms).
 |    |    |    |    | – Problem 15 was processed with processor PolynomialLinearRange4 (184ms).
 |    |    |    |    |    | – Problem 16 was processed with processor PolynomialLinearRange4 (148ms).
 |    |    |    |    |    |    | – Problem 17 was processed with processor PolynomialLinearRange4 (138ms).
 |    |    |    |    |    |    |    | – Problem 18 was processed with processor PolynomialLinearRange4 (134ms).
 |    |    |    |    |    |    |    |    | – Problem 19 was processed with processor PolynomialLinearRange4 (131ms).
 |    |    |    |    |    |    |    |    |    | – Problem 20 was processed with processor PolynomialLinearRange4 (128ms).
 | – Problem 5 was processed with processor SubtermCriterion (0ms).
 |    | – Problem 10 was processed with processor SubtermCriterion (0ms).
 | – Problem 6 was processed with processor SubtermCriterion (1ms).
 |    | – Problem 11 was processed with processor SubtermCriterion (1ms).
 | – Problem 7 was processed with processor SubtermCriterion (0ms).
 | – Problem 8 was processed with processor SubtermCriterion (0ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

mark#(cons(X1, X2)) → active#(cons(mark(X1), X2))active#(fst(0, Z)) → mark#(nil)
add#(X1, mark(X2)) → add#(X1, X2)active#(add(s(X), Y)) → mark#(s(add(X, Y)))
mark#(fst(X1, X2)) → mark#(X2)active#(fst(s(X), cons(Y, Z))) → fst#(X, Z)
mark#(fst(X1, X2)) → active#(fst(mark(X1), mark(X2)))mark#(add(X1, X2)) → mark#(X2)
active#(len(cons(X, Z))) → len#(Z)mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))
active#(fst(s(X), cons(Y, Z))) → mark#(cons(Y, fst(X, Z)))mark#(add(X1, X2)) → mark#(X1)
active#(len(nil)) → mark#(0)fst#(active(X1), X2) → fst#(X1, X2)
mark#(from(X)) → mark#(X)mark#(cons(X1, X2)) → mark#(X1)
mark#(len(X)) → len#(mark(X))mark#(len(X)) → active#(len(mark(X)))
active#(add(0, X)) → mark#(X)add#(mark(X1), X2) → add#(X1, X2)
active#(from(X)) → mark#(cons(X, from(s(X))))mark#(fst(X1, X2)) → mark#(X1)
mark#(fst(X1, X2)) → fst#(mark(X1), mark(X2))mark#(s(X)) → active#(s(X))
active#(from(X)) → s#(X)fst#(X1, mark(X2)) → fst#(X1, X2)
cons#(X1, active(X2)) → cons#(X1, X2)active#(add(s(X), Y)) → add#(X, Y)
mark#(from(X)) → from#(mark(X))len#(mark(X)) → len#(X)
mark#(from(X)) → active#(from(mark(X)))mark#(add(X1, X2)) → add#(mark(X1), mark(X2))
from#(active(X)) → from#(X)add#(active(X1), X2) → add#(X1, X2)
mark#(len(X)) → mark#(X)active#(len(cons(X, Z))) → s#(len(Z))
cons#(mark(X1), X2) → cons#(X1, X2)from#(mark(X)) → from#(X)
mark#(nil) → active#(nil)fst#(X1, active(X2)) → fst#(X1, X2)
active#(add(s(X), Y)) → s#(add(X, Y))active#(from(X)) → cons#(X, from(s(X)))
add#(X1, active(X2)) → add#(X1, X2)cons#(X1, mark(X2)) → cons#(X1, X2)
mark#(cons(X1, X2)) → cons#(mark(X1), X2)mark#(0) → active#(0)
cons#(active(X1), X2) → cons#(X1, X2)active#(len(cons(X, Z))) → mark#(s(len(Z)))
s#(mark(X)) → s#(X)mark#(s(X)) → s#(X)
s#(active(X)) → s#(X)active#(fst(s(X), cons(Y, Z))) → cons#(Y, fst(X, Z))
fst#(mark(X1), X2) → fst#(X1, X2)len#(active(X)) → len#(X)
active#(from(X)) → from#(s(X))

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, from, len, add, nil, cons

Strategy


The following SCCs where found

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

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

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

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

len#(mark(X)) → len#(X)len#(active(X)) → len#(X)

mark#(cons(X1, X2)) → active#(cons(mark(X1), X2))mark#(from(X)) → mark#(X)
mark#(cons(X1, X2)) → mark#(X1)active#(add(s(X), Y)) → mark#(s(add(X, Y)))
active#(add(0, X)) → mark#(X)mark#(len(X)) → active#(len(mark(X)))
active#(len(cons(X, Z))) → mark#(s(len(Z)))mark#(fst(X1, X2)) → mark#(X1)
active#(from(X)) → mark#(cons(X, from(s(X))))mark#(fst(X1, X2)) → mark#(X2)
mark#(s(X)) → active#(s(X))mark#(from(X)) → active#(from(mark(X)))
mark#(fst(X1, X2)) → active#(fst(mark(X1), mark(X2)))mark#(len(X)) → mark#(X)
mark#(add(X1, X2)) → mark#(X2)mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))
mark#(add(X1, X2)) → mark#(X1)active#(fst(s(X), cons(Y, Z))) → mark#(cons(Y, fst(X, Z)))

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

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, from, len, add, nil, cons

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 9: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, len, from, add, cons, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, from, len, add, nil, 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 4: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(cons(X1, X2)) → active#(cons(mark(X1), X2))mark#(from(X)) → mark#(X)
mark#(cons(X1, X2)) → mark#(X1)active#(add(s(X), Y)) → mark#(s(add(X, Y)))
mark#(len(X)) → active#(len(mark(X)))active#(add(0, X)) → mark#(X)
active#(from(X)) → mark#(cons(X, from(s(X))))mark#(fst(X1, X2)) → mark#(X1)
active#(len(cons(X, Z))) → mark#(s(len(Z)))mark#(s(X)) → active#(s(X))
mark#(fst(X1, X2)) → mark#(X2)mark#(from(X)) → active#(from(mark(X)))
mark#(fst(X1, X2)) → active#(fst(mark(X1), mark(X2)))mark#(len(X)) → mark#(X)
mark#(add(X1, X2)) → mark#(X2)mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))
mark#(add(X1, X2)) → mark#(X1)active#(fst(s(X), cons(Y, Z))) → mark#(cons(Y, fst(X, Z)))

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, from, len, add, nil, cons

Strategy


Polynomial Interpretation

Standard Usable rules

cons(active(X1), X2) → cons(X1, X2)from(mark(X)) → from(X)
fst(active(X1), X2) → fst(X1, X2)mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(s(X)) → active(s(X))add(X1, mark(X2)) → add(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)active(len(cons(X, Z))) → mark(s(len(Z)))
mark(from(X)) → active(from(mark(X)))fst(X1, mark(X2)) → fst(X1, X2)
add(X1, active(X2)) → add(X1, X2)active(from(X)) → mark(cons(X, from(s(X))))
fst(X1, active(X2)) → fst(X1, X2)add(mark(X1), X2) → add(X1, X2)
mark(nil) → active(nil)mark(0) → active(0)
s(active(X)) → s(X)cons(X1, active(X2)) → cons(X1, X2)
from(active(X)) → from(X)mark(len(X)) → active(len(mark(X)))
len(active(X)) → len(X)active(fst(0, Z)) → mark(nil)
add(active(X1), X2) → add(X1, X2)fst(mark(X1), X2) → fst(X1, X2)
len(mark(X)) → len(X)active(add(s(X), Y)) → mark(s(add(X, Y)))
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))cons(mark(X1), X2) → cons(X1, X2)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
active(add(0, X)) → mark(X)s(mark(X)) → s(X)
active(len(nil)) → mark(0)

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

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

Problem 12: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(from(X)) → mark#(X)mark#(cons(X1, X2)) → mark#(X1)
active#(add(s(X), Y)) → mark#(s(add(X, Y)))mark#(len(X)) → active#(len(mark(X)))
active#(add(0, X)) → mark#(X)active#(from(X)) → mark#(cons(X, from(s(X))))
mark#(fst(X1, X2)) → mark#(X1)active#(len(cons(X, Z))) → mark#(s(len(Z)))
mark#(s(X)) → active#(s(X))mark#(fst(X1, X2)) → mark#(X2)
mark#(from(X)) → active#(from(mark(X)))mark#(fst(X1, X2)) → active#(fst(mark(X1), mark(X2)))
mark#(add(X1, X2)) → mark#(X2)mark#(len(X)) → mark#(X)
mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))active#(fst(s(X), cons(Y, Z))) → mark#(cons(Y, fst(X, Z)))
mark#(add(X1, X2)) → mark#(X1)

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, len, from, add, cons, nil

Strategy


Polynomial Interpretation

Standard Usable rules

cons(active(X1), X2) → cons(X1, X2)from(mark(X)) → from(X)
fst(active(X1), X2) → fst(X1, X2)mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(s(X)) → active(s(X))add(X1, mark(X2)) → add(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)active(len(cons(X, Z))) → mark(s(len(Z)))
mark(from(X)) → active(from(mark(X)))fst(X1, mark(X2)) → fst(X1, X2)
add(X1, active(X2)) → add(X1, X2)active(from(X)) → mark(cons(X, from(s(X))))
fst(X1, active(X2)) → fst(X1, X2)add(mark(X1), X2) → add(X1, X2)
mark(nil) → active(nil)mark(0) → active(0)
s(active(X)) → s(X)cons(X1, active(X2)) → cons(X1, X2)
from(active(X)) → from(X)mark(len(X)) → active(len(mark(X)))
len(active(X)) → len(X)active(fst(0, Z)) → mark(nil)
add(active(X1), X2) → add(X1, X2)fst(mark(X1), X2) → fst(X1, X2)
len(mark(X)) → len(X)active(add(s(X), Y)) → mark(s(add(X, Y)))
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))cons(mark(X1), X2) → cons(X1, X2)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
active(add(0, X)) → mark(X)s(mark(X)) → s(X)
active(len(nil)) → mark(0)

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

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

Problem 13: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(from(X)) → mark#(X)mark#(cons(X1, X2)) → mark#(X1)
active#(add(s(X), Y)) → mark#(s(add(X, Y)))mark#(len(X)) → active#(len(mark(X)))
active#(add(0, X)) → mark#(X)active#(from(X)) → mark#(cons(X, from(s(X))))
mark#(fst(X1, X2)) → mark#(X1)active#(len(cons(X, Z))) → mark#(s(len(Z)))
mark#(fst(X1, X2)) → mark#(X2)mark#(from(X)) → active#(from(mark(X)))
mark#(fst(X1, X2)) → active#(fst(mark(X1), mark(X2)))mark#(add(X1, X2)) → mark#(X2)
mark#(len(X)) → mark#(X)mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))
mark#(add(X1, X2)) → mark#(X1)active#(fst(s(X), cons(Y, Z))) → mark#(cons(Y, fst(X, Z)))

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, from, len, add, nil, cons

Strategy


Polynomial Interpretation

Standard Usable rules

cons(active(X1), X2) → cons(X1, X2)from(mark(X)) → from(X)
fst(active(X1), X2) → fst(X1, X2)mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(s(X)) → active(s(X))add(X1, mark(X2)) → add(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)active(len(cons(X, Z))) → mark(s(len(Z)))
mark(from(X)) → active(from(mark(X)))fst(X1, mark(X2)) → fst(X1, X2)
add(X1, active(X2)) → add(X1, X2)active(from(X)) → mark(cons(X, from(s(X))))
fst(X1, active(X2)) → fst(X1, X2)add(mark(X1), X2) → add(X1, X2)
mark(nil) → active(nil)mark(0) → active(0)
s(active(X)) → s(X)cons(X1, active(X2)) → cons(X1, X2)
from(active(X)) → from(X)mark(len(X)) → active(len(mark(X)))
len(active(X)) → len(X)active(fst(0, Z)) → mark(nil)
add(active(X1), X2) → add(X1, X2)fst(mark(X1), X2) → fst(X1, X2)
len(mark(X)) → len(X)active(add(s(X), Y)) → mark(s(add(X, Y)))
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))cons(mark(X1), X2) → cons(X1, X2)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
active(add(0, X)) → mark(X)s(mark(X)) → s(X)
active(len(nil)) → mark(0)

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

active#(len(cons(X, Z))) → mark#(s(len(Z)))mark#(len(X)) → mark#(X)
active#(fst(s(X), cons(Y, Z))) → mark#(cons(Y, fst(X, Z)))

Problem 14: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(from(X)) → mark#(X)mark#(cons(X1, X2)) → mark#(X1)
active#(add(s(X), Y)) → mark#(s(add(X, Y)))mark#(len(X)) → active#(len(mark(X)))
active#(add(0, X)) → mark#(X)active#(from(X)) → mark#(cons(X, from(s(X))))
mark#(fst(X1, X2)) → mark#(X1)mark#(fst(X1, X2)) → mark#(X2)
mark#(from(X)) → active#(from(mark(X)))mark#(fst(X1, X2)) → active#(fst(mark(X1), mark(X2)))
mark#(add(X1, X2)) → mark#(X2)mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))
mark#(add(X1, X2)) → mark#(X1)

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, len, from, add, cons, nil

Strategy


Polynomial Interpretation

Standard Usable rules

cons(active(X1), X2) → cons(X1, X2)from(mark(X)) → from(X)
fst(active(X1), X2) → fst(X1, X2)mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(s(X)) → active(s(X))add(X1, mark(X2)) → add(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)active(len(cons(X, Z))) → mark(s(len(Z)))
mark(from(X)) → active(from(mark(X)))fst(X1, mark(X2)) → fst(X1, X2)
add(X1, active(X2)) → add(X1, X2)active(from(X)) → mark(cons(X, from(s(X))))
fst(X1, active(X2)) → fst(X1, X2)add(mark(X1), X2) → add(X1, X2)
mark(nil) → active(nil)mark(0) → active(0)
s(active(X)) → s(X)cons(X1, active(X2)) → cons(X1, X2)
from(active(X)) → from(X)mark(len(X)) → active(len(mark(X)))
len(active(X)) → len(X)active(fst(0, Z)) → mark(nil)
add(active(X1), X2) → add(X1, X2)fst(mark(X1), X2) → fst(X1, X2)
len(mark(X)) → len(X)active(add(s(X), Y)) → mark(s(add(X, Y)))
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))cons(mark(X1), X2) → cons(X1, X2)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
active(add(0, X)) → mark(X)s(mark(X)) → s(X)
active(len(nil)) → mark(0)

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

mark#(len(X)) → active#(len(mark(X)))

Problem 15: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(from(X)) → active#(from(mark(X)))mark#(from(X)) → mark#(X)
mark#(fst(X1, X2)) → active#(fst(mark(X1), mark(X2)))mark#(cons(X1, X2)) → mark#(X1)
mark#(add(X1, X2)) → mark#(X2)active#(add(s(X), Y)) → mark#(s(add(X, Y)))
active#(add(0, X)) → mark#(X)mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))
mark#(fst(X1, X2)) → mark#(X1)active#(from(X)) → mark#(cons(X, from(s(X))))
mark#(add(X1, X2)) → mark#(X1)mark#(fst(X1, X2)) → mark#(X2)

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, from, len, add, nil, cons

Strategy


Polynomial Interpretation

Standard Usable rules

cons(active(X1), X2) → cons(X1, X2)from(mark(X)) → from(X)
fst(active(X1), X2) → fst(X1, X2)mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(s(X)) → active(s(X))add(X1, mark(X2)) → add(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)active(len(cons(X, Z))) → mark(s(len(Z)))
mark(from(X)) → active(from(mark(X)))fst(X1, mark(X2)) → fst(X1, X2)
add(X1, active(X2)) → add(X1, X2)active(from(X)) → mark(cons(X, from(s(X))))
fst(X1, active(X2)) → fst(X1, X2)add(mark(X1), X2) → add(X1, X2)
mark(nil) → active(nil)mark(0) → active(0)
s(active(X)) → s(X)cons(X1, active(X2)) → cons(X1, X2)
from(active(X)) → from(X)mark(len(X)) → active(len(mark(X)))
len(active(X)) → len(X)active(fst(0, Z)) → mark(nil)
add(active(X1), X2) → add(X1, X2)len(mark(X)) → len(X)
fst(mark(X1), X2) → fst(X1, X2)active(add(s(X), Y)) → mark(s(add(X, Y)))
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))cons(mark(X1), X2) → cons(X1, X2)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
active(add(0, X)) → mark(X)s(mark(X)) → s(X)
active(len(nil)) → mark(0)

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

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

Problem 16: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(from(X)) → active#(from(mark(X)))mark#(from(X)) → mark#(X)
mark#(cons(X1, X2)) → mark#(X1)active#(add(s(X), Y)) → mark#(s(add(X, Y)))
mark#(add(X1, X2)) → mark#(X2)active#(add(0, X)) → mark#(X)
mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))active#(from(X)) → mark#(cons(X, from(s(X))))
mark#(fst(X1, X2)) → mark#(X1)mark#(add(X1, X2)) → mark#(X1)
mark#(fst(X1, X2)) → mark#(X2)

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, len, from, add, cons, nil

Strategy


Polynomial Interpretation

Standard Usable rules

cons(active(X1), X2) → cons(X1, X2)from(mark(X)) → from(X)
fst(active(X1), X2) → fst(X1, X2)mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(s(X)) → active(s(X))add(X1, mark(X2)) → add(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)active(len(cons(X, Z))) → mark(s(len(Z)))
mark(from(X)) → active(from(mark(X)))fst(X1, mark(X2)) → fst(X1, X2)
add(X1, active(X2)) → add(X1, X2)fst(X1, active(X2)) → fst(X1, X2)
active(from(X)) → mark(cons(X, from(s(X))))add(mark(X1), X2) → add(X1, X2)
mark(nil) → active(nil)s(active(X)) → s(X)
mark(0) → active(0)cons(X1, active(X2)) → cons(X1, X2)
from(active(X)) → from(X)mark(len(X)) → active(len(mark(X)))
len(active(X)) → len(X)active(fst(0, Z)) → mark(nil)
add(active(X1), X2) → add(X1, X2)fst(mark(X1), X2) → fst(X1, X2)
len(mark(X)) → len(X)active(add(s(X), Y)) → mark(s(add(X, Y)))
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))cons(mark(X1), X2) → cons(X1, X2)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
active(add(0, X)) → mark(X)s(mark(X)) → s(X)
active(len(nil)) → mark(0)

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

mark#(from(X)) → mark#(X)mark#(cons(X1, X2)) → mark#(X1)
mark#(fst(X1, X2)) → mark#(X1)mark#(fst(X1, X2)) → mark#(X2)

Problem 17: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(from(X)) → active#(from(mark(X)))mark#(add(X1, X2)) → mark#(X2)
active#(add(s(X), Y)) → mark#(s(add(X, Y)))active#(add(0, X)) → mark#(X)
mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))active#(from(X)) → mark#(cons(X, from(s(X))))
mark#(add(X1, X2)) → mark#(X1)

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, from, len, add, nil, cons

Strategy


Polynomial Interpretation

Standard Usable rules

cons(active(X1), X2) → cons(X1, X2)from(mark(X)) → from(X)
fst(active(X1), X2) → fst(X1, X2)mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(s(X)) → active(s(X))add(X1, mark(X2)) → add(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)active(len(cons(X, Z))) → mark(s(len(Z)))
mark(from(X)) → active(from(mark(X)))fst(X1, mark(X2)) → fst(X1, X2)
add(X1, active(X2)) → add(X1, X2)fst(X1, active(X2)) → fst(X1, X2)
active(from(X)) → mark(cons(X, from(s(X))))add(mark(X1), X2) → add(X1, X2)
mark(nil) → active(nil)s(active(X)) → s(X)
mark(0) → active(0)cons(X1, active(X2)) → cons(X1, X2)
from(active(X)) → from(X)mark(len(X)) → active(len(mark(X)))
len(active(X)) → len(X)active(fst(0, Z)) → mark(nil)
add(active(X1), X2) → add(X1, X2)fst(mark(X1), X2) → fst(X1, X2)
len(mark(X)) → len(X)active(add(s(X), Y)) → mark(s(add(X, Y)))
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))cons(mark(X1), X2) → cons(X1, X2)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
active(add(0, X)) → mark(X)s(mark(X)) → s(X)
active(len(nil)) → mark(0)

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

active#(add(0, X)) → mark#(X)

Problem 18: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(from(X)) → active#(from(mark(X)))active#(add(s(X), Y)) → mark#(s(add(X, Y)))
mark#(add(X1, X2)) → mark#(X2)mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))
active#(from(X)) → mark#(cons(X, from(s(X))))mark#(add(X1, X2)) → mark#(X1)

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, len, from, add, cons, nil

Strategy


Polynomial Interpretation

Standard Usable rules

cons(active(X1), X2) → cons(X1, X2)from(mark(X)) → from(X)
fst(active(X1), X2) → fst(X1, X2)mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(s(X)) → active(s(X))add(X1, mark(X2)) → add(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)active(len(cons(X, Z))) → mark(s(len(Z)))
mark(from(X)) → active(from(mark(X)))fst(X1, mark(X2)) → fst(X1, X2)
add(X1, active(X2)) → add(X1, X2)fst(X1, active(X2)) → fst(X1, X2)
active(from(X)) → mark(cons(X, from(s(X))))add(mark(X1), X2) → add(X1, X2)
mark(nil) → active(nil)s(active(X)) → s(X)
mark(0) → active(0)cons(X1, active(X2)) → cons(X1, X2)
from(active(X)) → from(X)mark(len(X)) → active(len(mark(X)))
len(active(X)) → len(X)active(fst(0, Z)) → mark(nil)
add(active(X1), X2) → add(X1, X2)fst(mark(X1), X2) → fst(X1, X2)
len(mark(X)) → len(X)active(add(s(X), Y)) → mark(s(add(X, Y)))
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))cons(mark(X1), X2) → cons(X1, X2)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
active(add(0, X)) → mark(X)s(mark(X)) → s(X)
active(len(nil)) → mark(0)

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

active#(from(X)) → mark#(cons(X, from(s(X))))

Problem 19: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(from(X)) → active#(from(mark(X)))mark#(add(X1, X2)) → mark#(X2)
active#(add(s(X), Y)) → mark#(s(add(X, Y)))mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))
mark#(add(X1, X2)) → mark#(X1)

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, from, len, add, nil, cons

Strategy


Polynomial Interpretation

Standard Usable rules

cons(active(X1), X2) → cons(X1, X2)from(mark(X)) → from(X)
fst(active(X1), X2) → fst(X1, X2)mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(s(X)) → active(s(X))add(X1, mark(X2)) → add(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)active(len(cons(X, Z))) → mark(s(len(Z)))
mark(from(X)) → active(from(mark(X)))fst(X1, mark(X2)) → fst(X1, X2)
add(X1, active(X2)) → add(X1, X2)fst(X1, active(X2)) → fst(X1, X2)
active(from(X)) → mark(cons(X, from(s(X))))add(mark(X1), X2) → add(X1, X2)
mark(nil) → active(nil)s(active(X)) → s(X)
mark(0) → active(0)cons(X1, active(X2)) → cons(X1, X2)
from(active(X)) → from(X)mark(len(X)) → active(len(mark(X)))
len(active(X)) → len(X)active(fst(0, Z)) → mark(nil)
add(active(X1), X2) → add(X1, X2)len(mark(X)) → len(X)
fst(mark(X1), X2) → fst(X1, X2)active(add(s(X), Y)) → mark(s(add(X, Y)))
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))cons(mark(X1), X2) → cons(X1, X2)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
active(add(0, X)) → mark(X)s(mark(X)) → s(X)
active(len(nil)) → mark(0)

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

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

Problem 20: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

active#(add(s(X), Y)) → mark#(s(add(X, Y)))mark#(add(X1, X2)) → mark#(X2)
mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))mark#(add(X1, X2)) → mark#(X1)

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, len, from, add, cons, nil

Strategy


Polynomial Interpretation

Standard Usable rules

cons(active(X1), X2) → cons(X1, X2)from(mark(X)) → from(X)
fst(active(X1), X2) → fst(X1, X2)mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(s(X)) → active(s(X))add(X1, mark(X2)) → add(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)active(len(cons(X, Z))) → mark(s(len(Z)))
mark(from(X)) → active(from(mark(X)))fst(X1, mark(X2)) → fst(X1, X2)
add(X1, active(X2)) → add(X1, X2)fst(X1, active(X2)) → fst(X1, X2)
active(from(X)) → mark(cons(X, from(s(X))))add(mark(X1), X2) → add(X1, X2)
mark(nil) → active(nil)s(active(X)) → s(X)
mark(0) → active(0)cons(X1, active(X2)) → cons(X1, X2)
from(active(X)) → from(X)mark(len(X)) → active(len(mark(X)))
len(active(X)) → len(X)active(fst(0, Z)) → mark(nil)
add(active(X1), X2) → add(X1, X2)len(mark(X)) → len(X)
fst(mark(X1), X2) → fst(X1, X2)active(add(s(X), Y)) → mark(s(add(X, Y)))
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))cons(mark(X1), X2) → cons(X1, X2)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
active(add(0, X)) → mark(X)s(mark(X)) → s(X)
active(len(nil)) → mark(0)

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

mark#(add(X1, X2)) → mark#(X2)active#(add(s(X), Y)) → mark#(s(add(X, Y)))
mark#(add(X1, X2)) → active#(add(mark(X1), mark(X2)))mark#(add(X1, X2)) → mark#(X1)

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, from, len, add, nil, 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 10: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, len, from, add, cons, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 6: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, from, len, add, nil, cons

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 11: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, len, from, add, cons, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 7: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

len#(mark(X)) → len#(X)len#(active(X)) → len#(X)

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, from, len, add, nil, cons

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

len#(mark(X)) → len#(X)len#(active(X)) → len#(X)

Problem 8: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(fst(0, Z)) → mark(nil)active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)mark(nil) → active(nil)
mark(s(X)) → active(s(X))mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)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)from(mark(X)) → from(X)
from(active(X)) → from(X)add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)len(mark(X)) → len(X)
len(active(X)) → len(X)

Original Signature

Termination of terms over the following signature is verified: fst, 0, s, active, mark, from, len, add, nil, 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)