TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60001 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (21419ms).
| Problem 2 was processed with processor SubtermCriterion (5ms).
| Problem 3 was processed with processor SubtermCriterion (2ms).
| Problem 4 was processed with processor SubtermCriterion (5ms).
| Problem 5 was processed with processor SubtermCriterion (2ms).
| Problem 6 was processed with processor SubtermCriterion (1ms).
| Problem 7 was processed with processor SubtermCriterion (41ms).
| | Problem 20 was processed with processor ReductionPairSAT (70ms).
| Problem 8 was processed with processor SubtermCriterion (1ms).
| Problem 9 was processed with processor SubtermCriterion (3ms).
| Problem 10 was processed with processor SubtermCriterion (3ms).
| Problem 11 was processed with processor SubtermCriterion (2ms).
| | Problem 21 was processed with processor ReductionPairSAT (59ms).
| Problem 12 was processed with processor SubtermCriterion (1ms).
| Problem 13 was processed with processor SubtermCriterion (4ms).
| Problem 14 was processed with processor SubtermCriterion (2ms).
| | Problem 22 was processed with processor ReductionPairSAT (32ms).
| Problem 15 was processed with processor SubtermCriterion (1ms).
| | Problem 23 was processed with processor ReductionPairSAT (69ms).
| Problem 16 was processed with processor SubtermCriterion (1ms).
| Problem 17 remains open; application of the following processors failed [SubtermCriterion (4ms), DependencyGraph (8ms), PolynomialLinearRange4iUR (1428ms), DependencyGraph (8ms), PolynomialLinearRange4iUR (1667ms), DependencyGraph (8ms), PolynomialLinearRange8NegiUR (5000ms), DependencyGraph (6ms), ReductionPairSAT (11192ms), DependencyGraph (7ms), ReductionPairSAT (11006ms), DependencyGraph (8ms), SizeChangePrinciple (timeout)].
| Problem 18 was processed with processor SubtermCriterion (4ms).
| | Problem 25 was processed with processor ReductionPairSAT (114ms).
| Problem 19 was processed with processor SubtermCriterion (2ms).
| | Problem 24 was processed with processor PolynomialLinearRange4iUR (56ms).
The following open problems remain:
Open Dependency Pair Problem 17
Dependency Pairs
| top#(mark(X)) | → | top#(proper(X)) | | top#(ok(X)) | → | top#(active(X)) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, proper, nil1, sel, first, top, cons, nil
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| proper#(sel1(X1, X2)) | → | proper#(X1) | | proper#(cons(X1, X2)) | → | proper#(X1) |
| active#(unquote(s1(X))) | → | s#(unquote(X)) | | active#(sel1(X1, X2)) | → | active#(X2) |
| proper#(s1(X)) | → | proper#(X) | | active#(unquote1(X)) | → | active#(X) |
| active#(sel1(X1, X2)) | → | active#(X1) | | unquote#(ok(X)) | → | unquote#(X) |
| fcons#(mark(X1), X2) | → | fcons#(X1, X2) | | active#(first(s(X), cons(Y, Z))) | → | cons#(Y, first(X, Z)) |
| active#(s1(X)) | → | active#(X) | | proper#(quote(X)) | → | quote#(proper(X)) |
| active#(s1(X)) | → | s1#(active(X)) | | cons1#(X1, mark(X2)) | → | cons1#(X1, X2) |
| top#(mark(X)) | → | proper#(X) | | active#(first(X1, X2)) | → | active#(X2) |
| first1#(mark(X1), X2) | → | first1#(X1, X2) | | active#(sel(s(X), cons(Y, Z))) | → | sel#(X, Z) |
| s1#(ok(X)) | → | s1#(X) | | proper#(first(X1, X2)) | → | first#(proper(X1), proper(X2)) |
| active#(quote(s(X))) | → | quote#(X) | | active#(first1(X1, X2)) | → | active#(X2) |
| active#(fcons(X1, X2)) | → | fcons#(active(X1), X2) | | active#(cons1(X1, X2)) | → | active#(X2) |
| sel#(X1, mark(X2)) | → | sel#(X1, X2) | | active#(first1(X1, X2)) | → | active#(X1) |
| proper#(first(X1, X2)) | → | proper#(X2) | | active#(quote1(cons(X, Z))) | → | quote#(X) |
| proper#(cons1(X1, X2)) | → | proper#(X2) | | proper#(cons1(X1, X2)) | → | cons1#(proper(X1), proper(X2)) |
| proper#(sel1(X1, X2)) | → | proper#(X2) | | sel#(ok(X1), ok(X2)) | → | sel#(X1, X2) |
| active#(fcons(X1, X2)) | → | active#(X1) | | active#(cons1(X1, X2)) | → | active#(X1) |
| active#(quote(s(X))) | → | s1#(quote(X)) | | unquote1#(mark(X)) | → | unquote1#(X) |
| cons#(mark(X1), X2) | → | cons#(X1, X2) | | active#(first(X1, X2)) | → | first#(X1, active(X2)) |
| from#(mark(X)) | → | from#(X) | | active#(unquote(X)) | → | active#(X) |
| top#(ok(X)) | → | active#(X) | | sel1#(X1, mark(X2)) | → | sel1#(X1, X2) |
| active#(sel(X1, X2)) | → | active#(X1) | | proper#(s1(X)) | → | s1#(proper(X)) |
| proper#(from(X)) | → | from#(proper(X)) | | proper#(sel(X1, X2)) | → | proper#(X2) |
| active#(first1(X1, X2)) | → | first1#(active(X1), X2) | | active#(quote1(first(X, Z))) | → | first1#(X, Z) |
| first#(X1, mark(X2)) | → | first#(X1, X2) | | active#(sel(X1, X2)) | → | sel#(X1, active(X2)) |
| active#(sel(X1, X2)) | → | sel#(active(X1), X2) | | active#(cons1(X1, X2)) | → | cons1#(X1, active(X2)) |
| fcons#(ok(X1), ok(X2)) | → | fcons#(X1, X2) | | proper#(quote1(X)) | → | proper#(X) |
| active#(s(X)) | → | s#(active(X)) | | s#(ok(X)) | → | s#(X) |
| proper#(sel(X1, X2)) | → | proper#(X1) | | first#(ok(X1), ok(X2)) | → | first#(X1, X2) |
| active#(first(X1, X2)) | → | first#(active(X1), X2) | | cons1#(mark(X1), X2) | → | cons1#(X1, X2) |
| proper#(s(X)) | → | s#(proper(X)) | | proper#(first(X1, X2)) | → | proper#(X1) |
| first1#(X1, mark(X2)) | → | first1#(X1, X2) | | active#(from(X)) | → | from#(s(X)) |
| top#(ok(X)) | → | top#(active(X)) | | unquote1#(ok(X)) | → | unquote1#(X) |
| cons#(ok(X1), ok(X2)) | → | cons#(X1, X2) | | from#(ok(X)) | → | from#(X) |
| active#(cons1(X1, X2)) | → | cons1#(active(X1), X2) | | active#(cons(X1, X2)) | → | cons#(active(X1), X2) |
| active#(fcons(X, Z)) | → | cons#(X, Z) | | active#(quote1(cons(X, Z))) | → | cons1#(quote(X), quote1(Z)) |
| active#(first1(s(X), cons(Y, Z))) | → | first1#(X, Z) | | active#(sel(X1, X2)) | → | active#(X2) |
| proper#(cons1(X1, X2)) | → | proper#(X1) | | sel1#(ok(X1), ok(X2)) | → | sel1#(X1, X2) |
| proper#(unquote(X)) | → | proper#(X) | | first#(mark(X1), X2) | → | first#(X1, X2) |
| proper#(from(X)) | → | proper#(X) | | proper#(quote1(X)) | → | quote1#(proper(X)) |
| top#(mark(X)) | → | top#(proper(X)) | | proper#(cons(X1, X2)) | → | proper#(X2) |
| active#(first1(s(X), cons(Y, Z))) | → | cons1#(quote(Y), first1(X, Z)) | | active#(first1(s(X), cons(Y, Z))) | → | quote#(Y) |
| active#(first(X1, X2)) | → | active#(X1) | | active#(unquote1(cons1(X, Z))) | → | unquote1#(Z) |
| active#(fcons(X1, X2)) | → | fcons#(X1, active(X2)) | | active#(from(X)) | → | s#(X) |
| active#(unquote(X)) | → | unquote#(active(X)) | | proper#(s(X)) | → | proper#(X) |
| sel1#(mark(X1), X2) | → | sel1#(X1, X2) | | quote1#(ok(X)) | → | quote1#(X) |
| proper#(quote(X)) | → | proper#(X) | | proper#(unquote(X)) | → | unquote#(proper(X)) |
| active#(cons(X1, X2)) | → | active#(X1) | | sel#(mark(X1), X2) | → | sel#(X1, X2) |
| proper#(fcons(X1, X2)) | → | fcons#(proper(X1), proper(X2)) | | first1#(ok(X1), ok(X2)) | → | first1#(X1, X2) |
| active#(from(X)) | → | from#(active(X)) | | active#(sel1(X1, X2)) | → | sel1#(X1, active(X2)) |
| active#(fcons(X1, X2)) | → | active#(X2) | | active#(quote1(cons(X, Z))) | → | quote1#(Z) |
| proper#(sel(X1, X2)) | → | sel#(proper(X1), proper(X2)) | | proper#(unquote1(X)) | → | proper#(X) |
| active#(first(s(X), cons(Y, Z))) | → | first#(X, Z) | | quote#(ok(X)) | → | quote#(X) |
| active#(sel1(s(X), cons(Y, Z))) | → | sel1#(X, Z) | | active#(from(X)) | → | cons#(X, from(s(X))) |
| active#(sel1(X1, X2)) | → | sel1#(active(X1), X2) | | proper#(first1(X1, X2)) | → | proper#(X1) |
| proper#(fcons(X1, X2)) | → | proper#(X1) | | unquote#(mark(X)) | → | unquote#(X) |
| s1#(mark(X)) | → | s1#(X) | | proper#(first1(X1, X2)) | → | proper#(X2) |
| active#(from(X)) | → | active#(X) | | cons1#(ok(X1), ok(X2)) | → | cons1#(X1, X2) |
| active#(quote(sel(X, Z))) | → | sel1#(X, Z) | | proper#(fcons(X1, X2)) | → | proper#(X2) |
| proper#(unquote1(X)) | → | unquote1#(proper(X)) | | proper#(sel1(X1, X2)) | → | sel1#(proper(X1), proper(X2)) |
| s#(mark(X)) | → | s#(X) | | active#(unquote1(cons1(X, Z))) | → | unquote#(X) |
| proper#(first1(X1, X2)) | → | first1#(proper(X1), proper(X2)) | | proper#(cons(X1, X2)) | → | cons#(proper(X1), proper(X2)) |
| active#(unquote1(X)) | → | unquote1#(active(X)) | | active#(s(X)) | → | active#(X) |
| active#(first1(X1, X2)) | → | first1#(X1, active(X2)) | | active#(unquote1(cons1(X, Z))) | → | fcons#(unquote(X), unquote1(Z)) |
| active#(sel1(0, cons(X, Z))) | → | quote#(X) | | fcons#(X1, mark(X2)) | → | fcons#(X1, X2) |
| active#(unquote(s1(X))) | → | unquote#(X) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
The following SCCs where found
| sel#(mark(X1), X2) → sel#(X1, X2) | sel#(ok(X1), ok(X2)) → sel#(X1, X2) |
| sel#(X1, mark(X2)) → sel#(X1, X2) |
| sel1#(X1, mark(X2)) → sel1#(X1, X2) | sel1#(mark(X1), X2) → sel1#(X1, X2) |
| sel1#(ok(X1), ok(X2)) → sel1#(X1, X2) |
| first1#(mark(X1), X2) → first1#(X1, X2) | first1#(ok(X1), ok(X2)) → first1#(X1, X2) |
| first1#(X1, mark(X2)) → first1#(X1, X2) |
| proper#(fcons(X1, X2)) → proper#(X1) | proper#(first1(X1, X2)) → proper#(X1) |
| proper#(sel1(X1, X2)) → proper#(X1) | proper#(cons(X1, X2)) → proper#(X1) |
| proper#(cons(X1, X2)) → proper#(X2) | proper#(first1(X1, X2)) → proper#(X2) |
| proper#(s1(X)) → proper#(X) | proper#(fcons(X1, X2)) → proper#(X2) |
| proper#(quote1(X)) → proper#(X) | proper#(unquote1(X)) → proper#(X) |
| proper#(sel(X1, X2)) → proper#(X1) | proper#(first(X1, X2)) → proper#(X2) |
| proper#(cons1(X1, X2)) → proper#(X2) | proper#(s(X)) → proper#(X) |
| proper#(sel1(X1, X2)) → proper#(X2) | proper#(first(X1, X2)) → proper#(X1) |
| proper#(cons1(X1, X2)) → proper#(X1) | proper#(quote(X)) → proper#(X) |
| proper#(sel(X1, X2)) → proper#(X2) | proper#(unquote(X)) → proper#(X) |
| proper#(from(X)) → proper#(X) |
| s#(mark(X)) → s#(X) | s#(ok(X)) → s#(X) |
| quote#(ok(X)) → quote#(X) |
| cons#(mark(X1), X2) → cons#(X1, X2) | cons#(ok(X1), ok(X2)) → cons#(X1, X2) |
| s1#(mark(X)) → s1#(X) | s1#(ok(X)) → s1#(X) |
| quote1#(ok(X)) → quote1#(X) |
| unquote#(mark(X)) → unquote#(X) | unquote#(ok(X)) → unquote#(X) |
| fcons#(ok(X1), ok(X2)) → fcons#(X1, X2) | fcons#(X1, mark(X2)) → fcons#(X1, X2) |
| fcons#(mark(X1), X2) → fcons#(X1, X2) |
| active#(first(X1, X2)) → active#(X2) | active#(sel1(X1, X2)) → active#(X2) |
| active#(from(X)) → active#(X) | active#(first1(X1, X2)) → active#(X2) |
| active#(unquote1(X)) → active#(X) | active#(sel1(X1, X2)) → active#(X1) |
| active#(cons1(X1, X2)) → active#(X2) | active#(first1(X1, X2)) → active#(X1) |
| active#(fcons(X1, X2)) → active#(X2) | active#(unquote(X)) → active#(X) |
| active#(first(X1, X2)) → active#(X1) | active#(unquote1(cons1(X, Z))) → unquote#(X) |
| active#(sel(X1, X2)) → active#(X2) | active#(s1(X)) → active#(X) |
| active#(s(X)) → active#(X) | active#(sel(X1, X2)) → active#(X1) |
| active#(fcons(X1, X2)) → active#(X1) | active#(cons1(X1, X2)) → active#(X1) |
| active#(cons(X1, X2)) → active#(X1) |
| active#(first(X1, X2)) → active#(X2) | active#(sel1(X1, X2)) → active#(X2) |
| active#(from(X)) → active#(X) | active#(unquote1(X)) → active#(X) |
| active#(first1(X1, X2)) → active#(X2) | active#(sel1(X1, X2)) → active#(X1) |
| active#(cons1(X1, X2)) → active#(X2) | active#(fcons(X1, X2)) → active#(X2) |
| active#(first1(X1, X2)) → active#(X1) | active#(first(X1, X2)) → active#(X1) |
| active#(unquote(X)) → active#(X) | active#(sel(X1, X2)) → active#(X2) |
| active#(s1(X)) → active#(X) | active#(sel(X1, X2)) → active#(X1) |
| active#(s(X)) → active#(X) | active#(fcons(X1, X2)) → active#(X1) |
| active#(cons1(X1, X2)) → active#(X1) | active#(cons(X1, X2)) → active#(X1) |
| unquote1#(mark(X)) → unquote1#(X) | unquote1#(ok(X)) → unquote1#(X) |
| from#(mark(X)) → from#(X) | from#(ok(X)) → from#(X) |
| top#(mark(X)) → top#(proper(X)) | top#(ok(X)) → top#(active(X)) |
| cons1#(mark(X1), X2) → cons1#(X1, X2) | cons1#(ok(X1), ok(X2)) → cons1#(X1, X2) |
| cons1#(X1, mark(X2)) → cons1#(X1, X2) |
| 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
| active#(first(X1, X2)) | → | active#(X2) | | active#(sel1(X1, X2)) | → | active#(X2) |
| active#(from(X)) | → | active#(X) | | active#(first1(X1, X2)) | → | active#(X2) |
| active#(unquote1(X)) | → | active#(X) | | active#(sel1(X1, X2)) | → | active#(X1) |
| active#(cons1(X1, X2)) | → | active#(X2) | | active#(first1(X1, X2)) | → | active#(X1) |
| active#(fcons(X1, X2)) | → | active#(X2) | | active#(unquote(X)) | → | active#(X) |
| active#(first(X1, X2)) | → | active#(X1) | | active#(s1(X)) | → | active#(X) |
| active#(sel(X1, X2)) | → | active#(X2) | | active#(sel(X1, X2)) | → | active#(X1) |
| active#(s(X)) | → | active#(X) | | active#(fcons(X1, X2)) | → | active#(X1) |
| active#(cons1(X1, X2)) | → | active#(X1) | | active#(cons(X1, X2)) | → | active#(X1) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| active#(first(X1, X2)) | → | active#(X2) | | active#(sel1(X1, X2)) | → | active#(X2) |
| active#(from(X)) | → | active#(X) | | active#(first1(X1, X2)) | → | active#(X2) |
| active#(unquote1(X)) | → | active#(X) | | active#(sel1(X1, X2)) | → | active#(X1) |
| active#(cons1(X1, X2)) | → | active#(X2) | | active#(fcons(X1, X2)) | → | active#(X2) |
| active#(first1(X1, X2)) | → | active#(X1) | | active#(first(X1, X2)) | → | active#(X1) |
| active#(unquote(X)) | → | active#(X) | | active#(sel(X1, X2)) | → | active#(X2) |
| active#(s1(X)) | → | active#(X) | | active#(s(X)) | → | active#(X) |
| active#(sel(X1, X2)) | → | active#(X1) | | active#(fcons(X1, X2)) | → | active#(X1) |
| active#(cons1(X1, X2)) | → | active#(X1) | | active#(cons(X1, X2)) | → | active#(X1) |
Problem 3: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| proper#(sel1(X1, X2)) | → | proper#(X1) | | proper#(first1(X1, X2)) | → | proper#(X1) |
| proper#(fcons(X1, X2)) | → | proper#(X1) | | proper#(cons(X1, X2)) | → | proper#(X1) |
| proper#(first1(X1, X2)) | → | proper#(X2) | | proper#(cons(X1, X2)) | → | proper#(X2) |
| proper#(s1(X)) | → | proper#(X) | | proper#(fcons(X1, X2)) | → | proper#(X2) |
| proper#(quote1(X)) | → | proper#(X) | | proper#(unquote1(X)) | → | proper#(X) |
| proper#(first(X1, X2)) | → | proper#(X2) | | proper#(sel(X1, X2)) | → | proper#(X1) |
| proper#(cons1(X1, X2)) | → | proper#(X2) | | proper#(s(X)) | → | proper#(X) |
| proper#(sel1(X1, X2)) | → | proper#(X2) | | proper#(first(X1, X2)) | → | proper#(X1) |
| proper#(cons1(X1, X2)) | → | proper#(X1) | | proper#(quote(X)) | → | proper#(X) |
| proper#(sel(X1, X2)) | → | proper#(X2) | | proper#(unquote(X)) | → | proper#(X) |
| proper#(from(X)) | → | proper#(X) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| proper#(sel1(X1, X2)) | → | proper#(X1) | | proper#(first1(X1, X2)) | → | proper#(X1) |
| proper#(fcons(X1, X2)) | → | proper#(X1) | | proper#(cons(X1, X2)) | → | proper#(X1) |
| proper#(first1(X1, X2)) | → | proper#(X2) | | proper#(cons(X1, X2)) | → | proper#(X2) |
| proper#(s1(X)) | → | proper#(X) | | proper#(fcons(X1, X2)) | → | proper#(X2) |
| proper#(quote1(X)) | → | proper#(X) | | proper#(unquote1(X)) | → | proper#(X) |
| proper#(sel(X1, X2)) | → | proper#(X1) | | proper#(first(X1, X2)) | → | proper#(X2) |
| proper#(cons1(X1, X2)) | → | proper#(X2) | | proper#(s(X)) | → | proper#(X) |
| proper#(sel1(X1, X2)) | → | proper#(X2) | | proper#(first(X1, X2)) | → | proper#(X1) |
| proper#(cons1(X1, X2)) | → | proper#(X1) | | proper#(quote(X)) | → | proper#(X) |
| proper#(sel(X1, X2)) | → | proper#(X2) | | proper#(unquote(X)) | → | proper#(X) |
| proper#(from(X)) | → | proper#(X) |
Problem 4: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| unquote1#(mark(X)) | → | unquote1#(X) | | unquote1#(ok(X)) | → | unquote1#(X) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| unquote1#(mark(X)) | → | unquote1#(X) | | unquote1#(ok(X)) | → | unquote1#(X) |
Problem 5: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| cons#(mark(X1), X2) | → | cons#(X1, X2) | | cons#(ok(X1), ok(X2)) | → | cons#(X1, X2) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, 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 6: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| unquote#(mark(X)) | → | unquote#(X) | | unquote#(ok(X)) | → | unquote#(X) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| unquote#(mark(X)) | → | unquote#(X) | | unquote#(ok(X)) | → | unquote#(X) |
Problem 7: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| cons1#(mark(X1), X2) | → | cons1#(X1, X2) | | cons1#(ok(X1), ok(X2)) | → | cons1#(X1, X2) |
| cons1#(X1, mark(X2)) | → | cons1#(X1, X2) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| cons1#(mark(X1), X2) | → | cons1#(X1, X2) | | cons1#(ok(X1), ok(X2)) | → | cons1#(X1, X2) |
Problem 20: ReductionPairSAT
Dependency Pair Problem
Dependency Pairs
| cons1#(X1, mark(X2)) | → | cons1#(X1, X2) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, proper, nil1, sel, first, top, cons, nil
Strategy
Function Precedence
mark < cons1# = cons1 = s1 = fcons = from = 01 = first1 = quote1 = unquote = 0 = s = sel1 = unquote1 = quote = active = ok = proper = nil1 = sel = first = top = nil = cons
Argument Filtering
cons1#: collapses to 2
cons1: all arguments are removed from cons1
s1: all arguments are removed from s1
mark: 1
fcons: all arguments are removed from fcons
from: all arguments are removed from from
01: all arguments are removed from 01
first1: 2
quote1: all arguments are removed from quote1
unquote: all arguments are removed from unquote
0: all arguments are removed from 0
s: all arguments are removed from s
sel1: all arguments are removed from sel1
unquote1: collapses to 1
quote: all arguments are removed from quote
active: all arguments are removed from active
ok: all arguments are removed from ok
proper: all arguments are removed from proper
nil1: all arguments are removed from nil1
sel: all arguments are removed from sel
first: 1 2
top: all arguments are removed from top
nil: all arguments are removed from nil
cons: 1 2
Status
cons1: multiset
s1: multiset
mark: multiset
fcons: multiset
from: multiset
01: multiset
first1: lexicographic with permutation 2 → 1
quote1: multiset
unquote: multiset
0: multiset
s: multiset
sel1: multiset
quote: multiset
active: multiset
ok: multiset
proper: multiset
nil1: multiset
sel: multiset
first: lexicographic with permutation 1 → 1 2 → 2
top: multiset
nil: multiset
cons: lexicographic with permutation 1 → 1 2 → 2
Usable Rules
There are no usable rules.
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.
| cons1#(X1, mark(X2)) → cons1#(X1, X2) |
Problem 8: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| s1#(mark(X)) | → | s1#(X) | | s1#(ok(X)) | → | s1#(X) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| s1#(mark(X)) | → | s1#(X) | | s1#(ok(X)) | → | s1#(X) |
Problem 9: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| active#(first(X1, X2)) | → | active#(X2) | | active#(sel1(X1, X2)) | → | active#(X2) |
| active#(from(X)) | → | active#(X) | | active#(unquote1(X)) | → | active#(X) |
| active#(first1(X1, X2)) | → | active#(X2) | | active#(sel1(X1, X2)) | → | active#(X1) |
| active#(cons1(X1, X2)) | → | active#(X2) | | active#(fcons(X1, X2)) | → | active#(X2) |
| active#(first1(X1, X2)) | → | active#(X1) | | active#(first(X1, X2)) | → | active#(X1) |
| active#(unquote(X)) | → | active#(X) | | active#(unquote1(cons1(X, Z))) | → | unquote#(X) |
| active#(sel(X1, X2)) | → | active#(X2) | | active#(s1(X)) | → | active#(X) |
| active#(s(X)) | → | active#(X) | | active#(sel(X1, X2)) | → | active#(X1) |
| active#(fcons(X1, X2)) | → | active#(X1) | | active#(cons1(X1, X2)) | → | active#(X1) |
| active#(cons(X1, X2)) | → | active#(X1) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
- π (unquote#): 1
- π (active#): 1
Thus, the following dependency pairs are removed:
| active#(first(X1, X2)) | → | active#(X2) | | active#(sel1(X1, X2)) | → | active#(X2) |
| active#(from(X)) | → | active#(X) | | active#(unquote1(X)) | → | active#(X) |
| active#(first1(X1, X2)) | → | active#(X2) | | active#(sel1(X1, X2)) | → | active#(X1) |
| active#(cons1(X1, X2)) | → | active#(X2) | | active#(fcons(X1, X2)) | → | active#(X2) |
| active#(first1(X1, X2)) | → | active#(X1) | | active#(first(X1, X2)) | → | active#(X1) |
| active#(unquote(X)) | → | active#(X) | | active#(unquote1(cons1(X, Z))) | → | unquote#(X) |
| active#(sel(X1, X2)) | → | active#(X2) | | active#(s1(X)) | → | active#(X) |
| active#(s(X)) | → | active#(X) | | active#(sel(X1, X2)) | → | active#(X1) |
| active#(fcons(X1, X2)) | → | active#(X1) | | active#(cons1(X1, X2)) | → | active#(X1) |
| active#(cons(X1, X2)) | → | active#(X1) |
Problem 10: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| quote#(ok(X)) | → | quote#(X) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| quote#(ok(X)) | → | quote#(X) |
Problem 11: 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(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, 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 21: ReductionPairSAT
Dependency Pair Problem
Dependency Pairs
| first#(X1, mark(X2)) | → | first#(X1, X2) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, proper, nil1, sel, first, top, cons, nil
Strategy
Function Precedence
cons1 = s1 = mark = fcons = from = 01 = first1 = quote1 = first# = unquote = 0 = s = sel1 = unquote1 = quote = active = ok = nil1 = proper = sel = first = top = nil = cons
Argument Filtering
cons1: 1 2
s1: collapses to 1
mark: 1
fcons: all arguments are removed from fcons
from: collapses to 1
01: all arguments are removed from 01
first1: 1 2
quote1: all arguments are removed from quote1
first#: collapses to 2
unquote: all arguments are removed from unquote
0: all arguments are removed from 0
s: all arguments are removed from s
sel1: all arguments are removed from sel1
unquote1: all arguments are removed from unquote1
quote: all arguments are removed from quote
active: all arguments are removed from active
ok: all arguments are removed from ok
nil1: all arguments are removed from nil1
proper: all arguments are removed from proper
sel: 1 2
first: 2
top: 1
nil: all arguments are removed from nil
cons: 1 2
Status
cons1: lexicographic with permutation 1 → 1 2 → 2
mark: lexicographic with permutation 1 → 1
fcons: multiset
01: multiset
first1: lexicographic with permutation 1 → 2 2 → 1
quote1: multiset
unquote: multiset
0: multiset
s: multiset
sel1: multiset
unquote1: multiset
quote: multiset
active: multiset
ok: multiset
nil1: multiset
proper: multiset
sel: lexicographic with permutation 1 → 1 2 → 2
first: lexicographic with permutation 2 → 1
top: lexicographic with permutation 1 → 1
nil: multiset
cons: lexicographic with permutation 1 → 1 2 → 2
Usable Rules
There are no usable rules.
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.
| first#(X1, mark(X2)) → first#(X1, X2) |
Problem 12: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| s#(mark(X)) | → | s#(X) | | s#(ok(X)) | → | s#(X) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, 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 13: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| quote1#(ok(X)) | → | quote1#(X) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| quote1#(ok(X)) | → | quote1#(X) |
Problem 14: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| fcons#(ok(X1), ok(X2)) | → | fcons#(X1, X2) | | fcons#(X1, mark(X2)) | → | fcons#(X1, X2) |
| fcons#(mark(X1), X2) | → | fcons#(X1, X2) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| fcons#(ok(X1), ok(X2)) | → | fcons#(X1, X2) | | fcons#(mark(X1), X2) | → | fcons#(X1, X2) |
Problem 22: ReductionPairSAT
Dependency Pair Problem
Dependency Pairs
| fcons#(X1, mark(X2)) | → | fcons#(X1, X2) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, proper, nil1, sel, first, top, cons, nil
Strategy
Function Precedence
cons1 = s1 = fcons# = mark = fcons = from = 01 = first1 = quote1 = unquote = 0 = s = sel1 = unquote1 = quote = active = ok = proper = nil1 = sel = first = top = nil = cons
Argument Filtering
cons1: all arguments are removed from cons1
s1: all arguments are removed from s1
fcons#: 2
mark: 1
fcons: all arguments are removed from fcons
from: all arguments are removed from from
01: all arguments are removed from 01
first1: all arguments are removed from first1
quote1: all arguments are removed from quote1
unquote: all arguments are removed from unquote
0: all arguments are removed from 0
s: all arguments are removed from s
sel1: all arguments are removed from sel1
unquote1: all arguments are removed from unquote1
quote: all arguments are removed from quote
active: all arguments are removed from active
ok: all arguments are removed from ok
proper: all arguments are removed from proper
nil1: all arguments are removed from nil1
sel: all arguments are removed from sel
first: all arguments are removed from first
top: 1
nil: all arguments are removed from nil
cons: 1 2
Status
cons1: multiset
s1: multiset
fcons#: lexicographic with permutation 2 → 1
mark: multiset
fcons: multiset
from: multiset
01: multiset
first1: multiset
quote1: multiset
unquote: multiset
0: multiset
s: multiset
sel1: multiset
unquote1: multiset
quote: multiset
active: multiset
ok: multiset
proper: multiset
nil1: multiset
sel: multiset
first: multiset
top: lexicographic with permutation 1 → 1
nil: multiset
cons: lexicographic with permutation 1 → 1 2 → 2
Usable Rules
There are no usable rules.
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.
| fcons#(X1, mark(X2)) → fcons#(X1, X2) |
Problem 15: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| first1#(mark(X1), X2) | → | first1#(X1, X2) | | first1#(ok(X1), ok(X2)) | → | first1#(X1, X2) |
| first1#(X1, mark(X2)) | → | first1#(X1, X2) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| first1#(mark(X1), X2) | → | first1#(X1, X2) | | first1#(ok(X1), ok(X2)) | → | first1#(X1, X2) |
Problem 23: ReductionPairSAT
Dependency Pair Problem
Dependency Pairs
| first1#(X1, mark(X2)) | → | first1#(X1, X2) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, proper, nil1, sel, first, top, cons, nil
Strategy
Function Precedence
first1# < mark < cons1 = s1 = fcons = from = 01 = first1 = quote1 = unquote = 0 = s = sel1 = unquote1 = quote = active = ok = proper = nil1 = sel = first = top = nil = cons
Argument Filtering
cons1: all arguments are removed from cons1
s1: all arguments are removed from s1
mark: 1
fcons: all arguments are removed from fcons
from: all arguments are removed from from
01: all arguments are removed from 01
first1: all arguments are removed from first1
quote1: all arguments are removed from quote1
unquote: all arguments are removed from unquote
0: all arguments are removed from 0
first1#: 1 2
s: all arguments are removed from s
sel1: collapses to 1
unquote1: collapses to 1
quote: collapses to 1
active: all arguments are removed from active
ok: all arguments are removed from ok
proper: all arguments are removed from proper
nil1: all arguments are removed from nil1
sel: 1 2
first: 1 2
top: all arguments are removed from top
nil: all arguments are removed from nil
cons: 1
Status
cons1: multiset
s1: multiset
mark: multiset
fcons: multiset
from: multiset
01: multiset
first1: multiset
quote1: multiset
unquote: multiset
0: multiset
first1#: multiset
s: multiset
active: multiset
ok: multiset
proper: multiset
nil1: multiset
sel: lexicographic with permutation 1 → 1 2 → 2
first: lexicographic with permutation 1 → 1 2 → 2
top: multiset
nil: multiset
cons: lexicographic with permutation 1 → 1
Usable Rules
There are no usable rules.
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.
| first1#(X1, mark(X2)) → first1#(X1, X2) |
Problem 16: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| from#(mark(X)) | → | from#(X) | | from#(ok(X)) | → | from#(X) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| from#(mark(X)) | → | from#(X) | | from#(ok(X)) | → | from#(X) |
Problem 18: 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(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, 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 25: ReductionPairSAT
Dependency Pair Problem
Dependency Pairs
| sel#(X1, mark(X2)) | → | sel#(X1, X2) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, proper, nil1, sel, first, top, cons, nil
Strategy
Function Precedence
mark < sel# < cons1 = s1 = fcons = from = 01 = first1 = quote1 = unquote = 0 = s = sel1 = unquote1 = quote = active = ok = proper = nil1 = sel = first = top = nil = cons
Argument Filtering
cons1: all arguments are removed from cons1
s1: all arguments are removed from s1
mark: 1
fcons: all arguments are removed from fcons
sel#: collapses to 2
from: all arguments are removed from from
01: all arguments are removed from 01
first1: all arguments are removed from first1
quote1: all arguments are removed from quote1
unquote: all arguments are removed from unquote
0: all arguments are removed from 0
s: all arguments are removed from s
sel1: all arguments are removed from sel1
unquote1: all arguments are removed from unquote1
quote: all arguments are removed from quote
active: all arguments are removed from active
ok: all arguments are removed from ok
proper: all arguments are removed from proper
nil1: all arguments are removed from nil1
sel: all arguments are removed from sel
first: all arguments are removed from first
top: all arguments are removed from top
nil: all arguments are removed from nil
cons: all arguments are removed from cons
Status
cons1: multiset
s1: multiset
mark: multiset
fcons: multiset
from: multiset
01: multiset
first1: multiset
quote1: multiset
unquote: multiset
0: multiset
s: multiset
sel1: multiset
unquote1: multiset
quote: multiset
active: multiset
ok: multiset
proper: multiset
nil1: multiset
sel: multiset
first: multiset
top: multiset
nil: multiset
cons: multiset
Usable Rules
There are no usable rules.
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.
| sel#(X1, mark(X2)) → sel#(X1, X2) |
Problem 19: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| sel1#(X1, mark(X2)) | → | sel1#(X1, X2) | | sel1#(mark(X1), X2) | → | sel1#(X1, X2) |
| sel1#(ok(X1), ok(X2)) | → | sel1#(X1, X2) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, nil1, proper, first, sel, nil, cons, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| sel1#(mark(X1), X2) | → | sel1#(X1, X2) | | sel1#(ok(X1), ok(X2)) | → | sel1#(X1, X2) |
Problem 24: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
| sel1#(X1, mark(X2)) | → | sel1#(X1, X2) |
Rewrite Rules
| active(sel(s(X), cons(Y, Z))) | → | mark(sel(X, Z)) | | active(sel(0, cons(X, Z))) | → | mark(X) |
| active(first(0, Z)) | → | mark(nil) | | active(first(s(X), cons(Y, Z))) | → | mark(cons(Y, first(X, Z))) |
| active(from(X)) | → | mark(cons(X, from(s(X)))) | | active(sel1(s(X), cons(Y, Z))) | → | mark(sel1(X, Z)) |
| active(sel1(0, cons(X, Z))) | → | mark(quote(X)) | | active(first1(0, Z)) | → | mark(nil1) |
| active(first1(s(X), cons(Y, Z))) | → | mark(cons1(quote(Y), first1(X, Z))) | | active(quote(0)) | → | mark(01) |
| active(quote1(cons(X, Z))) | → | mark(cons1(quote(X), quote1(Z))) | | active(quote1(nil)) | → | mark(nil1) |
| active(quote(s(X))) | → | mark(s1(quote(X))) | | active(quote(sel(X, Z))) | → | mark(sel1(X, Z)) |
| active(quote1(first(X, Z))) | → | mark(first1(X, Z)) | | active(unquote(01)) | → | mark(0) |
| active(unquote(s1(X))) | → | mark(s(unquote(X))) | | active(unquote1(nil1)) | → | mark(nil) |
| active(unquote1(cons1(X, Z))) | → | mark(fcons(unquote(X), unquote1(Z))) | | active(fcons(X, Z)) | → | mark(cons(X, Z)) |
| active(sel(X1, X2)) | → | sel(active(X1), X2) | | active(sel(X1, X2)) | → | sel(X1, active(X2)) |
| active(s(X)) | → | s(active(X)) | | active(cons(X1, X2)) | → | cons(active(X1), X2) |
| active(first(X1, X2)) | → | first(active(X1), X2) | | active(first(X1, X2)) | → | first(X1, active(X2)) |
| active(from(X)) | → | from(active(X)) | | active(sel1(X1, X2)) | → | sel1(active(X1), X2) |
| active(sel1(X1, X2)) | → | sel1(X1, active(X2)) | | active(first1(X1, X2)) | → | first1(active(X1), X2) |
| active(first1(X1, X2)) | → | first1(X1, active(X2)) | | active(cons1(X1, X2)) | → | cons1(active(X1), X2) |
| active(cons1(X1, X2)) | → | cons1(X1, active(X2)) | | active(s1(X)) | → | s1(active(X)) |
| active(unquote(X)) | → | unquote(active(X)) | | active(unquote1(X)) | → | unquote1(active(X)) |
| active(fcons(X1, X2)) | → | fcons(active(X1), X2) | | active(fcons(X1, X2)) | → | fcons(X1, active(X2)) |
| sel(mark(X1), X2) | → | mark(sel(X1, X2)) | | sel(X1, mark(X2)) | → | mark(sel(X1, X2)) |
| s(mark(X)) | → | mark(s(X)) | | cons(mark(X1), X2) | → | mark(cons(X1, X2)) |
| first(mark(X1), X2) | → | mark(first(X1, X2)) | | first(X1, mark(X2)) | → | mark(first(X1, X2)) |
| from(mark(X)) | → | mark(from(X)) | | sel1(mark(X1), X2) | → | mark(sel1(X1, X2)) |
| sel1(X1, mark(X2)) | → | mark(sel1(X1, X2)) | | first1(mark(X1), X2) | → | mark(first1(X1, X2)) |
| first1(X1, mark(X2)) | → | mark(first1(X1, X2)) | | cons1(mark(X1), X2) | → | mark(cons1(X1, X2)) |
| cons1(X1, mark(X2)) | → | mark(cons1(X1, X2)) | | s1(mark(X)) | → | mark(s1(X)) |
| unquote(mark(X)) | → | mark(unquote(X)) | | unquote1(mark(X)) | → | mark(unquote1(X)) |
| fcons(mark(X1), X2) | → | mark(fcons(X1, X2)) | | fcons(X1, mark(X2)) | → | mark(fcons(X1, X2)) |
| proper(sel(X1, X2)) | → | sel(proper(X1), proper(X2)) | | proper(s(X)) | → | s(proper(X)) |
| proper(cons(X1, X2)) | → | cons(proper(X1), proper(X2)) | | proper(0) | → | ok(0) |
| proper(first(X1, X2)) | → | first(proper(X1), proper(X2)) | | proper(nil) | → | ok(nil) |
| proper(from(X)) | → | from(proper(X)) | | proper(sel1(X1, X2)) | → | sel1(proper(X1), proper(X2)) |
| proper(quote(X)) | → | quote(proper(X)) | | proper(first1(X1, X2)) | → | first1(proper(X1), proper(X2)) |
| proper(nil1) | → | ok(nil1) | | proper(cons1(X1, X2)) | → | cons1(proper(X1), proper(X2)) |
| proper(01) | → | ok(01) | | proper(quote1(X)) | → | quote1(proper(X)) |
| proper(s1(X)) | → | s1(proper(X)) | | proper(unquote(X)) | → | unquote(proper(X)) |
| proper(unquote1(X)) | → | unquote1(proper(X)) | | proper(fcons(X1, X2)) | → | fcons(proper(X1), proper(X2)) |
| sel(ok(X1), ok(X2)) | → | ok(sel(X1, X2)) | | s(ok(X)) | → | ok(s(X)) |
| cons(ok(X1), ok(X2)) | → | ok(cons(X1, X2)) | | first(ok(X1), ok(X2)) | → | ok(first(X1, X2)) |
| from(ok(X)) | → | ok(from(X)) | | sel1(ok(X1), ok(X2)) | → | ok(sel1(X1, X2)) |
| quote(ok(X)) | → | ok(quote(X)) | | first1(ok(X1), ok(X2)) | → | ok(first1(X1, X2)) |
| cons1(ok(X1), ok(X2)) | → | ok(cons1(X1, X2)) | | quote1(ok(X)) | → | ok(quote1(X)) |
| s1(ok(X)) | → | ok(s1(X)) | | unquote(ok(X)) | → | ok(unquote(X)) |
| unquote1(ok(X)) | → | ok(unquote1(X)) | | fcons(ok(X1), ok(X2)) | → | ok(fcons(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: s1, cons1, mark, fcons, from, 01, first1, quote1, unquote, 0, s, sel1, unquote1, quote, active, ok, proper, nil1, sel, first, top, cons, nil
Strategy
Polynomial Interpretation
- 0: 0
- 01: 0
- active(x): 0
- cons(x,y): 0
- cons1(x,y): 0
- fcons(x,y): 0
- first(x,y): 0
- first1(x,y): 0
- from(x): 0
- mark(x): x + 2
- nil: 0
- nil1: 0
- ok(x): 0
- proper(x): 0
- quote(x): 0
- quote1(x): 0
- s(x): 0
- s1(x): 0
- sel(x,y): 0
- sel1(x,y): 0
- sel1#(x,y): y + x
- top(x): 0
- unquote(x): 0
- unquote1(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:
| sel1#(X1, mark(X2)) | → | sel1#(X1, X2) |