YES
The TRS could be proven terminating. The proof took 751 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (79ms).
| Problem 2 was processed with processor SubtermCriterion (1ms).
| Problem 3 was processed with processor SubtermCriterion (1ms).
| Problem 4 was processed with processor PolynomialLinearRange4iUR (121ms).
| Problem 5 was processed with processor SubtermCriterion (1ms).
| Problem 6 was processed with processor SubtermCriterion (1ms).
| Problem 7 was processed with processor PolynomialLinearRange4iUR (184ms).
| Problem 8 was processed with processor PolynomialLinearRange4iUR (89ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
quot#(s(x), s(y)) | → | minus#(x, y) | | shuffle#(add(n, x)) | → | reverse#(x) |
less_leaves#(cons(u, v), cons(w, z)) | → | less_leaves#(concat(u, v), concat(w, z)) | | shuffle#(add(n, x)) | → | shuffle#(reverse(x)) |
quot#(s(x), s(y)) | → | quot#(minus(x, y), s(y)) | | app#(add(n, x), y) | → | app#(x, y) |
reverse#(add(n, x)) | → | app#(reverse(x), add(n, nil)) | | minus#(s(x), s(y)) | → | minus#(x, y) |
less_leaves#(cons(u, v), cons(w, z)) | → | concat#(u, v) | | less_leaves#(cons(u, v), cons(w, z)) | → | concat#(w, z) |
reverse#(add(n, x)) | → | reverse#(x) | | concat#(cons(u, v), y) | → | concat#(v, y) |
Rewrite Rules
minus(x, 0) | → | x | | minus(s(x), s(y)) | → | minus(x, y) |
quot(0, s(y)) | → | 0 | | quot(s(x), s(y)) | → | s(quot(minus(x, y), s(y))) |
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))) |
concat(leaf, y) | → | y | | concat(cons(u, v), y) | → | cons(u, concat(v, y)) |
less_leaves(x, leaf) | → | false | | less_leaves(leaf, cons(w, z)) | → | true |
less_leaves(cons(u, v), cons(w, z)) | → | less_leaves(concat(u, v), concat(w, z)) |
Original Signature
Termination of terms over the following signature is verified: app, reverse, minus, true, leaf, add, concat, 0, s, shuffle, false, less_leaves, quot, cons, nil
Strategy
The following SCCs where found
less_leaves#(cons(u, v), cons(w, z)) → less_leaves#(concat(u, v), concat(w, z)) |
shuffle#(add(n, x)) → shuffle#(reverse(x)) |
quot#(s(x), s(y)) → quot#(minus(x, y), s(y)) |
app#(add(n, x), y) → app#(x, y) |
minus#(s(x), s(y)) → minus#(x, y) |
reverse#(add(n, x)) → reverse#(x) |
concat#(cons(u, v), y) → concat#(v, y) |
Problem 2: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
minus#(s(x), s(y)) | → | minus#(x, y) |
Rewrite Rules
minus(x, 0) | → | x | | minus(s(x), s(y)) | → | minus(x, y) |
quot(0, s(y)) | → | 0 | | quot(s(x), s(y)) | → | s(quot(minus(x, y), s(y))) |
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))) |
concat(leaf, y) | → | y | | concat(cons(u, v), y) | → | cons(u, concat(v, y)) |
less_leaves(x, leaf) | → | false | | less_leaves(leaf, cons(w, z)) | → | true |
less_leaves(cons(u, v), cons(w, z)) | → | less_leaves(concat(u, v), concat(w, z)) |
Original Signature
Termination of terms over the following signature is verified: app, reverse, minus, true, leaf, add, concat, 0, s, shuffle, false, less_leaves, quot, cons, nil
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
minus#(s(x), s(y)) | → | minus#(x, y) |
Problem 3: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
concat#(cons(u, v), y) | → | concat#(v, y) |
Rewrite Rules
minus(x, 0) | → | x | | minus(s(x), s(y)) | → | minus(x, y) |
quot(0, s(y)) | → | 0 | | quot(s(x), s(y)) | → | s(quot(minus(x, y), s(y))) |
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))) |
concat(leaf, y) | → | y | | concat(cons(u, v), y) | → | cons(u, concat(v, y)) |
less_leaves(x, leaf) | → | false | | less_leaves(leaf, cons(w, z)) | → | true |
less_leaves(cons(u, v), cons(w, z)) | → | less_leaves(concat(u, v), concat(w, z)) |
Original Signature
Termination of terms over the following signature is verified: app, reverse, minus, true, leaf, add, concat, 0, s, shuffle, false, less_leaves, quot, cons, nil
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
concat#(cons(u, v), y) | → | concat#(v, y) |
Problem 4: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
quot#(s(x), s(y)) | → | quot#(minus(x, y), s(y)) |
Rewrite Rules
minus(x, 0) | → | x | | minus(s(x), s(y)) | → | minus(x, y) |
quot(0, s(y)) | → | 0 | | quot(s(x), s(y)) | → | s(quot(minus(x, y), s(y))) |
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))) |
concat(leaf, y) | → | y | | concat(cons(u, v), y) | → | cons(u, concat(v, y)) |
less_leaves(x, leaf) | → | false | | less_leaves(leaf, cons(w, z)) | → | true |
less_leaves(cons(u, v), cons(w, z)) | → | less_leaves(concat(u, v), concat(w, z)) |
Original Signature
Termination of terms over the following signature is verified: app, reverse, minus, true, leaf, add, concat, 0, s, shuffle, false, less_leaves, quot, cons, nil
Strategy
Polynomial Interpretation
- 0: 3
- add(x,y): 0
- app(x,y): 0
- concat(x,y): 0
- cons(x,y): 0
- false: 0
- leaf: 0
- less_leaves(x,y): 0
- minus(x,y): x
- nil: 0
- quot(x,y): 0
- quot#(x,y): 2x + 1
- reverse(x): 0
- s(x): 2x + 1
- shuffle(x): 0
- true: 0
Improved Usable rules
minus(s(x), s(y)) | → | minus(x, y) | | minus(x, 0) | → | x |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
quot#(s(x), s(y)) | → | quot#(minus(x, y), s(y)) |
Problem 5: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
reverse#(add(n, x)) | → | reverse#(x) |
Rewrite Rules
minus(x, 0) | → | x | | minus(s(x), s(y)) | → | minus(x, y) |
quot(0, s(y)) | → | 0 | | quot(s(x), s(y)) | → | s(quot(minus(x, y), s(y))) |
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))) |
concat(leaf, y) | → | y | | concat(cons(u, v), y) | → | cons(u, concat(v, y)) |
less_leaves(x, leaf) | → | false | | less_leaves(leaf, cons(w, z)) | → | true |
less_leaves(cons(u, v), cons(w, z)) | → | less_leaves(concat(u, v), concat(w, z)) |
Original Signature
Termination of terms over the following signature is verified: app, reverse, minus, true, leaf, add, concat, 0, s, shuffle, false, less_leaves, quot, cons, nil
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
reverse#(add(n, x)) | → | reverse#(x) |
Problem 6: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
app#(add(n, x), y) | → | app#(x, y) |
Rewrite Rules
minus(x, 0) | → | x | | minus(s(x), s(y)) | → | minus(x, y) |
quot(0, s(y)) | → | 0 | | quot(s(x), s(y)) | → | s(quot(minus(x, y), s(y))) |
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))) |
concat(leaf, y) | → | y | | concat(cons(u, v), y) | → | cons(u, concat(v, y)) |
less_leaves(x, leaf) | → | false | | less_leaves(leaf, cons(w, z)) | → | true |
less_leaves(cons(u, v), cons(w, z)) | → | less_leaves(concat(u, v), concat(w, z)) |
Original Signature
Termination of terms over the following signature is verified: app, reverse, minus, true, leaf, add, concat, 0, s, shuffle, false, less_leaves, quot, cons, nil
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
app#(add(n, x), y) | → | app#(x, y) |
Problem 7: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
shuffle#(add(n, x)) | → | shuffle#(reverse(x)) |
Rewrite Rules
minus(x, 0) | → | x | | minus(s(x), s(y)) | → | minus(x, y) |
quot(0, s(y)) | → | 0 | | quot(s(x), s(y)) | → | s(quot(minus(x, y), s(y))) |
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))) |
concat(leaf, y) | → | y | | concat(cons(u, v), y) | → | cons(u, concat(v, y)) |
less_leaves(x, leaf) | → | false | | less_leaves(leaf, cons(w, z)) | → | true |
less_leaves(cons(u, v), cons(w, z)) | → | less_leaves(concat(u, v), concat(w, z)) |
Original Signature
Termination of terms over the following signature is verified: app, reverse, minus, true, leaf, add, concat, 0, s, shuffle, false, less_leaves, quot, cons, nil
Strategy
Polynomial Interpretation
- 0: 0
- add(x,y): y + 1
- app(x,y): y + x
- concat(x,y): 0
- cons(x,y): 0
- false: 0
- leaf: 0
- less_leaves(x,y): 0
- minus(x,y): 0
- nil: 0
- quot(x,y): 0
- reverse(x): x
- s(x): 0
- shuffle(x): 0
- shuffle#(x): 2x
- true: 0
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 8: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
less_leaves#(cons(u, v), cons(w, z)) | → | less_leaves#(concat(u, v), concat(w, z)) |
Rewrite Rules
minus(x, 0) | → | x | | minus(s(x), s(y)) | → | minus(x, y) |
quot(0, s(y)) | → | 0 | | quot(s(x), s(y)) | → | s(quot(minus(x, y), s(y))) |
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))) |
concat(leaf, y) | → | y | | concat(cons(u, v), y) | → | cons(u, concat(v, y)) |
less_leaves(x, leaf) | → | false | | less_leaves(leaf, cons(w, z)) | → | true |
less_leaves(cons(u, v), cons(w, z)) | → | less_leaves(concat(u, v), concat(w, z)) |
Original Signature
Termination of terms over the following signature is verified: app, reverse, minus, true, leaf, add, concat, 0, s, shuffle, false, less_leaves, quot, cons, nil
Strategy
Polynomial Interpretation
- 0: 0
- add(x,y): 0
- app(x,y): 0
- concat(x,y): y + x
- cons(x,y): y + x + 2
- false: 0
- leaf: 0
- less_leaves(x,y): 0
- less_leaves#(x,y): y + 1
- minus(x,y): 0
- nil: 0
- quot(x,y): 0
- reverse(x): 0
- s(x): 0
- shuffle(x): 0
- true: 0
Improved Usable rules
concat(leaf, y) | → | y | | concat(cons(u, v), y) | → | cons(u, concat(v, y)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
less_leaves#(cons(u, v), cons(w, z)) | → | less_leaves#(concat(u, v), concat(w, z)) |