YES
The TRS could be proven terminating. The proof took 10321 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (346ms).
| Problem 2 was processed with processor PolynomialLinearRange4iUR (3612ms).
| | Problem 8 was processed with processor PolynomialLinearRange4iUR (2127ms).
| | | Problem 9 was processed with processor PolynomialLinearRange4iUR (1662ms).
| | | | Problem 10 was processed with processor PolynomialLinearRange4iUR (1540ms).
| | | | | Problem 11 was processed with processor PolynomialLinearRange4iUR (753ms).
| | | | | | Problem 12 was processed with processor DependencyGraph (1ms).
| Problem 3 was processed with processor SubtermCriterion (1ms).
| | Problem 6 was processed with processor SubtermCriterion (1ms).
| Problem 4 was processed with processor SubtermCriterion (21ms).
| Problem 5 was processed with processor SubtermCriterion (45ms).
| | Problem 7 was processed with processor SubtermCriterion (1ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
and#(active(X1), X2) | → | and#(X1, X2) | | and#(X1, active(X2)) | → | and#(X1, X2) |
mark#(tt) | → | active#(tt) | | mark#(s(X)) | → | s#(mark(X)) |
mark#(plus(X1, X2)) | → | mark#(X2) | | plus#(X1, mark(X2)) | → | plus#(X1, X2) |
mark#(and(X1, X2)) | → | active#(and(mark(X1), X2)) | | mark#(s(X)) | → | mark#(X) |
and#(X1, mark(X2)) | → | and#(X1, X2) | | active#(plus(N, s(M))) | → | plus#(N, M) |
mark#(0) | → | active#(0) | | mark#(plus(X1, X2)) | → | active#(plus(mark(X1), mark(X2))) |
mark#(s(X)) | → | active#(s(mark(X))) | | mark#(and(X1, X2)) | → | and#(mark(X1), X2) |
active#(plus(N, 0)) | → | mark#(N) | | mark#(plus(X1, X2)) | → | plus#(mark(X1), mark(X2)) |
active#(and(tt, X)) | → | mark#(X) | | and#(mark(X1), X2) | → | and#(X1, X2) |
mark#(plus(X1, X2)) | → | mark#(X1) | | s#(mark(X)) | → | s#(X) |
mark#(and(X1, X2)) | → | mark#(X1) | | active#(plus(N, s(M))) | → | s#(plus(N, M)) |
active#(plus(N, s(M))) | → | mark#(s(plus(N, M))) | | plus#(X1, active(X2)) | → | plus#(X1, X2) |
s#(active(X)) | → | s#(X) | | plus#(mark(X1), X2) | → | plus#(X1, X2) |
plus#(active(X1), X2) | → | plus#(X1, X2) |
Rewrite Rules
active(and(tt, X)) | → | mark(X) | | active(plus(N, 0)) | → | mark(N) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
mark(tt) | → | active(tt) | | mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
and(mark(X1), X2) | → | and(X1, X2) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | and(X1, active(X2)) | → | and(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | plus(X1, mark(X2)) | → | plus(X1, X2) |
plus(active(X1), X2) | → | plus(X1, X2) | | plus(X1, active(X2)) | → | plus(X1, X2) |
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
Original Signature
Termination of terms over the following signature is verified: plus, 0, s, tt, active, mark, and
Strategy
The following SCCs where found
s#(mark(X)) → s#(X) | s#(active(X)) → s#(X) |
and#(active(X1), X2) → and#(X1, X2) | and#(X1, active(X2)) → and#(X1, X2) |
and#(mark(X1), X2) → and#(X1, X2) | and#(X1, mark(X2)) → and#(X1, X2) |
mark#(and(X1, X2)) → mark#(X1) | mark#(plus(X1, X2)) → active#(plus(mark(X1), mark(X2))) |
mark#(s(X)) → active#(s(mark(X))) | mark#(plus(X1, X2)) → mark#(X2) |
active#(plus(N, 0)) → mark#(N) | active#(plus(N, s(M))) → mark#(s(plus(N, M))) |
mark#(and(X1, X2)) → active#(and(mark(X1), X2)) | mark#(s(X)) → mark#(X) |
active#(and(tt, X)) → mark#(X) | mark#(plus(X1, X2)) → mark#(X1) |
plus#(X1, active(X2)) → plus#(X1, X2) | plus#(X1, mark(X2)) → plus#(X1, X2) |
plus#(mark(X1), X2) → plus#(X1, X2) | plus#(active(X1), X2) → plus#(X1, X2) |
Problem 2: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
mark#(and(X1, X2)) | → | mark#(X1) | | mark#(plus(X1, X2)) | → | active#(plus(mark(X1), mark(X2))) |
mark#(s(X)) | → | active#(s(mark(X))) | | mark#(plus(X1, X2)) | → | mark#(X2) |
active#(plus(N, 0)) | → | mark#(N) | | active#(plus(N, s(M))) | → | mark#(s(plus(N, M))) |
mark#(and(X1, X2)) | → | active#(and(mark(X1), X2)) | | mark#(s(X)) | → | mark#(X) |
active#(and(tt, X)) | → | mark#(X) | | mark#(plus(X1, X2)) | → | mark#(X1) |
Rewrite Rules
active(and(tt, X)) | → | mark(X) | | active(plus(N, 0)) | → | mark(N) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
mark(tt) | → | active(tt) | | mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
and(mark(X1), X2) | → | and(X1, X2) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | and(X1, active(X2)) | → | and(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | plus(X1, mark(X2)) | → | plus(X1, X2) |
plus(active(X1), X2) | → | plus(X1, X2) | | plus(X1, active(X2)) | → | plus(X1, X2) |
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
Original Signature
Termination of terms over the following signature is verified: plus, 0, s, tt, active, mark, and
Strategy
Polynomial Interpretation
- 0: 2
- active(x): 0
- active#(x): 2x
- and(x,y): 1
- mark(x): 3
- mark#(x): 2
- plus(x,y): 1
- s(x): 0
- tt: 3
Improved Usable rules
and(X1, mark(X2)) | → | and(X1, X2) | | plus(active(X1), X2) | → | plus(X1, X2) |
and(mark(X1), X2) | → | and(X1, X2) | | plus(mark(X1), X2) | → | plus(X1, X2) |
plus(X1, mark(X2)) | → | plus(X1, X2) | | s(mark(X)) | → | s(X) |
and(X1, active(X2)) | → | and(X1, X2) | | and(active(X1), X2) | → | and(X1, X2) |
s(active(X)) | → | s(X) | | plus(X1, active(X2)) | → | plus(X1, X2) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
mark#(s(X)) | → | active#(s(mark(X))) |
Problem 8: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
mark#(and(X1, X2)) | → | mark#(X1) | | mark#(plus(X1, X2)) | → | active#(plus(mark(X1), mark(X2))) |
mark#(plus(X1, X2)) | → | mark#(X2) | | active#(plus(N, s(M))) | → | mark#(s(plus(N, M))) |
active#(plus(N, 0)) | → | mark#(N) | | mark#(and(X1, X2)) | → | active#(and(mark(X1), X2)) |
mark#(s(X)) | → | mark#(X) | | active#(and(tt, X)) | → | mark#(X) |
mark#(plus(X1, X2)) | → | mark#(X1) |
Rewrite Rules
active(and(tt, X)) | → | mark(X) | | active(plus(N, 0)) | → | mark(N) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
mark(tt) | → | active(tt) | | mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
and(mark(X1), X2) | → | and(X1, X2) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | and(X1, active(X2)) | → | and(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | plus(X1, mark(X2)) | → | plus(X1, X2) |
plus(active(X1), X2) | → | plus(X1, X2) | | plus(X1, active(X2)) | → | plus(X1, X2) |
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
Original Signature
Termination of terms over the following signature is verified: plus, 0, s, tt, active, mark, and
Strategy
Polynomial Interpretation
- 0: 0
- active(x): x
- active#(x): x
- and(x,y): y + x + 2
- mark(x): x
- mark#(x): x
- plus(x,y): 2y + 2x + 2
- s(x): x
- tt: 0
Improved Usable rules
plus(X1, mark(X2)) | → | plus(X1, X2) | | mark(s(X)) | → | active(s(mark(X))) |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | | mark(tt) | → | active(tt) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | and(active(X1), X2) | → | and(X1, X2) |
active(and(tt, X)) | → | mark(X) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(mark(X1), X2) | → | and(X1, X2) | | plus(active(X1), X2) | → | plus(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
active(plus(N, 0)) | → | mark(N) | | s(mark(X)) | → | s(X) |
and(X1, active(X2)) | → | and(X1, X2) | | mark(0) | → | active(0) |
s(active(X)) | → | s(X) | | plus(X1, active(X2)) | → | plus(X1, X2) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
mark#(and(X1, X2)) | → | mark#(X1) | | mark#(plus(X1, X2)) | → | mark#(X2) |
active#(plus(N, 0)) | → | mark#(N) | | active#(and(tt, X)) | → | mark#(X) |
mark#(plus(X1, X2)) | → | mark#(X1) |
Problem 9: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
mark#(plus(X1, X2)) | → | active#(plus(mark(X1), mark(X2))) | | active#(plus(N, s(M))) | → | mark#(s(plus(N, M))) |
mark#(and(X1, X2)) | → | active#(and(mark(X1), X2)) | | mark#(s(X)) | → | mark#(X) |
Rewrite Rules
active(and(tt, X)) | → | mark(X) | | active(plus(N, 0)) | → | mark(N) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
mark(tt) | → | active(tt) | | mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
and(mark(X1), X2) | → | and(X1, X2) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | and(X1, active(X2)) | → | and(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | plus(X1, mark(X2)) | → | plus(X1, X2) |
plus(active(X1), X2) | → | plus(X1, X2) | | plus(X1, active(X2)) | → | plus(X1, X2) |
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
Original Signature
Termination of terms over the following signature is verified: plus, 0, s, tt, active, mark, and
Strategy
Polynomial Interpretation
- 0: 0
- active(x): x
- active#(x): x
- and(x,y): y
- mark(x): x
- mark#(x): x
- plus(x,y): y + 2x + 1
- s(x): x + 1
- tt: 0
Improved Usable rules
plus(X1, mark(X2)) | → | plus(X1, X2) | | mark(s(X)) | → | active(s(mark(X))) |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | | mark(tt) | → | active(tt) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | and(active(X1), X2) | → | and(X1, X2) |
active(and(tt, X)) | → | mark(X) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(mark(X1), X2) | → | and(X1, X2) | | plus(active(X1), X2) | → | plus(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
active(plus(N, 0)) | → | mark(N) | | s(mark(X)) | → | s(X) |
and(X1, active(X2)) | → | and(X1, X2) | | mark(0) | → | active(0) |
s(active(X)) | → | s(X) | | plus(X1, active(X2)) | → | plus(X1, X2) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
Problem 10: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
mark#(plus(X1, X2)) | → | active#(plus(mark(X1), mark(X2))) | | active#(plus(N, s(M))) | → | mark#(s(plus(N, M))) |
mark#(and(X1, X2)) | → | active#(and(mark(X1), X2)) |
Rewrite Rules
active(and(tt, X)) | → | mark(X) | | active(plus(N, 0)) | → | mark(N) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
mark(tt) | → | active(tt) | | mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
and(mark(X1), X2) | → | and(X1, X2) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | and(X1, active(X2)) | → | and(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | plus(X1, mark(X2)) | → | plus(X1, X2) |
plus(active(X1), X2) | → | plus(X1, X2) | | plus(X1, active(X2)) | → | plus(X1, X2) |
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
Original Signature
Termination of terms over the following signature is verified: plus, 0, s, tt, active, mark, and
Strategy
Polynomial Interpretation
- 0: 3
- active(x): 0
- active#(x): 0
- and(x,y): y + x
- mark(x): 2
- mark#(x): 2x
- plus(x,y): 1
- s(x): 0
- tt: 0
Improved Usable rules
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
mark#(plus(X1, X2)) | → | active#(plus(mark(X1), mark(X2))) |
Problem 11: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
active#(plus(N, s(M))) | → | mark#(s(plus(N, M))) | | mark#(and(X1, X2)) | → | active#(and(mark(X1), X2)) |
Rewrite Rules
active(and(tt, X)) | → | mark(X) | | active(plus(N, 0)) | → | mark(N) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
mark(tt) | → | active(tt) | | mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
and(mark(X1), X2) | → | and(X1, X2) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | and(X1, active(X2)) | → | and(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | plus(X1, mark(X2)) | → | plus(X1, X2) |
plus(active(X1), X2) | → | plus(X1, X2) | | plus(X1, active(X2)) | → | plus(X1, X2) |
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
Original Signature
Termination of terms over the following signature is verified: plus, 0, s, tt, active, mark, and
Strategy
Polynomial Interpretation
- 0: 3
- active(x): 0
- active#(x): x
- and(x,y): 2
- mark(x): 0
- mark#(x): x
- plus(x,y): 1
- s(x): 0
- tt: 1
Improved Usable rules
and(X1, mark(X2)) | → | and(X1, X2) | | and(mark(X1), X2) | → | and(X1, X2) |
s(mark(X)) | → | s(X) | | and(X1, active(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | s(active(X)) | → | s(X) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
active#(plus(N, s(M))) | → | mark#(s(plus(N, M))) |
Problem 12: DependencyGraph
Dependency Pair Problem
Dependency Pairs
mark#(and(X1, X2)) | → | active#(and(mark(X1), X2)) |
Rewrite Rules
active(and(tt, X)) | → | mark(X) | | active(plus(N, 0)) | → | mark(N) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
mark(tt) | → | active(tt) | | mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
and(mark(X1), X2) | → | and(X1, X2) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | and(X1, active(X2)) | → | and(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | plus(X1, mark(X2)) | → | plus(X1, X2) |
plus(active(X1), X2) | → | plus(X1, X2) | | plus(X1, active(X2)) | → | plus(X1, X2) |
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
Original Signature
Termination of terms over the following signature is verified: plus, 0, s, tt, active, mark, and
Strategy
There are no SCCs!
Problem 3: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
and#(active(X1), X2) | → | and#(X1, X2) | | and#(X1, active(X2)) | → | and#(X1, X2) |
and#(mark(X1), X2) | → | and#(X1, X2) | | and#(X1, mark(X2)) | → | and#(X1, X2) |
Rewrite Rules
active(and(tt, X)) | → | mark(X) | | active(plus(N, 0)) | → | mark(N) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
mark(tt) | → | active(tt) | | mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
and(mark(X1), X2) | → | and(X1, X2) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | and(X1, active(X2)) | → | and(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | plus(X1, mark(X2)) | → | plus(X1, X2) |
plus(active(X1), X2) | → | plus(X1, X2) | | plus(X1, active(X2)) | → | plus(X1, X2) |
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
Original Signature
Termination of terms over the following signature is verified: plus, 0, s, tt, active, mark, and
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
and#(active(X1), X2) | → | and#(X1, X2) | | and#(mark(X1), X2) | → | and#(X1, X2) |
Problem 6: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
and#(X1, active(X2)) | → | and#(X1, X2) | | and#(X1, mark(X2)) | → | and#(X1, X2) |
Rewrite Rules
active(and(tt, X)) | → | mark(X) | | active(plus(N, 0)) | → | mark(N) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
mark(tt) | → | active(tt) | | mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
and(mark(X1), X2) | → | and(X1, X2) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | and(X1, active(X2)) | → | and(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | plus(X1, mark(X2)) | → | plus(X1, X2) |
plus(active(X1), X2) | → | plus(X1, X2) | | plus(X1, active(X2)) | → | plus(X1, X2) |
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
Original Signature
Termination of terms over the following signature is verified: plus, 0, s, tt, active, mark, and
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
and#(X1, active(X2)) | → | and#(X1, X2) | | and#(X1, mark(X2)) | → | and#(X1, X2) |
Problem 4: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
s#(mark(X)) | → | s#(X) | | s#(active(X)) | → | s#(X) |
Rewrite Rules
active(and(tt, X)) | → | mark(X) | | active(plus(N, 0)) | → | mark(N) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
mark(tt) | → | active(tt) | | mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
and(mark(X1), X2) | → | and(X1, X2) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | and(X1, active(X2)) | → | and(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | plus(X1, mark(X2)) | → | plus(X1, X2) |
plus(active(X1), X2) | → | plus(X1, X2) | | plus(X1, active(X2)) | → | plus(X1, X2) |
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
Original Signature
Termination of terms over the following signature is verified: plus, 0, s, tt, active, mark, and
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
s#(mark(X)) | → | s#(X) | | s#(active(X)) | → | s#(X) |
Problem 5: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
plus#(X1, active(X2)) | → | plus#(X1, X2) | | plus#(X1, mark(X2)) | → | plus#(X1, X2) |
plus#(mark(X1), X2) | → | plus#(X1, X2) | | plus#(active(X1), X2) | → | plus#(X1, X2) |
Rewrite Rules
active(and(tt, X)) | → | mark(X) | | active(plus(N, 0)) | → | mark(N) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
mark(tt) | → | active(tt) | | mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
and(mark(X1), X2) | → | and(X1, X2) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | and(X1, active(X2)) | → | and(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | plus(X1, mark(X2)) | → | plus(X1, X2) |
plus(active(X1), X2) | → | plus(X1, X2) | | plus(X1, active(X2)) | → | plus(X1, X2) |
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
Original Signature
Termination of terms over the following signature is verified: plus, 0, s, tt, active, mark, and
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
plus#(mark(X1), X2) | → | plus#(X1, X2) | | plus#(active(X1), X2) | → | plus#(X1, X2) |
Problem 7: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
plus#(X1, mark(X2)) | → | plus#(X1, X2) | | plus#(X1, active(X2)) | → | plus#(X1, X2) |
Rewrite Rules
active(and(tt, X)) | → | mark(X) | | active(plus(N, 0)) | → | mark(N) |
active(plus(N, s(M))) | → | mark(s(plus(N, M))) | | mark(and(X1, X2)) | → | active(and(mark(X1), X2)) |
mark(tt) | → | active(tt) | | mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) |
mark(0) | → | active(0) | | mark(s(X)) | → | active(s(mark(X))) |
and(mark(X1), X2) | → | and(X1, X2) | | and(X1, mark(X2)) | → | and(X1, X2) |
and(active(X1), X2) | → | and(X1, X2) | | and(X1, active(X2)) | → | and(X1, X2) |
plus(mark(X1), X2) | → | plus(X1, X2) | | plus(X1, mark(X2)) | → | plus(X1, X2) |
plus(active(X1), X2) | → | plus(X1, X2) | | plus(X1, active(X2)) | → | plus(X1, X2) |
s(mark(X)) | → | s(X) | | s(active(X)) | → | s(X) |
Original Signature
Termination of terms over the following signature is verified: plus, 0, s, tt, active, mark, and
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
plus#(X1, active(X2)) | → | plus#(X1, X2) | | plus#(X1, mark(X2)) | → | plus#(X1, X2) |