YES
The TRS could be proven terminating. The proof took 571 ms.
The following DP Processors were used
Problem 1 was processed with processor PolynomialLinearRange4iUR (297ms).
| Problem 2 was processed with processor DependencyGraph (8ms).
| | Problem 3 was processed with processor PolynomialLinearRange4iUR (41ms).
Problem 1: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
a__f#(g(X), Y) | → | a__f#(mark(X), f(g(X), Y)) | | mark#(f(X1, X2)) | → | a__f#(mark(X1), X2) |
mark#(g(X)) | → | mark#(X) | | a__f#(g(X), Y) | → | mark#(X) |
mark#(f(X1, X2)) | → | mark#(X1) |
Rewrite Rules
a__f(g(X), Y) | → | a__f(mark(X), f(g(X), Y)) | | mark(f(X1, X2)) | → | a__f(mark(X1), X2) |
mark(g(X)) | → | g(mark(X)) | | a__f(X1, X2) | → | f(X1, X2) |
Original Signature
Termination of terms over the following signature is verified: f, g, mark, a__f
Strategy
Polynomial Interpretation
- a__f(x,y): x
- a__f#(x,y): x
- f(x,y): x
- g(x): 2x + 1
- mark(x): 2x
- mark#(x): 2x
Improved Usable rules
a__f(g(X), Y) | → | a__f(mark(X), f(g(X), Y)) | | mark(f(X1, X2)) | → | a__f(mark(X1), X2) |
a__f(X1, X2) | → | f(X1, X2) | | mark(g(X)) | → | g(mark(X)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
a__f#(g(X), Y) | → | a__f#(mark(X), f(g(X), Y)) | | mark#(g(X)) | → | mark#(X) |
a__f#(g(X), Y) | → | mark#(X) |
Problem 2: DependencyGraph
Dependency Pair Problem
Dependency Pairs
mark#(f(X1, X2)) | → | a__f#(mark(X1), X2) | | mark#(f(X1, X2)) | → | mark#(X1) |
Rewrite Rules
a__f(g(X), Y) | → | a__f(mark(X), f(g(X), Y)) | | mark(f(X1, X2)) | → | a__f(mark(X1), X2) |
mark(g(X)) | → | g(mark(X)) | | a__f(X1, X2) | → | f(X1, X2) |
Original Signature
Termination of terms over the following signature is verified: f, g, mark, a__f
Strategy
The following SCCs where found
mark#(f(X1, X2)) → mark#(X1) |
Problem 3: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
mark#(f(X1, X2)) | → | mark#(X1) |
Rewrite Rules
a__f(g(X), Y) | → | a__f(mark(X), f(g(X), Y)) | | mark(f(X1, X2)) | → | a__f(mark(X1), X2) |
mark(g(X)) | → | g(mark(X)) | | a__f(X1, X2) | → | f(X1, X2) |
Original Signature
Termination of terms over the following signature is verified: f, g, mark, a__f
Strategy
Polynomial Interpretation
- a__f(x,y): 0
- f(x,y): x + 1
- g(x): 0
- mark(x): 0
- mark#(x): x + 1
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
mark#(f(X1, X2)) | → | mark#(X1) |