YES
The TRS could be proven terminating. The proof took 2649 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (96ms).
| Problem 2 was processed with processor SubtermCriterion (1ms).
| | Problem 5 was processed with processor SubtermCriterion (10ms).
| Problem 3 was processed with processor SubtermCriterion (0ms).
| Problem 4 was processed with processor PolynomialLinearRange4iUR (1194ms).
| | Problem 6 was processed with processor PolynomialLinearRange4iUR (597ms).
| | | Problem 7 was processed with processor PolynomialLinearRange4iUR (454ms).
| | | | Problem 8 was processed with processor PolynomialLinearRange4iUR (32ms).
| | | | | Problem 9 was processed with processor PolynomialLinearRange4iUR (29ms).
| | | | | | Problem 10 was processed with processor DependencyGraph (0ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
active#(tail(cons(X, XS))) | → | mark#(XS) | | mark#(cons(X1, X2)) | → | active#(cons(mark(X1), X2)) |
mark#(0) | → | active#(0) | | cons#(mark(X1), X2) | → | cons#(X1, X2) |
mark#(cons(X1, X2)) | → | mark#(X1) | | mark#(tail(X)) | → | tail#(mark(X)) |
tail#(mark(X)) | → | tail#(X) | | cons#(active(X1), X2) | → | cons#(X1, X2) |
cons#(X1, active(X2)) | → | cons#(X1, X2) | | mark#(tail(X)) | → | active#(tail(mark(X))) |
mark#(tail(X)) | → | mark#(X) | | tail#(active(X)) | → | tail#(X) |
active#(zeros) | → | cons#(0, zeros) | | active#(zeros) | → | mark#(cons(0, zeros)) |
cons#(X1, mark(X2)) | → | cons#(X1, X2) | | mark#(zeros) | → | active#(zeros) |
mark#(cons(X1, X2)) | → | cons#(mark(X1), X2) |
Rewrite Rules
active(zeros) | → | mark(cons(0, zeros)) | | active(tail(cons(X, XS))) | → | mark(XS) |
mark(zeros) | → | active(zeros) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(tail(X)) | → | active(tail(mark(X))) |
cons(mark(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, active(X2)) | → | cons(X1, X2) |
tail(mark(X)) | → | tail(X) | | tail(active(X)) | → | tail(X) |
Original Signature
Termination of terms over the following signature is verified: 0, zeros, active, mark, tail, cons
Strategy
The following SCCs where found
active#(tail(cons(X, XS))) → mark#(XS) | mark#(cons(X1, X2)) → active#(cons(mark(X1), X2)) |
mark#(tail(X)) → active#(tail(mark(X))) | mark#(tail(X)) → mark#(X) |
mark#(cons(X1, X2)) → mark#(X1) | active#(zeros) → mark#(cons(0, zeros)) |
mark#(zeros) → active#(zeros) |
tail#(active(X)) → tail#(X) | tail#(mark(X)) → tail#(X) |
cons#(X1, active(X2)) → cons#(X1, X2) | cons#(mark(X1), X2) → cons#(X1, X2) |
cons#(X1, mark(X2)) → cons#(X1, X2) | cons#(active(X1), X2) → cons#(X1, X2) |
Problem 2: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
cons#(X1, active(X2)) | → | cons#(X1, X2) | | cons#(mark(X1), X2) | → | cons#(X1, X2) |
cons#(X1, mark(X2)) | → | cons#(X1, X2) | | cons#(active(X1), X2) | → | cons#(X1, X2) |
Rewrite Rules
active(zeros) | → | mark(cons(0, zeros)) | | active(tail(cons(X, XS))) | → | mark(XS) |
mark(zeros) | → | active(zeros) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(tail(X)) | → | active(tail(mark(X))) |
cons(mark(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, active(X2)) | → | cons(X1, X2) |
tail(mark(X)) | → | tail(X) | | tail(active(X)) | → | tail(X) |
Original Signature
Termination of terms over the following signature is verified: 0, zeros, active, mark, tail, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
cons#(mark(X1), X2) | → | cons#(X1, X2) | | cons#(active(X1), X2) | → | cons#(X1, X2) |
Problem 5: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
cons#(X1, active(X2)) | → | cons#(X1, X2) | | cons#(X1, mark(X2)) | → | cons#(X1, X2) |
Rewrite Rules
active(zeros) | → | mark(cons(0, zeros)) | | active(tail(cons(X, XS))) | → | mark(XS) |
mark(zeros) | → | active(zeros) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(tail(X)) | → | active(tail(mark(X))) |
cons(mark(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, active(X2)) | → | cons(X1, X2) |
tail(mark(X)) | → | tail(X) | | tail(active(X)) | → | tail(X) |
Original Signature
Termination of terms over the following signature is verified: 0, zeros, active, mark, tail, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
cons#(X1, active(X2)) | → | cons#(X1, X2) | | cons#(X1, mark(X2)) | → | cons#(X1, X2) |
Problem 3: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
tail#(active(X)) | → | tail#(X) | | tail#(mark(X)) | → | tail#(X) |
Rewrite Rules
active(zeros) | → | mark(cons(0, zeros)) | | active(tail(cons(X, XS))) | → | mark(XS) |
mark(zeros) | → | active(zeros) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(tail(X)) | → | active(tail(mark(X))) |
cons(mark(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, active(X2)) | → | cons(X1, X2) |
tail(mark(X)) | → | tail(X) | | tail(active(X)) | → | tail(X) |
Original Signature
Termination of terms over the following signature is verified: 0, zeros, active, mark, tail, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
tail#(active(X)) | → | tail#(X) | | tail#(mark(X)) | → | tail#(X) |
Problem 4: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
active#(tail(cons(X, XS))) | → | mark#(XS) | | mark#(cons(X1, X2)) | → | active#(cons(mark(X1), X2)) |
mark#(tail(X)) | → | active#(tail(mark(X))) | | mark#(tail(X)) | → | mark#(X) |
mark#(cons(X1, X2)) | → | mark#(X1) | | active#(zeros) | → | mark#(cons(0, zeros)) |
mark#(zeros) | → | active#(zeros) |
Rewrite Rules
active(zeros) | → | mark(cons(0, zeros)) | | active(tail(cons(X, XS))) | → | mark(XS) |
mark(zeros) | → | active(zeros) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(tail(X)) | → | active(tail(mark(X))) |
cons(mark(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, active(X2)) | → | cons(X1, X2) |
tail(mark(X)) | → | tail(X) | | tail(active(X)) | → | tail(X) |
Original Signature
Termination of terms over the following signature is verified: 0, zeros, active, mark, tail, cons
Strategy
Polynomial Interpretation
- 0: 1
- active(x): 0
- active#(x): 2x
- cons(x,y): 0
- mark(x): 0
- mark#(x): 2
- tail(x): 1
- zeros: 1
Improved Usable rules
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(mark(X1), X2) | → | cons(X1, X2) | | tail(active(X)) | → | tail(X) |
tail(mark(X)) | → | tail(X) | | cons(X1, active(X2)) | → | cons(X1, X2) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
mark#(cons(X1, X2)) | → | active#(cons(mark(X1), X2)) |
Problem 6: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
active#(tail(cons(X, XS))) | → | mark#(XS) | | mark#(tail(X)) | → | active#(tail(mark(X))) |
mark#(tail(X)) | → | mark#(X) | | mark#(cons(X1, X2)) | → | mark#(X1) |
active#(zeros) | → | mark#(cons(0, zeros)) | | mark#(zeros) | → | active#(zeros) |
Rewrite Rules
active(zeros) | → | mark(cons(0, zeros)) | | active(tail(cons(X, XS))) | → | mark(XS) |
mark(zeros) | → | active(zeros) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(tail(X)) | → | active(tail(mark(X))) |
cons(mark(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, active(X2)) | → | cons(X1, X2) |
tail(mark(X)) | → | tail(X) | | tail(active(X)) | → | tail(X) |
Original Signature
Termination of terms over the following signature is verified: 0, zeros, active, mark, tail, cons
Strategy
Polynomial Interpretation
- 0: 0
- active(x): x
- active#(x): x
- cons(x,y): y + 2x
- mark(x): x
- mark#(x): x
- tail(x): 2x + 1
- zeros: 0
Improved Usable rules
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
active(tail(cons(X, XS))) | → | mark(XS) | | cons(mark(X1), X2) | → | cons(X1, X2) |
mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) | | tail(active(X)) | → | tail(X) |
tail(mark(X)) | → | tail(X) | | mark(zeros) | → | active(zeros) |
mark(tail(X)) | → | active(tail(mark(X))) | | active(zeros) | → | mark(cons(0, zeros)) |
mark(0) | → | active(0) | | cons(X1, active(X2)) | → | cons(X1, X2) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
active#(tail(cons(X, XS))) | → | mark#(XS) | | mark#(tail(X)) | → | mark#(X) |
Problem 7: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
mark#(tail(X)) | → | active#(tail(mark(X))) | | mark#(cons(X1, X2)) | → | mark#(X1) |
active#(zeros) | → | mark#(cons(0, zeros)) | | mark#(zeros) | → | active#(zeros) |
Rewrite Rules
active(zeros) | → | mark(cons(0, zeros)) | | active(tail(cons(X, XS))) | → | mark(XS) |
mark(zeros) | → | active(zeros) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(tail(X)) | → | active(tail(mark(X))) |
cons(mark(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, active(X2)) | → | cons(X1, X2) |
tail(mark(X)) | → | tail(X) | | tail(active(X)) | → | tail(X) |
Original Signature
Termination of terms over the following signature is verified: 0, zeros, active, mark, tail, cons
Strategy
Polynomial Interpretation
- 0: 0
- active(x): x
- active#(x): x
- cons(x,y): y + x
- mark(x): x
- mark#(x): 2x
- tail(x): x + 1
- zeros: 0
Improved Usable rules
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
active(tail(cons(X, XS))) | → | mark(XS) | | cons(mark(X1), X2) | → | cons(X1, X2) |
mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) | | tail(active(X)) | → | tail(X) |
tail(mark(X)) | → | tail(X) | | mark(zeros) | → | active(zeros) |
mark(tail(X)) | → | active(tail(mark(X))) | | active(zeros) | → | mark(cons(0, zeros)) |
mark(0) | → | active(0) | | cons(X1, active(X2)) | → | cons(X1, X2) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
mark#(tail(X)) | → | active#(tail(mark(X))) |
Problem 8: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
mark#(cons(X1, X2)) | → | mark#(X1) | | active#(zeros) | → | mark#(cons(0, zeros)) |
mark#(zeros) | → | active#(zeros) |
Rewrite Rules
active(zeros) | → | mark(cons(0, zeros)) | | active(tail(cons(X, XS))) | → | mark(XS) |
mark(zeros) | → | active(zeros) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(tail(X)) | → | active(tail(mark(X))) |
cons(mark(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, active(X2)) | → | cons(X1, X2) |
tail(mark(X)) | → | tail(X) | | tail(active(X)) | → | tail(X) |
Original Signature
Termination of terms over the following signature is verified: 0, zeros, active, mark, tail, cons
Strategy
Polynomial Interpretation
- 0: 0
- active(x): x
- active#(x): x
- cons(x,y): x + 2
- mark(x): x
- mark#(x): x
- tail(x): 0
- zeros: 2
Improved Usable rules
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(mark(X1), X2) | → | cons(X1, X2) | | cons(X1, active(X2)) | → | cons(X1, X2) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
mark#(cons(X1, X2)) | → | mark#(X1) |
Problem 9: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
active#(zeros) | → | mark#(cons(0, zeros)) | | mark#(zeros) | → | active#(zeros) |
Rewrite Rules
active(zeros) | → | mark(cons(0, zeros)) | | active(tail(cons(X, XS))) | → | mark(XS) |
mark(zeros) | → | active(zeros) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(tail(X)) | → | active(tail(mark(X))) |
cons(mark(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, active(X2)) | → | cons(X1, X2) |
tail(mark(X)) | → | tail(X) | | tail(active(X)) | → | tail(X) |
Original Signature
Termination of terms over the following signature is verified: 0, zeros, active, mark, tail, cons
Strategy
Polynomial Interpretation
- 0: 1
- active(x): 3x
- active#(x): 2
- cons(x,y): 2x
- mark(x): x
- mark#(x): x
- tail(x): 0
- zeros: 3
Improved Usable rules
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(mark(X1), X2) | → | cons(X1, X2) | | cons(X1, active(X2)) | → | cons(X1, X2) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
mark#(zeros) | → | active#(zeros) |
Problem 10: DependencyGraph
Dependency Pair Problem
Dependency Pairs
active#(zeros) | → | mark#(cons(0, zeros)) |
Rewrite Rules
active(zeros) | → | mark(cons(0, zeros)) | | active(tail(cons(X, XS))) | → | mark(XS) |
mark(zeros) | → | active(zeros) | | mark(cons(X1, X2)) | → | active(cons(mark(X1), X2)) |
mark(0) | → | active(0) | | mark(tail(X)) | → | active(tail(mark(X))) |
cons(mark(X1), X2) | → | cons(X1, X2) | | cons(X1, mark(X2)) | → | cons(X1, X2) |
cons(active(X1), X2) | → | cons(X1, X2) | | cons(X1, active(X2)) | → | cons(X1, X2) |
tail(mark(X)) | → | tail(X) | | tail(active(X)) | → | tail(X) |
Original Signature
Termination of terms over the following signature is verified: 0, zeros, active, mark, tail, cons
Strategy
There are no SCCs!