YES
The TRS could be proven terminating. The proof took 1317 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (104ms).
| Problem 2 was processed with processor SubtermCriterion (1ms).
| Problem 3 was processed with processor PolynomialLinearRange4iUR (180ms).
| Problem 4 was processed with processor PolynomialLinearRange4iUR (740ms).
| Problem 5 was processed with processor SubtermCriterion (0ms).
| Problem 6 was processed with processor SubtermCriterion (9ms).
| Problem 7 was processed with processor PolynomialLinearRange4iUR (104ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
quot#(s(x), s(y)) | → | minus#(x, y) | | minus#(minus(x, y), z) | → | plus#(y, z) |
sum#(app(l, cons(x, cons(y, k)))) | → | app#(l, sum(cons(x, cons(y, k)))) | | sum#(cons(x, cons(y, l))) | → | sum#(cons(plus(x, y), l)) |
sum#(cons(x, cons(y, l))) | → | plus#(x, y) | | plus#(s(x), y) | → | plus#(x, y) |
sum#(app(l, cons(x, cons(y, k)))) | → | sum#(app(l, sum(cons(x, cons(y, k))))) | | sum#(app(l, cons(x, cons(y, k)))) | → | sum#(cons(x, cons(y, k))) |
quot#(s(x), s(y)) | → | quot#(minus(x, y), s(y)) | | minus#(s(x), s(y)) | → | minus#(x, y) |
minus#(minus(x, y), z) | → | minus#(x, plus(y, z)) | | app#(cons(x, l), k) | → | app#(l, k) |
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))) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
minus(minus(x, y), z) | → | minus(x, plus(y, z)) | | app(nil, k) | → | k |
app(l, nil) | → | l | | app(cons(x, l), k) | → | cons(x, app(l, k)) |
sum(cons(x, nil)) | → | cons(x, nil) | | sum(cons(x, cons(y, l))) | → | sum(cons(plus(x, y), l)) |
sum(app(l, cons(x, cons(y, k)))) | → | sum(app(l, sum(cons(x, cons(y, k))))) | | plus(0, y) | → | y |
plus(s(x), y) | → | s(plus(x, y)) |
Original Signature
Termination of terms over the following signature is verified: plus, app, minus, 0, s, sum, quot, nil, cons
Strategy
The following SCCs where found
minus#(s(x), s(y)) → minus#(x, y) | minus#(minus(x, y), z) → minus#(x, plus(y, z)) |
sum#(cons(x, cons(y, l))) → sum#(cons(plus(x, y), l)) |
sum#(app(l, cons(x, cons(y, k)))) → sum#(app(l, sum(cons(x, cons(y, k))))) |
plus#(s(x), y) → plus#(x, y) |
quot#(s(x), s(y)) → quot#(minus(x, y), s(y)) |
app#(cons(x, l), k) → app#(l, k) |
Problem 2: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
plus#(s(x), y) | → | plus#(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))) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
minus(minus(x, y), z) | → | minus(x, plus(y, z)) | | app(nil, k) | → | k |
app(l, nil) | → | l | | app(cons(x, l), k) | → | cons(x, app(l, k)) |
sum(cons(x, nil)) | → | cons(x, nil) | | sum(cons(x, cons(y, l))) | → | sum(cons(plus(x, y), l)) |
sum(app(l, cons(x, cons(y, k)))) | → | sum(app(l, sum(cons(x, cons(y, k))))) | | plus(0, y) | → | y |
plus(s(x), y) | → | s(plus(x, y)) |
Original Signature
Termination of terms over the following signature is verified: plus, app, minus, 0, s, sum, quot, nil, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
plus#(s(x), y) | → | plus#(x, y) |
Problem 3: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
sum#(cons(x, cons(y, l))) | → | sum#(cons(plus(x, y), l)) |
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))) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
minus(minus(x, y), z) | → | minus(x, plus(y, z)) | | app(nil, k) | → | k |
app(l, nil) | → | l | | app(cons(x, l), k) | → | cons(x, app(l, k)) |
sum(cons(x, nil)) | → | cons(x, nil) | | sum(cons(x, cons(y, l))) | → | sum(cons(plus(x, y), l)) |
sum(app(l, cons(x, cons(y, k)))) | → | sum(app(l, sum(cons(x, cons(y, k))))) | | plus(0, y) | → | y |
plus(s(x), y) | → | s(plus(x, y)) |
Original Signature
Termination of terms over the following signature is verified: plus, app, minus, 0, s, sum, quot, nil, cons
Strategy
Polynomial Interpretation
- 0: 3
- app(x,y): 0
- cons(x,y): y + 1
- minus(x,y): 0
- nil: 0
- plus(x,y): 3y
- quot(x,y): 0
- s(x): 0
- sum(x): 0
- sum#(x): x
Improved Usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
sum#(cons(x, cons(y, l))) | → | sum#(cons(plus(x, y), l)) |
Problem 4: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
sum#(app(l, cons(x, cons(y, k)))) | → | sum#(app(l, sum(cons(x, cons(y, k))))) |
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))) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
minus(minus(x, y), z) | → | minus(x, plus(y, z)) | | app(nil, k) | → | k |
app(l, nil) | → | l | | app(cons(x, l), k) | → | cons(x, app(l, k)) |
sum(cons(x, nil)) | → | cons(x, nil) | | sum(cons(x, cons(y, l))) | → | sum(cons(plus(x, y), l)) |
sum(app(l, cons(x, cons(y, k)))) | → | sum(app(l, sum(cons(x, cons(y, k))))) | | plus(0, y) | → | y |
plus(s(x), y) | → | s(plus(x, y)) |
Original Signature
Termination of terms over the following signature is verified: plus, app, minus, 0, s, sum, quot, nil, cons
Strategy
Polynomial Interpretation
- 0: 1
- app(x,y): y + x
- cons(x,y): y + 1
- minus(x,y): 0
- nil: 0
- plus(x,y): 3y + 1
- quot(x,y): 0
- s(x): 3
- sum(x): 1
- sum#(x): x + 1
Improved Usable rules
app(l, nil) | → | l | | app(cons(x, l), k) | → | cons(x, app(l, k)) |
app(nil, k) | → | k | | sum(cons(x, cons(y, l))) | → | sum(cons(plus(x, y), l)) |
sum(cons(x, nil)) | → | cons(x, nil) | | sum(app(l, cons(x, cons(y, k)))) | → | sum(app(l, sum(cons(x, cons(y, k))))) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
sum#(app(l, cons(x, cons(y, k)))) | → | sum#(app(l, sum(cons(x, cons(y, k))))) |
Problem 5: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
app#(cons(x, l), k) | → | app#(l, k) |
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))) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
minus(minus(x, y), z) | → | minus(x, plus(y, z)) | | app(nil, k) | → | k |
app(l, nil) | → | l | | app(cons(x, l), k) | → | cons(x, app(l, k)) |
sum(cons(x, nil)) | → | cons(x, nil) | | sum(cons(x, cons(y, l))) | → | sum(cons(plus(x, y), l)) |
sum(app(l, cons(x, cons(y, k)))) | → | sum(app(l, sum(cons(x, cons(y, k))))) | | plus(0, y) | → | y |
plus(s(x), y) | → | s(plus(x, y)) |
Original Signature
Termination of terms over the following signature is verified: plus, app, minus, 0, s, sum, quot, nil, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
app#(cons(x, l), k) | → | app#(l, k) |
Problem 6: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
minus#(s(x), s(y)) | → | minus#(x, y) | | minus#(minus(x, y), z) | → | minus#(x, plus(y, 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))) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
minus(minus(x, y), z) | → | minus(x, plus(y, z)) | | app(nil, k) | → | k |
app(l, nil) | → | l | | app(cons(x, l), k) | → | cons(x, app(l, k)) |
sum(cons(x, nil)) | → | cons(x, nil) | | sum(cons(x, cons(y, l))) | → | sum(cons(plus(x, y), l)) |
sum(app(l, cons(x, cons(y, k)))) | → | sum(app(l, sum(cons(x, cons(y, k))))) | | plus(0, y) | → | y |
plus(s(x), y) | → | s(plus(x, y)) |
Original Signature
Termination of terms over the following signature is verified: plus, app, minus, 0, s, sum, quot, nil, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
minus#(s(x), s(y)) | → | minus#(x, y) | | minus#(minus(x, y), z) | → | minus#(x, plus(y, z)) |
Problem 7: 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))) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
minus(minus(x, y), z) | → | minus(x, plus(y, z)) | | app(nil, k) | → | k |
app(l, nil) | → | l | | app(cons(x, l), k) | → | cons(x, app(l, k)) |
sum(cons(x, nil)) | → | cons(x, nil) | | sum(cons(x, cons(y, l))) | → | sum(cons(plus(x, y), l)) |
sum(app(l, cons(x, cons(y, k)))) | → | sum(app(l, sum(cons(x, cons(y, k))))) | | plus(0, y) | → | y |
plus(s(x), y) | → | s(plus(x, y)) |
Original Signature
Termination of terms over the following signature is verified: plus, app, minus, 0, s, sum, quot, nil, cons
Strategy
Polynomial Interpretation
- 0: 2
- app(x,y): 0
- cons(x,y): 0
- minus(x,y): 2x
- nil: 0
- plus(x,y): 0
- quot(x,y): 0
- quot#(x,y): 2x + 1
- s(x): 2x + 1
- sum(x): 0
Improved Usable rules
minus(s(x), s(y)) | → | minus(x, y) | | minus(minus(x, y), z) | → | minus(x, plus(y, z)) |
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)) |