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