TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60018 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (1152ms).
| Problem 2 was processed with processor SubtermCriterion (3ms).
| | Problem 10 was processed with processor PolynomialLinearRange4iUR (38ms).
| Problem 3 was processed with processor SubtermCriterion (2ms).
| Problem 4 remains open; application of the following processors failed [SubtermCriterion (0ms), DependencyGraph (7ms), PolynomialLinearRange4iUR (3401ms), DependencyGraph (25ms), PolynomialLinearRange4iUR (2745ms), DependencyGraph (3ms), PolynomialLinearRange8NegiUR (30000ms), DependencyGraph (timeout), ReductionPairSAT (3566ms), DependencyGraph (3ms), SizeChangePrinciple (timeout)].
| Problem 5 was processed with processor SubtermCriterion (3ms).
| Problem 6 was processed with processor SubtermCriterion (0ms).
| Problem 7 was processed with processor SubtermCriterion (1ms).
| Problem 8 was processed with processor SubtermCriterion (1ms).
| Problem 9 was processed with processor SubtermCriterion (1ms).
The following open problems remain:
Open Dependency Pair Problem 4
Dependency Pairs
top#(mark(X)) | → | top#(proper(X)) | | top#(ok(X)) | → | top#(active(X)) |
Rewrite Rules
active(f(X)) | → | mark(cons(X, f(g(X)))) | | active(g(0)) | → | mark(s(0)) |
active(g(s(X))) | → | mark(s(s(g(X)))) | | active(sel(0, cons(X, Y))) | → | mark(X) |
active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(f(X)) | → | f(active(X)) |
active(cons(X1, X2)) | → | cons(active(X1), X2) | | active(g(X)) | → | g(active(X)) |
active(s(X)) | → | s(active(X)) | | active(sel(X1, X2)) | → | sel(active(X1), X2) |
active(sel(X1, X2)) | → | sel(X1, active(X2)) | | f(mark(X)) | → | mark(f(X)) |
cons(mark(X1), X2) | → | mark(cons(X1, X2)) | | g(mark(X)) | → | mark(g(X)) |
s(mark(X)) | → | mark(s(X)) | | sel(mark(X1), X2) | → | mark(sel(X1, X2)) |
sel(X1, mark(X2)) | → | mark(sel(X1, X2)) | | proper(f(X)) | → | f(proper(X)) |
proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(g(X)) | → | g(proper(X)) |
proper(0) | → | ok(0) | | proper(s(X)) | → | s(proper(X)) |
proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | f(ok(X)) | → | ok(f(X)) |
cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | g(ok(X)) | → | ok(g(X)) |
s(ok(X)) | → | ok(s(X)) | | sel(ok(X1), ok(X2)) | → | ok(sel(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: f, g, 0, s, active, ok, mark, proper, sel, top, cons
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
sel#(mark(X1), X2) | → | sel#(X1, X2) | | active#(f(X)) | → | f#(g(X)) |
g#(mark(X)) | → | g#(X) | | proper#(cons(X1, X2)) | → | proper#(X1) |
active#(g(X)) | → | active#(X) | | top#(ok(X)) | → | top#(active(X)) |
g#(ok(X)) | → | g#(X) | | cons#(mark(X1), X2) | → | cons#(X1, X2) |
active#(f(X)) | → | g#(X) | | cons#(ok(X1), ok(X2)) | → | cons#(X1, X2) |
active#(f(X)) | → | cons#(X, f(g(X))) | | top#(ok(X)) | → | active#(X) |
proper#(sel(X1, X2)) | → | sel#(proper(X1), proper(X2)) | | active#(cons(X1, X2)) | → | cons#(active(X1), X2) |
active#(g(0)) | → | s#(0) | | active#(sel(X1, X2)) | → | active#(X2) |
active#(sel(X1, X2)) | → | active#(X1) | | proper#(sel(X1, X2)) | → | proper#(X2) |
f#(mark(X)) | → | f#(X) | | top#(mark(X)) | → | proper#(X) |
f#(ok(X)) | → | f#(X) | | proper#(f(X)) | → | f#(proper(X)) |
active#(sel(X1, X2)) | → | sel#(active(X1), X2) | | active#(sel(X1, X2)) | → | sel#(X1, active(X2)) |
active#(sel(s(X), cons(Y, Z))) | → | sel#(X, Z) | | proper#(f(X)) | → | proper#(X) |
top#(mark(X)) | → | top#(proper(X)) | | proper#(cons(X1, X2)) | → | proper#(X2) |
active#(g(s(X))) | → | s#(s(g(X))) | | active#(s(X)) | → | s#(active(X)) |
sel#(X1, mark(X2)) | → | sel#(X1, X2) | | s#(ok(X)) | → | s#(X) |
s#(mark(X)) | → | s#(X) | | proper#(sel(X1, X2)) | → | proper#(X1) |
active#(f(X)) | → | f#(active(X)) | | proper#(s(X)) | → | proper#(X) |
proper#(cons(X1, X2)) | → | cons#(proper(X1), proper(X2)) | | active#(s(X)) | → | active#(X) |
sel#(ok(X1), ok(X2)) | → | sel#(X1, X2) | | proper#(s(X)) | → | s#(proper(X)) |
proper#(g(X)) | → | g#(proper(X)) | | active#(g(X)) | → | g#(active(X)) |
active#(g(s(X))) | → | s#(g(X)) | | proper#(g(X)) | → | proper#(X) |
active#(f(X)) | → | active#(X) | | active#(g(s(X))) | → | g#(X) |
active#(cons(X1, X2)) | → | active#(X1) |
Rewrite Rules
active(f(X)) | → | mark(cons(X, f(g(X)))) | | active(g(0)) | → | mark(s(0)) |
active(g(s(X))) | → | mark(s(s(g(X)))) | | active(sel(0, cons(X, Y))) | → | mark(X) |
active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(f(X)) | → | f(active(X)) |
active(cons(X1, X2)) | → | cons(active(X1), X2) | | active(g(X)) | → | g(active(X)) |
active(s(X)) | → | s(active(X)) | | active(sel(X1, X2)) | → | sel(active(X1), X2) |
active(sel(X1, X2)) | → | sel(X1, active(X2)) | | f(mark(X)) | → | mark(f(X)) |
cons(mark(X1), X2) | → | mark(cons(X1, X2)) | | g(mark(X)) | → | mark(g(X)) |
s(mark(X)) | → | mark(s(X)) | | sel(mark(X1), X2) | → | mark(sel(X1, X2)) |
sel(X1, mark(X2)) | → | mark(sel(X1, X2)) | | proper(f(X)) | → | f(proper(X)) |
proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(g(X)) | → | g(proper(X)) |
proper(0) | → | ok(0) | | proper(s(X)) | → | s(proper(X)) |
proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | f(ok(X)) | → | ok(f(X)) |
cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | g(ok(X)) | → | ok(g(X)) |
s(ok(X)) | → | ok(s(X)) | | sel(ok(X1), ok(X2)) | → | ok(sel(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: f, g, 0, s, active, mark, ok, proper, sel, cons, top
Strategy
The following SCCs where found
f#(mark(X)) → f#(X) | f#(ok(X)) → f#(X) |
cons#(mark(X1), X2) → cons#(X1, X2) | cons#(ok(X1), ok(X2)) → cons#(X1, X2) |
sel#(mark(X1), X2) → sel#(X1, X2) | sel#(ok(X1), ok(X2)) → sel#(X1, X2) |
sel#(X1, mark(X2)) → sel#(X1, X2) |
proper#(sel(X1, X2)) → proper#(X1) | proper#(s(X)) → proper#(X) |
proper#(cons(X1, X2)) → proper#(X1) | proper#(f(X)) → proper#(X) |
proper#(cons(X1, X2)) → proper#(X2) | proper#(g(X)) → proper#(X) |
proper#(sel(X1, X2)) → proper#(X2) |
active#(sel(X1, X2)) → active#(X2) | active#(g(X)) → active#(X) |
active#(s(X)) → active#(X) | active#(sel(X1, X2)) → active#(X1) |
active#(f(X)) → active#(X) | active#(cons(X1, X2)) → active#(X1) |
g#(mark(X)) → g#(X) | g#(ok(X)) → g#(X) |
top#(mark(X)) → top#(proper(X)) | top#(ok(X)) → top#(active(X)) |
s#(mark(X)) → s#(X) | s#(ok(X)) → s#(X) |
Problem 2: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
sel#(mark(X1), X2) | → | sel#(X1, X2) | | sel#(ok(X1), ok(X2)) | → | sel#(X1, X2) |
sel#(X1, mark(X2)) | → | sel#(X1, X2) |
Rewrite Rules
active(f(X)) | → | mark(cons(X, f(g(X)))) | | active(g(0)) | → | mark(s(0)) |
active(g(s(X))) | → | mark(s(s(g(X)))) | | active(sel(0, cons(X, Y))) | → | mark(X) |
active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(f(X)) | → | f(active(X)) |
active(cons(X1, X2)) | → | cons(active(X1), X2) | | active(g(X)) | → | g(active(X)) |
active(s(X)) | → | s(active(X)) | | active(sel(X1, X2)) | → | sel(active(X1), X2) |
active(sel(X1, X2)) | → | sel(X1, active(X2)) | | f(mark(X)) | → | mark(f(X)) |
cons(mark(X1), X2) | → | mark(cons(X1, X2)) | | g(mark(X)) | → | mark(g(X)) |
s(mark(X)) | → | mark(s(X)) | | sel(mark(X1), X2) | → | mark(sel(X1, X2)) |
sel(X1, mark(X2)) | → | mark(sel(X1, X2)) | | proper(f(X)) | → | f(proper(X)) |
proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(g(X)) | → | g(proper(X)) |
proper(0) | → | ok(0) | | proper(s(X)) | → | s(proper(X)) |
proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | f(ok(X)) | → | ok(f(X)) |
cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | g(ok(X)) | → | ok(g(X)) |
s(ok(X)) | → | ok(s(X)) | | sel(ok(X1), ok(X2)) | → | ok(sel(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: f, g, 0, s, active, mark, ok, proper, sel, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
sel#(mark(X1), X2) | → | sel#(X1, X2) | | sel#(ok(X1), ok(X2)) | → | sel#(X1, X2) |
Problem 10: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
sel#(X1, mark(X2)) | → | sel#(X1, X2) |
Rewrite Rules
active(f(X)) | → | mark(cons(X, f(g(X)))) | | active(g(0)) | → | mark(s(0)) |
active(g(s(X))) | → | mark(s(s(g(X)))) | | active(sel(0, cons(X, Y))) | → | mark(X) |
active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(f(X)) | → | f(active(X)) |
active(cons(X1, X2)) | → | cons(active(X1), X2) | | active(g(X)) | → | g(active(X)) |
active(s(X)) | → | s(active(X)) | | active(sel(X1, X2)) | → | sel(active(X1), X2) |
active(sel(X1, X2)) | → | sel(X1, active(X2)) | | f(mark(X)) | → | mark(f(X)) |
cons(mark(X1), X2) | → | mark(cons(X1, X2)) | | g(mark(X)) | → | mark(g(X)) |
s(mark(X)) | → | mark(s(X)) | | sel(mark(X1), X2) | → | mark(sel(X1, X2)) |
sel(X1, mark(X2)) | → | mark(sel(X1, X2)) | | proper(f(X)) | → | f(proper(X)) |
proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(g(X)) | → | g(proper(X)) |
proper(0) | → | ok(0) | | proper(s(X)) | → | s(proper(X)) |
proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | f(ok(X)) | → | ok(f(X)) |
cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | g(ok(X)) | → | ok(g(X)) |
s(ok(X)) | → | ok(s(X)) | | sel(ok(X1), ok(X2)) | → | ok(sel(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: f, g, 0, s, active, ok, mark, proper, sel, top, cons
Strategy
Polynomial Interpretation
- 0: 0
- active(x): 0
- cons(x,y): 0
- f(x): 0
- g(x): 0
- mark(x): x + 2
- ok(x): 0
- proper(x): 0
- s(x): 0
- sel(x,y): 0
- sel#(x,y): y + x
- top(x): 0
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
sel#(X1, mark(X2)) | → | sel#(X1, X2) |
Problem 3: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
cons#(mark(X1), X2) | → | cons#(X1, X2) | | cons#(ok(X1), ok(X2)) | → | cons#(X1, X2) |
Rewrite Rules
active(f(X)) | → | mark(cons(X, f(g(X)))) | | active(g(0)) | → | mark(s(0)) |
active(g(s(X))) | → | mark(s(s(g(X)))) | | active(sel(0, cons(X, Y))) | → | mark(X) |
active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(f(X)) | → | f(active(X)) |
active(cons(X1, X2)) | → | cons(active(X1), X2) | | active(g(X)) | → | g(active(X)) |
active(s(X)) | → | s(active(X)) | | active(sel(X1, X2)) | → | sel(active(X1), X2) |
active(sel(X1, X2)) | → | sel(X1, active(X2)) | | f(mark(X)) | → | mark(f(X)) |
cons(mark(X1), X2) | → | mark(cons(X1, X2)) | | g(mark(X)) | → | mark(g(X)) |
s(mark(X)) | → | mark(s(X)) | | sel(mark(X1), X2) | → | mark(sel(X1, X2)) |
sel(X1, mark(X2)) | → | mark(sel(X1, X2)) | | proper(f(X)) | → | f(proper(X)) |
proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(g(X)) | → | g(proper(X)) |
proper(0) | → | ok(0) | | proper(s(X)) | → | s(proper(X)) |
proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | f(ok(X)) | → | ok(f(X)) |
cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | g(ok(X)) | → | ok(g(X)) |
s(ok(X)) | → | ok(s(X)) | | sel(ok(X1), ok(X2)) | → | ok(sel(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: f, g, 0, s, active, mark, ok, proper, sel, 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
g#(mark(X)) | → | g#(X) | | g#(ok(X)) | → | g#(X) |
Rewrite Rules
active(f(X)) | → | mark(cons(X, f(g(X)))) | | active(g(0)) | → | mark(s(0)) |
active(g(s(X))) | → | mark(s(s(g(X)))) | | active(sel(0, cons(X, Y))) | → | mark(X) |
active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(f(X)) | → | f(active(X)) |
active(cons(X1, X2)) | → | cons(active(X1), X2) | | active(g(X)) | → | g(active(X)) |
active(s(X)) | → | s(active(X)) | | active(sel(X1, X2)) | → | sel(active(X1), X2) |
active(sel(X1, X2)) | → | sel(X1, active(X2)) | | f(mark(X)) | → | mark(f(X)) |
cons(mark(X1), X2) | → | mark(cons(X1, X2)) | | g(mark(X)) | → | mark(g(X)) |
s(mark(X)) | → | mark(s(X)) | | sel(mark(X1), X2) | → | mark(sel(X1, X2)) |
sel(X1, mark(X2)) | → | mark(sel(X1, X2)) | | proper(f(X)) | → | f(proper(X)) |
proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(g(X)) | → | g(proper(X)) |
proper(0) | → | ok(0) | | proper(s(X)) | → | s(proper(X)) |
proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | f(ok(X)) | → | ok(f(X)) |
cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | g(ok(X)) | → | ok(g(X)) |
s(ok(X)) | → | ok(s(X)) | | sel(ok(X1), ok(X2)) | → | ok(sel(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: f, g, 0, s, active, mark, ok, proper, sel, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
g#(mark(X)) | → | g#(X) | | g#(ok(X)) | → | g#(X) |
Problem 6: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
f#(mark(X)) | → | f#(X) | | f#(ok(X)) | → | f#(X) |
Rewrite Rules
active(f(X)) | → | mark(cons(X, f(g(X)))) | | active(g(0)) | → | mark(s(0)) |
active(g(s(X))) | → | mark(s(s(g(X)))) | | active(sel(0, cons(X, Y))) | → | mark(X) |
active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(f(X)) | → | f(active(X)) |
active(cons(X1, X2)) | → | cons(active(X1), X2) | | active(g(X)) | → | g(active(X)) |
active(s(X)) | → | s(active(X)) | | active(sel(X1, X2)) | → | sel(active(X1), X2) |
active(sel(X1, X2)) | → | sel(X1, active(X2)) | | f(mark(X)) | → | mark(f(X)) |
cons(mark(X1), X2) | → | mark(cons(X1, X2)) | | g(mark(X)) | → | mark(g(X)) |
s(mark(X)) | → | mark(s(X)) | | sel(mark(X1), X2) | → | mark(sel(X1, X2)) |
sel(X1, mark(X2)) | → | mark(sel(X1, X2)) | | proper(f(X)) | → | f(proper(X)) |
proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(g(X)) | → | g(proper(X)) |
proper(0) | → | ok(0) | | proper(s(X)) | → | s(proper(X)) |
proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | f(ok(X)) | → | ok(f(X)) |
cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | g(ok(X)) | → | ok(g(X)) |
s(ok(X)) | → | ok(s(X)) | | sel(ok(X1), ok(X2)) | → | ok(sel(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: f, g, 0, s, active, mark, ok, proper, sel, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
f#(mark(X)) | → | f#(X) | | f#(ok(X)) | → | f#(X) |
Problem 7: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
active#(sel(X1, X2)) | → | active#(X2) | | active#(g(X)) | → | active#(X) |
active#(s(X)) | → | active#(X) | | active#(sel(X1, X2)) | → | active#(X1) |
active#(f(X)) | → | active#(X) | | active#(cons(X1, X2)) | → | active#(X1) |
Rewrite Rules
active(f(X)) | → | mark(cons(X, f(g(X)))) | | active(g(0)) | → | mark(s(0)) |
active(g(s(X))) | → | mark(s(s(g(X)))) | | active(sel(0, cons(X, Y))) | → | mark(X) |
active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(f(X)) | → | f(active(X)) |
active(cons(X1, X2)) | → | cons(active(X1), X2) | | active(g(X)) | → | g(active(X)) |
active(s(X)) | → | s(active(X)) | | active(sel(X1, X2)) | → | sel(active(X1), X2) |
active(sel(X1, X2)) | → | sel(X1, active(X2)) | | f(mark(X)) | → | mark(f(X)) |
cons(mark(X1), X2) | → | mark(cons(X1, X2)) | | g(mark(X)) | → | mark(g(X)) |
s(mark(X)) | → | mark(s(X)) | | sel(mark(X1), X2) | → | mark(sel(X1, X2)) |
sel(X1, mark(X2)) | → | mark(sel(X1, X2)) | | proper(f(X)) | → | f(proper(X)) |
proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(g(X)) | → | g(proper(X)) |
proper(0) | → | ok(0) | | proper(s(X)) | → | s(proper(X)) |
proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | f(ok(X)) | → | ok(f(X)) |
cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | g(ok(X)) | → | ok(g(X)) |
s(ok(X)) | → | ok(s(X)) | | sel(ok(X1), ok(X2)) | → | ok(sel(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: f, g, 0, s, active, mark, ok, proper, sel, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
active#(g(X)) | → | active#(X) | | active#(sel(X1, X2)) | → | active#(X2) |
active#(sel(X1, X2)) | → | active#(X1) | | active#(s(X)) | → | active#(X) |
active#(f(X)) | → | active#(X) | | active#(cons(X1, X2)) | → | active#(X1) |
Problem 8: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
s#(mark(X)) | → | s#(X) | | s#(ok(X)) | → | s#(X) |
Rewrite Rules
active(f(X)) | → | mark(cons(X, f(g(X)))) | | active(g(0)) | → | mark(s(0)) |
active(g(s(X))) | → | mark(s(s(g(X)))) | | active(sel(0, cons(X, Y))) | → | mark(X) |
active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(f(X)) | → | f(active(X)) |
active(cons(X1, X2)) | → | cons(active(X1), X2) | | active(g(X)) | → | g(active(X)) |
active(s(X)) | → | s(active(X)) | | active(sel(X1, X2)) | → | sel(active(X1), X2) |
active(sel(X1, X2)) | → | sel(X1, active(X2)) | | f(mark(X)) | → | mark(f(X)) |
cons(mark(X1), X2) | → | mark(cons(X1, X2)) | | g(mark(X)) | → | mark(g(X)) |
s(mark(X)) | → | mark(s(X)) | | sel(mark(X1), X2) | → | mark(sel(X1, X2)) |
sel(X1, mark(X2)) | → | mark(sel(X1, X2)) | | proper(f(X)) | → | f(proper(X)) |
proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(g(X)) | → | g(proper(X)) |
proper(0) | → | ok(0) | | proper(s(X)) | → | s(proper(X)) |
proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | f(ok(X)) | → | ok(f(X)) |
cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | g(ok(X)) | → | ok(g(X)) |
s(ok(X)) | → | ok(s(X)) | | sel(ok(X1), ok(X2)) | → | ok(sel(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: f, g, 0, s, active, mark, ok, proper, sel, 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 9: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
proper#(sel(X1, X2)) | → | proper#(X1) | | proper#(s(X)) | → | proper#(X) |
proper#(cons(X1, X2)) | → | proper#(X1) | | proper#(f(X)) | → | proper#(X) |
proper#(cons(X1, X2)) | → | proper#(X2) | | proper#(g(X)) | → | proper#(X) |
proper#(sel(X1, X2)) | → | proper#(X2) |
Rewrite Rules
active(f(X)) | → | mark(cons(X, f(g(X)))) | | active(g(0)) | → | mark(s(0)) |
active(g(s(X))) | → | mark(s(s(g(X)))) | | active(sel(0, cons(X, Y))) | → | mark(X) |
active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(f(X)) | → | f(active(X)) |
active(cons(X1, X2)) | → | cons(active(X1), X2) | | active(g(X)) | → | g(active(X)) |
active(s(X)) | → | s(active(X)) | | active(sel(X1, X2)) | → | sel(active(X1), X2) |
active(sel(X1, X2)) | → | sel(X1, active(X2)) | | f(mark(X)) | → | mark(f(X)) |
cons(mark(X1), X2) | → | mark(cons(X1, X2)) | | g(mark(X)) | → | mark(g(X)) |
s(mark(X)) | → | mark(s(X)) | | sel(mark(X1), X2) | → | mark(sel(X1, X2)) |
sel(X1, mark(X2)) | → | mark(sel(X1, X2)) | | proper(f(X)) | → | f(proper(X)) |
proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(g(X)) | → | g(proper(X)) |
proper(0) | → | ok(0) | | proper(s(X)) | → | s(proper(X)) |
proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | f(ok(X)) | → | ok(f(X)) |
cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | g(ok(X)) | → | ok(g(X)) |
s(ok(X)) | → | ok(s(X)) | | sel(ok(X1), ok(X2)) | → | ok(sel(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: f, g, 0, s, active, mark, ok, proper, sel, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
proper#(sel(X1, X2)) | → | proper#(X1) | | proper#(s(X)) | → | proper#(X) |
proper#(cons(X1, X2)) | → | proper#(X1) | | proper#(f(X)) | → | proper#(X) |
proper#(cons(X1, X2)) | → | proper#(X2) | | proper#(g(X)) | → | proper#(X) |
proper#(sel(X1, X2)) | → | proper#(X2) |