YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (1272ms).
 | – Problem 2 was processed with processor SubtermCriterion (1ms).
 |    | – Problem 13 was processed with processor SubtermCriterion (0ms).
 | – Problem 3 was processed with processor SubtermCriterion (0ms).
 |    | – Problem 14 was processed with processor SubtermCriterion (1ms).
 | – Problem 4 was processed with processor SubtermCriterion (1ms).
 | – Problem 5 was processed with processor PolynomialLinearRange4iUR (1939ms).
 |    | – Problem 15 was processed with processor PolynomialLinearRange4iUR (1316ms).
 | – Problem 6 was processed with processor SubtermCriterion (0ms).
 | – Problem 7 was processed with processor SubtermCriterion (1ms).
 | – Problem 8 was processed with processor SubtermCriterion (2ms).
 | – Problem 9 was processed with processor SubtermCriterion (1ms).
 | – Problem 10 was processed with processor SubtermCriterion (0ms).
 | – Problem 11 was processed with processor SubtermCriterion (1ms).
 | – Problem 12 was processed with processor SubtermCriterion (0ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

proper#(cons(X1, X2)) → proper#(X1)top#(ok(X)) → top#(active(X))
active#(sqr(s(X))) → s#(add(sqr(X), dbl(X)))add#(X1, mark(X2)) → add#(X1, X2)
active#(dbl(s(X))) → s#(dbl(X))cons#(ok(X1), ok(X2)) → cons#(X1, X2)
recip#(ok(X)) → recip#(X)active#(terms(N)) → terms#(s(N))
active#(first(s(X), cons(Y, Z))) → cons#(Y, first(X, Z))active#(cons(X1, X2)) → cons#(active(X1), X2)
terms#(mark(X)) → terms#(X)active#(add(X1, X2)) → add#(active(X1), X2)
active#(dbl(s(X))) → dbl#(X)first#(mark(X1), X2) → first#(X1, X2)
top#(mark(X)) → proper#(X)proper#(add(X1, X2)) → proper#(X2)
active#(first(X1, X2)) → active#(X2)top#(mark(X)) → top#(proper(X))
proper#(cons(X1, X2)) → proper#(X2)active#(sqr(s(X))) → dbl#(X)
active#(dbl(s(X))) → s#(s(dbl(X)))proper#(first(X1, X2)) → first#(proper(X1), proper(X2))
active#(sqr(s(X))) → sqr#(X)proper#(add(X1, X2)) → proper#(X1)
active#(terms(N)) → sqr#(N)add#(mark(X1), X2) → add#(X1, X2)
active#(sqr(X)) → sqr#(active(X))active#(first(X1, X2)) → active#(X1)
proper#(first(X1, X2)) → proper#(X2)proper#(s(X)) → proper#(X)
active#(add(s(X), Y)) → add#(X, Y)active#(add(X1, X2)) → active#(X2)
active#(recip(X)) → active#(X)active#(sqr(s(X))) → add#(sqr(X), dbl(X))
proper#(terms(X)) → proper#(X)proper#(recip(X)) → proper#(X)
active#(sqr(X)) → active#(X)active#(cons(X1, X2)) → active#(X1)
active#(terms(X)) → active#(X)terms#(ok(X)) → terms#(X)
proper#(add(X1, X2)) → add#(proper(X1), proper(X2))proper#(sqr(X)) → proper#(X)
cons#(mark(X1), X2) → cons#(X1, X2)active#(add(X1, X2)) → add#(X1, active(X2))
active#(first(X1, X2)) → first#(X1, active(X2))proper#(recip(X)) → recip#(proper(X))
add#(ok(X1), ok(X2)) → add#(X1, X2)top#(ok(X)) → active#(X)
active#(first(s(X), cons(Y, Z))) → first#(X, Z)active#(add(s(X), Y)) → s#(add(X, Y))
active#(dbl(X)) → active#(X)first#(X1, mark(X2)) → first#(X1, X2)
active#(add(X1, X2)) → active#(X1)active#(recip(X)) → recip#(active(X))
proper#(sqr(X)) → sqr#(proper(X))proper#(dbl(X)) → proper#(X)
active#(terms(N)) → cons#(recip(sqr(N)), terms(s(N)))proper#(terms(X)) → terms#(proper(X))
dbl#(mark(X)) → dbl#(X)active#(terms(N)) → recip#(sqr(N))
active#(dbl(X)) → dbl#(active(X))s#(ok(X)) → s#(X)
dbl#(ok(X)) → dbl#(X)first#(ok(X1), ok(X2)) → first#(X1, X2)
sqr#(mark(X)) → sqr#(X)active#(first(X1, X2)) → first#(active(X1), X2)
proper#(cons(X1, X2)) → cons#(proper(X1), proper(X2))proper#(dbl(X)) → dbl#(proper(X))
active#(terms(N)) → s#(N)active#(terms(X)) → terms#(active(X))
proper#(s(X)) → s#(proper(X))proper#(first(X1, X2)) → proper#(X1)
sqr#(ok(X)) → sqr#(X)recip#(mark(X)) → recip#(X)

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


The following SCCs where found

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

dbl#(ok(X)) → dbl#(X)dbl#(mark(X)) → dbl#(X)

active#(terms(X)) → active#(X)active#(first(X1, X2)) → active#(X2)
active#(add(X1, X2)) → active#(X1)active#(add(X1, X2)) → active#(X2)
active#(recip(X)) → active#(X)active#(dbl(X)) → active#(X)
active#(first(X1, X2)) → active#(X1)active#(sqr(X)) → active#(X)
active#(cons(X1, X2)) → active#(X1)

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

sqr#(mark(X)) → sqr#(X)sqr#(ok(X)) → sqr#(X)

proper#(first(X1, X2)) → proper#(X2)proper#(s(X)) → proper#(X)
proper#(cons(X1, X2)) → proper#(X1)proper#(cons(X1, X2)) → proper#(X2)
proper#(dbl(X)) → proper#(X)proper#(sqr(X)) → proper#(X)
proper#(first(X1, X2)) → proper#(X1)proper#(add(X1, X2)) → proper#(X1)
proper#(terms(X)) → proper#(X)proper#(recip(X)) → proper#(X)
proper#(add(X1, X2)) → proper#(X2)

s#(ok(X)) → s#(X)

top#(mark(X)) → top#(proper(X))top#(ok(X)) → top#(active(X))

terms#(mark(X)) → terms#(X)terms#(ok(X)) → terms#(X)

recip#(ok(X)) → recip#(X)recip#(mark(X)) → recip#(X)

first#(ok(X1), ok(X2)) → first#(X1, X2)first#(mark(X1), X2) → first#(X1, X2)
first#(X1, mark(X2)) → first#(X1, X2)

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 13: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, top, cons, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

first#(ok(X1), ok(X2)) → first#(X1, X2)first#(mark(X1), X2) → first#(X1, X2)
first#(X1, mark(X2)) → first#(X1, X2)

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

first#(ok(X1), ok(X2)) → first#(X1, X2)first#(mark(X1), X2) → first#(X1, X2)

Problem 14: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

first#(X1, mark(X2)) → first#(X1, X2)

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, top, cons, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

first#(X1, mark(X2)) → first#(X1, X2)

Problem 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

sqr#(mark(X)) → sqr#(X)sqr#(ok(X)) → sqr#(X)

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

sqr#(mark(X)) → sqr#(X)sqr#(ok(X)) → sqr#(X)

Problem 5: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

top#(mark(X)) → top#(proper(X))top#(ok(X)) → top#(active(X))

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


Polynomial Interpretation

Improved Usable rules

active(sqr(0)) → mark(0)proper(sqr(X)) → sqr(proper(X))
active(dbl(X)) → dbl(active(X))dbl(mark(X)) → mark(dbl(X))
proper(dbl(X)) → dbl(proper(X))cons(mark(X1), X2) → mark(cons(X1, X2))
active(terms(X)) → terms(active(X))first(X1, mark(X2)) → mark(first(X1, X2))
active(first(0, X)) → mark(nil)active(recip(X)) → recip(active(X))
proper(recip(X)) → recip(proper(X))proper(add(X1, X2)) → add(proper(X1), proper(X2))
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))add(mark(X1), X2) → mark(add(X1, X2))
terms(ok(X)) → ok(terms(X))active(first(X1, X2)) → first(active(X1), X2)
active(add(X1, X2)) → add(active(X1), X2)proper(s(X)) → s(proper(X))
active(dbl(0)) → mark(0)active(dbl(s(X))) → mark(s(s(dbl(X))))
active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))sqr(ok(X)) → ok(sqr(X))
add(X1, mark(X2)) → mark(add(X1, X2))proper(terms(X)) → terms(proper(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))dbl(ok(X)) → ok(dbl(X))
proper(first(X1, X2)) → first(proper(X1), proper(X2))sqr(mark(X)) → mark(sqr(X))
terms(mark(X)) → mark(terms(X))s(ok(X)) → ok(s(X))
first(mark(X1), X2) → mark(first(X1, X2))active(sqr(X)) → sqr(active(X))
active(add(s(X), Y)) → mark(s(add(X, Y)))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
recip(ok(X)) → ok(recip(X))recip(mark(X)) → mark(recip(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))
active(cons(X1, X2)) → cons(active(X1), X2)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(nil) → ok(nil)active(add(0, X)) → mark(X)
proper(0) → ok(0)active(add(X1, X2)) → add(X1, active(X2))
active(first(X1, X2)) → first(X1, active(X2))

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

top#(mark(X)) → top#(proper(X))

Problem 15: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

top#(ok(X)) → top#(active(X))

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, top, cons, nil

Strategy


Polynomial Interpretation

Improved Usable rules

active(sqr(0)) → mark(0)active(dbl(X)) → dbl(active(X))
dbl(mark(X)) → mark(dbl(X))cons(mark(X1), X2) → mark(cons(X1, X2))
active(terms(X)) → terms(active(X))active(first(0, X)) → mark(nil)
first(X1, mark(X2)) → mark(first(X1, X2))active(recip(X)) → recip(active(X))
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))add(mark(X1), X2) → mark(add(X1, X2))
terms(ok(X)) → ok(terms(X))active(first(X1, X2)) → first(active(X1), X2)
active(add(X1, X2)) → add(active(X1), X2)active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))sqr(ok(X)) → ok(sqr(X))
active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))first(ok(X1), ok(X2)) → ok(first(X1, X2))
add(X1, mark(X2)) → mark(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
sqr(mark(X)) → mark(sqr(X))terms(mark(X)) → mark(terms(X))
first(mark(X1), X2) → mark(first(X1, X2))active(sqr(X)) → sqr(active(X))
active(add(s(X), Y)) → mark(s(add(X, Y)))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
recip(ok(X)) → ok(recip(X))recip(mark(X)) → mark(recip(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))
active(cons(X1, X2)) → cons(active(X1), X2)active(add(0, X)) → mark(X)
active(add(X1, X2)) → add(X1, active(X2))active(first(X1, X2)) → first(X1, active(X2))

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

top#(ok(X)) → top#(active(X))

Problem 6: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

recip#(ok(X)) → recip#(X)recip#(mark(X)) → recip#(X)

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

recip#(ok(X)) → recip#(X)recip#(mark(X)) → recip#(X)

Problem 7: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

active#(terms(X)) → active#(X)active#(first(X1, X2)) → active#(X2)
active#(add(X1, X2)) → active#(X1)active#(add(X1, X2)) → active#(X2)
active#(recip(X)) → active#(X)active#(dbl(X)) → active#(X)
active#(first(X1, X2)) → active#(X1)active#(sqr(X)) → active#(X)
active#(cons(X1, X2)) → active#(X1)

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

active#(first(X1, X2)) → active#(X2)active#(terms(X)) → active#(X)
active#(add(X1, X2)) → active#(X1)active#(add(X1, X2)) → active#(X2)
active#(recip(X)) → active#(X)active#(dbl(X)) → active#(X)
active#(first(X1, X2)) → active#(X1)active#(sqr(X)) → active#(X)
active#(cons(X1, X2)) → active#(X1)

Problem 8: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

dbl#(ok(X)) → dbl#(X)dbl#(mark(X)) → dbl#(X)

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

dbl#(ok(X)) → dbl#(X)dbl#(mark(X)) → dbl#(X)

Problem 9: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

proper#(first(X1, X2)) → proper#(X2)proper#(s(X)) → proper#(X)
proper#(cons(X1, X2)) → proper#(X1)proper#(cons(X1, X2)) → proper#(X2)
proper#(dbl(X)) → proper#(X)proper#(sqr(X)) → proper#(X)
proper#(first(X1, X2)) → proper#(X1)proper#(add(X1, X2)) → proper#(X1)
proper#(terms(X)) → proper#(X)proper#(recip(X)) → proper#(X)
proper#(add(X1, X2)) → proper#(X2)

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

proper#(first(X1, X2)) → proper#(X2)proper#(s(X)) → proper#(X)
proper#(cons(X1, X2)) → proper#(X1)proper#(cons(X1, X2)) → proper#(X2)
proper#(sqr(X)) → proper#(X)proper#(dbl(X)) → proper#(X)
proper#(first(X1, X2)) → proper#(X1)proper#(add(X1, X2)) → proper#(X1)
proper#(terms(X)) → proper#(X)proper#(recip(X)) → proper#(X)
proper#(add(X1, X2)) → proper#(X2)

Problem 10: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 11: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

terms#(mark(X)) → terms#(X)terms#(ok(X)) → terms#(X)

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

terms#(mark(X)) → terms#(X)terms#(ok(X)) → terms#(X)

Problem 12: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

s#(ok(X)) → s#(X)

Rewrite Rules

active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))active(sqr(0)) → mark(0)
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(dbl(0)) → mark(0)
active(dbl(s(X))) → mark(s(s(dbl(X))))active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))active(first(0, X)) → mark(nil)
active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))active(terms(X)) → terms(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)active(recip(X)) → recip(active(X))
active(sqr(X)) → sqr(active(X))active(add(X1, X2)) → add(active(X1), X2)
active(add(X1, X2)) → add(X1, active(X2))active(dbl(X)) → dbl(active(X))
active(first(X1, X2)) → first(active(X1), X2)active(first(X1, X2)) → first(X1, active(X2))
terms(mark(X)) → mark(terms(X))cons(mark(X1), X2) → mark(cons(X1, X2))
recip(mark(X)) → mark(recip(X))sqr(mark(X)) → mark(sqr(X))
add(mark(X1), X2) → mark(add(X1, X2))add(X1, mark(X2)) → mark(add(X1, X2))
dbl(mark(X)) → mark(dbl(X))first(mark(X1), X2) → mark(first(X1, X2))
first(X1, mark(X2)) → mark(first(X1, X2))proper(terms(X)) → terms(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))proper(recip(X)) → recip(proper(X))
proper(sqr(X)) → sqr(proper(X))proper(s(X)) → s(proper(X))
proper(0) → ok(0)proper(add(X1, X2)) → add(proper(X1), proper(X2))
proper(dbl(X)) → dbl(proper(X))proper(first(X1, X2)) → first(proper(X1), proper(X2))
proper(nil) → ok(nil)terms(ok(X)) → ok(terms(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))recip(ok(X)) → ok(recip(X))
sqr(ok(X)) → ok(sqr(X))s(ok(X)) → ok(s(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))dbl(ok(X)) → ok(dbl(X))
first(ok(X1), ok(X2)) → ok(first(X1, X2))top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: terms, sqr, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

s#(ok(X)) → s#(X)