YES
The TRS could be proven terminating. The proof took 666 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (23ms).
| Problem 2 was processed with processor SubtermCriterion (1ms).
| Problem 3 was processed with processor PolynomialOrderingProcessor (399ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
f#(a, x) | → | f#(c, x) | | f#(a, f(b, x)) | → | f#(a, x) |
f#(d, f(c, x)) | → | f#(d, f(a, x)) | | f#(d, f(c, x)) | → | f#(a, x) |
f#(a, f(b, x)) | → | f#(b, f(a, x)) | | f#(a, x) | → | f#(b, f(c, x)) |
f#(a, f(c, x)) | → | f#(a, x) | | f#(a, f(c, x)) | → | f#(c, f(a, x)) |
Rewrite Rules
f(a, x) | → | f(b, f(c, x)) | | f(a, f(b, x)) | → | f(b, f(a, x)) |
f(d, f(c, x)) | → | f(d, f(a, x)) | | f(a, f(c, x)) | → | f(c, f(a, x)) |
Original Signature
Termination of terms over the following signature is verified: f, d, b, c, a
Strategy
The following SCCs where found
f#(a, f(b, x)) → f#(a, x) | f#(a, f(c, x)) → f#(a, x) |
f#(d, f(c, x)) → f#(d, f(a, x)) |
Problem 2: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
f#(a, f(b, x)) | → | f#(a, x) | | f#(a, f(c, x)) | → | f#(a, x) |
Rewrite Rules
f(a, x) | → | f(b, f(c, x)) | | f(a, f(b, x)) | → | f(b, f(a, x)) |
f(d, f(c, x)) | → | f(d, f(a, x)) | | f(a, f(c, x)) | → | f(c, f(a, x)) |
Original Signature
Termination of terms over the following signature is verified: f, d, b, c, a
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
f#(a, f(b, x)) | → | f#(a, x) | | f#(a, f(c, x)) | → | f#(a, x) |
Problem 3: PolynomialOrderingProcessor
Dependency Pair Problem
Dependency Pairs
f#(d, f(c, x)) | → | f#(d, f(a, x)) |
Rewrite Rules
f(a, x) | → | f(b, f(c, x)) | | f(a, f(b, x)) | → | f(b, f(a, x)) |
f(d, f(c, x)) | → | f(d, f(a, x)) | | f(a, f(c, x)) | → | f(c, f(a, x)) |
Original Signature
Termination of terms over the following signature is verified: f, d, b, c, a
Strategy
Polynomial Interpretation
- a: 3
- b: 1
- c: 4
- d: 2
- f(x,y): y + x - 2
- f#(x,y): 2y + x - 2
Improved Usable rules
f(a, f(b, x)) | → | f(b, f(a, x)) | | f(a, x) | → | f(b, f(c, x)) |
f(a, f(c, x)) | → | f(c, f(a, x)) | | f(d, f(c, x)) | → | f(d, f(a, x)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
f#(d, f(c, x)) | → | f#(d, f(a, x)) |