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) | 
| 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
- 0: 1
 
- active(x): x
 
- add(x,y): 2y + 2x
 
- cons(x,y): x
 
- dbl(x): x + 1
 
- first(x,y): y + x
 
- mark(x): x + 1
 
- nil: 0
 
- ok(x): x
 
- proper(x): x
 
- recip(x): x
 
- s(x): 1
 
- sqr(x): 2x
 
- terms(x): 2x + 1
 
- top(x): 0
 
- top#(x): 2x
 
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
- 0: 0
 
- active(x): 2x
 
- add(x,y): y
 
- cons(x,y): 2x
 
- dbl(x): 2x
 
- first(x,y): x
 
- mark(x): 0
 
- nil: 3
 
- ok(x): 2x + 1
 
- proper(x): 0
 
- recip(x): x
 
- s(x): 0
 
- sqr(x): 2x + 1
 
- terms(x): x
 
- top(x): 0
 
- top#(x): x + 1
 
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
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: