YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (2053ms).
 | – Problem 2 was processed with processor SubtermCriterion (1ms).
 |    | – Problem 14 was processed with processor SubtermCriterion (0ms).
 | – Problem 3 was processed with processor SubtermCriterion (1ms).
 | – Problem 4 was processed with processor SubtermCriterion (0ms).
 | – Problem 5 was processed with processor SubtermCriterion (0ms).
 |    | – Problem 15 was processed with processor SubtermCriterion (8ms).
 | – Problem 6 was processed with processor SubtermCriterion (1ms).
 | – Problem 7 was processed with processor SubtermCriterion (0ms).
 | – Problem 8 was processed with processor SubtermCriterion (1ms).
 | – Problem 9 was processed with processor SubtermCriterion (0ms).
 | – Problem 10 was processed with processor SubtermCriterion (1ms).
 | – Problem 11 was processed with processor SubtermCriterion (1ms).
 | – Problem 12 was processed with processor SubtermCriterion (0ms).
 | – Problem 13 was processed with processor ReductionPairSAT (3666ms).
 |    | – Problem 16 was processed with processor ReductionPairSAT (1873ms).

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))
active#(sqr(s(X)))dbl#(X)proper#(cons(X1, X2))proper#(X2)
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#(half(s(s(X))))half#(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))active#(half(X))half#(active(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#(half(X))half#(proper(X))
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)
half#(mark(X))half#(X)proper#(half(X))proper#(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)half#(ok(X))half#(X)
active#(terms(N))cons#(recip(sqr(N)), terms(s(N)))dbl#(mark(X))dbl#(X)
active#(s(X))s#(active(X))proper#(terms(X))terms#(proper(X))
active#(terms(N))recip#(sqr(N))active#(dbl(X))dbl#(active(X))
s#(ok(X))s#(X)s#(mark(X))s#(X)
active#(half(s(s(X))))s#(half(X))dbl#(ok(X))dbl#(X)
first#(ok(X1), ok(X2))first#(X1, X2)sqr#(mark(X))sqr#(X)
active#(half(X))active#(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#(s(X))active#(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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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)

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#(half(X)) → proper#(X)proper#(add(X1, X2)) → proper#(X2)

half#(ok(X)) → half#(X)half#(mark(X)) → half#(X)

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#(half(X)) → active#(X)active#(recip(X)) → active#(X)
active#(s(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)

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

s#(mark(X)) → s#(X)s#(ok(X)) → s#(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

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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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 3: 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#(terms(X))proper#(X)
proper#(add(X1, X2))proper#(X1)proper#(recip(X))proper#(X)
proper#(half(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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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#(half(X))proper#(X)proper#(add(X1, X2))proper#(X2)

Problem 4: 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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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 5: 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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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 15: 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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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 6: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

half#(ok(X))half#(X)half#(mark(X))half#(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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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:

half#(ok(X))half#(X)half#(mark(X))half#(X)

Problem 7: 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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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 8: 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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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 9: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

s#(mark(X))s#(X)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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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#(mark(X))s#(X)s#(ok(X))s#(X)

Problem 10: 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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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 11: 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#(half(X))active#(X)active#(recip(X))active#(X)
active#(s(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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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#(half(X))active#(X)active#(recip(X))active#(X)
active#(s(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 12: 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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, 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 13: ReductionPairSAT



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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, mark, dbl, recip, add, 0, s, active, ok, proper, first, nil, cons, top

Strategy


Function Precedence

recip < terms < 0 < nil < sqr < active < dbl < half = first < add < proper = top# < mark = s = ok = top = cons

Argument Filtering

terms: 1
sqr: 1
half: 1
mark: 1
dbl: 1
recip: collapses to 1
add: 1 2
0: all arguments are removed from 0
s: 1
active: collapses to 1
ok: collapses to 1
proper: collapses to 1
first: 1 2
top: collapses to 1
cons: collapses to 1
nil: all arguments are removed from nil
top#: collapses to 1

Status

terms: lexicographic with permutation 1 → 1
sqr: lexicographic with permutation 1 → 1
half: lexicographic with permutation 1 → 1
mark: lexicographic with permutation 1 → 1
dbl: lexicographic with permutation 1 → 1
add: lexicographic with permutation 1 → 1 2 → 2
0: multiset
s: lexicographic with permutation 1 → 1
first: lexicographic with permutation 1 → 2 2 → 1
nil: multiset

Usable Rules

active(half(X)) → half(active(X))proper(sqr(X)) → sqr(proper(X))
dbl(mark(X)) → mark(dbl(X))active(s(X)) → s(active(X))
proper(dbl(X)) → dbl(proper(X))cons(mark(X1), X2) → mark(cons(X1, X2))
active(terms(X)) → terms(active(X))active(recip(X)) → recip(active(X))
proper(recip(X)) → recip(proper(X))add(mark(X1), X2) → mark(add(X1, X2))
terms(ok(X)) → ok(terms(X))active(dbl(0)) → mark(0)
sqr(ok(X)) → ok(sqr(X))add(X1, mark(X2)) → mark(add(X1, X2))
first(ok(X1), ok(X2)) → ok(first(X1, X2))proper(terms(X)) → terms(proper(X))
sqr(mark(X)) → mark(sqr(X))active(half(dbl(X))) → mark(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))active(half(s(0))) → mark(0)
active(cons(X1, X2)) → cons(active(X1), X2)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(0) → ok(0)
half(ok(X)) → ok(half(X))active(add(X1, X2)) → add(X1, active(X2))
active(sqr(0)) → mark(0)active(dbl(X)) → dbl(active(X))
active(first(0, X)) → mark(nil)first(X1, mark(X2)) → mark(first(X1, X2))
proper(add(X1, X2)) → add(proper(X1), proper(X2))active(first(s(X), cons(Y, Z))) → mark(cons(Y, first(X, Z)))
s(mark(X)) → mark(s(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(s(X))) → mark(s(s(dbl(X))))active(terms(N)) → mark(cons(recip(sqr(N)), terms(s(N))))
active(half(s(s(X)))) → mark(s(half(X)))dbl(ok(X)) → ok(dbl(X))
proper(first(X1, X2)) → first(proper(X1), proper(X2))terms(mark(X)) → mark(terms(X))
s(ok(X)) → ok(s(X))proper(half(X)) → half(proper(X))
active(half(0)) → mark(0)recip(mark(X)) → mark(recip(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))half(mark(X)) → mark(half(X))
active(sqr(s(X))) → mark(s(add(sqr(X), dbl(X))))active(add(0, X)) → mark(X)
active(first(X1, X2)) → first(X1, active(X2))

The dependency pairs and usable rules are stronlgy conservative!

Eliminated dependency pairs

The following dependency pairs (at least) can be eliminated according to the given precedence.

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

Problem 16: ReductionPairSAT



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(half(0))mark(0)
active(half(s(0)))mark(0)active(half(s(s(X))))mark(s(half(X)))
active(half(dbl(X)))mark(X)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(s(X))s(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))active(half(X))half(active(X))
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))
s(mark(X))mark(s(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))
half(mark(X))mark(half(X))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)proper(half(X))half(proper(X))
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))
half(ok(X))ok(half(X))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, half, mark, dbl, recip, add, 0, s, active, ok, proper, first, top, cons, nil

Strategy


Function Precedence

half < recip < s < cons < first < mark < 0 < terms = sqr = dbl = add = active = ok = proper = top = nil = top#

Argument Filtering

terms: 1
sqr: 1
half: collapses to 1
mark: collapses to 1
dbl: 1
recip: collapses to 1
add: collapses to 2
0: all arguments are removed from 0
s: collapses to 1
active: collapses to 1
ok: 1
proper: all arguments are removed from proper
first: 1
top: 1
cons: collapses to 2
nil: all arguments are removed from nil
top#: 1

Status

terms: lexicographic with permutation 1 → 1
sqr: lexicographic with permutation 1 → 1
dbl: lexicographic with permutation 1 → 1
0: multiset
ok: lexicographic with permutation 1 → 1
proper: multiset
first: lexicographic with permutation 1 → 1
top: lexicographic with permutation 1 → 1
nil: multiset
top#: multiset

Usable Rules

active(sqr(0)) → mark(0)active(dbl(X)) → dbl(active(X))
active(half(X)) → half(active(X))dbl(mark(X)) → mark(dbl(X))
active(s(X)) → s(active(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))
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))s(mark(X)) → mark(s(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))))
add(X1, mark(X2)) → mark(add(X1, X2))first(ok(X1), ok(X2)) → ok(first(X1, X2))
active(half(s(s(X)))) → mark(s(half(X)))dbl(ok(X)) → ok(dbl(X))
sqr(mark(X)) → mark(sqr(X))terms(mark(X)) → mark(terms(X))
active(half(dbl(X))) → mark(X)first(mark(X1), X2) → mark(first(X1, X2))
s(ok(X)) → ok(s(X))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))active(half(0)) → mark(0)
recip(mark(X)) → mark(recip(X))half(mark(X)) → mark(half(X))
add(ok(X1), ok(X2)) → ok(add(X1, X2))active(half(s(0))) → mark(0)
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)half(ok(X)) → ok(half(X))
active(add(X1, X2)) → add(X1, active(X2))active(first(X1, X2)) → first(X1, active(X2))

The dependency pairs and usable rules are stronlgy conservative!

Eliminated dependency pairs

The following dependency pairs (at least) can be eliminated according to the given precedence.

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