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