YES
The TRS could be proven terminating. The proof took 341 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (179ms).
| Problem 2 was processed with processor SubtermCriterion (2ms).
| Problem 3 was processed with processor SubtermCriterion (2ms).
| Problem 4 was processed with processor SubtermCriterion (2ms).
| Problem 5 was processed with processor SubtermCriterion (2ms).
| Problem 6 was processed with processor SubtermCriterion (1ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
sum#(app(l1, l2)) | → | +#(sum(l1), sum(l2)) | | *#(s(x), s(y)) | → | +#(x, y) |
*#(*(x, y), z) | → | *#(x, *(y, z)) | | *#(*(x, y), z) | → | *#(y, z) |
+#(+(x, y), z) | → | +#(y, z) | | sum#(cons(x, l)) | → | sum#(l) |
prod#(cons(x, l)) | → | *#(x, prod(l)) | | sum#(cons(x, l)) | → | +#(x, sum(l)) |
+#(s(x), s(y)) | → | +#(x, y) | | +#(+(x, y), z) | → | +#(x, +(y, z)) |
prod#(app(l1, l2)) | → | *#(prod(l1), prod(l2)) | | prod#(cons(x, l)) | → | prod#(l) |
app#(cons(x, l1), l2) | → | app#(l1, l2) | | sum#(app(l1, l2)) | → | sum#(l1) |
prod#(app(l1, l2)) | → | prod#(l1) | | *#(s(x), s(y)) | → | *#(x, y) |
*#(s(x), s(y)) | → | +#(*(x, y), +(x, y)) | | prod#(app(l1, l2)) | → | prod#(l2) |
sum#(app(l1, l2)) | → | sum#(l2) |
Rewrite Rules
+(x, 0) | → | x | | +(0, x) | → | x |
+(s(x), s(y)) | → | s(s(+(x, y))) | | +(+(x, y), z) | → | +(x, +(y, z)) |
*(x, 0) | → | 0 | | *(0, x) | → | 0 |
*(s(x), s(y)) | → | s(+(*(x, y), +(x, y))) | | *(*(x, y), z) | → | *(x, *(y, z)) |
app(nil, l) | → | l | | app(cons(x, l1), l2) | → | cons(x, app(l1, l2)) |
sum(nil) | → | 0 | | sum(cons(x, l)) | → | +(x, sum(l)) |
sum(app(l1, l2)) | → | +(sum(l1), sum(l2)) | | prod(nil) | → | s(0) |
prod(cons(x, l)) | → | *(x, prod(l)) | | prod(app(l1, l2)) | → | *(prod(l1), prod(l2)) |
Original Signature
Termination of terms over the following signature is verified: app, 0, s, *, +, sum, nil, cons, prod
Strategy
The following SCCs where found
app#(cons(x, l1), l2) → app#(l1, l2) |
sum#(app(l1, l2)) → sum#(l1) | sum#(cons(x, l)) → sum#(l) |
sum#(app(l1, l2)) → sum#(l2) |
*#(s(x), s(y)) → *#(x, y) | *#(*(x, y), z) → *#(y, z) |
*#(*(x, y), z) → *#(x, *(y, z)) |
+#(+(x, y), z) → +#(y, z) | +#(s(x), s(y)) → +#(x, y) |
+#(+(x, y), z) → +#(x, +(y, z)) |
prod#(cons(x, l)) → prod#(l) | prod#(app(l1, l2)) → prod#(l1) |
prod#(app(l1, l2)) → prod#(l2) |
Problem 2: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
*#(s(x), s(y)) | → | *#(x, y) | | *#(*(x, y), z) | → | *#(y, z) |
*#(*(x, y), z) | → | *#(x, *(y, z)) |
Rewrite Rules
+(x, 0) | → | x | | +(0, x) | → | x |
+(s(x), s(y)) | → | s(s(+(x, y))) | | +(+(x, y), z) | → | +(x, +(y, z)) |
*(x, 0) | → | 0 | | *(0, x) | → | 0 |
*(s(x), s(y)) | → | s(+(*(x, y), +(x, y))) | | *(*(x, y), z) | → | *(x, *(y, z)) |
app(nil, l) | → | l | | app(cons(x, l1), l2) | → | cons(x, app(l1, l2)) |
sum(nil) | → | 0 | | sum(cons(x, l)) | → | +(x, sum(l)) |
sum(app(l1, l2)) | → | +(sum(l1), sum(l2)) | | prod(nil) | → | s(0) |
prod(cons(x, l)) | → | *(x, prod(l)) | | prod(app(l1, l2)) | → | *(prod(l1), prod(l2)) |
Original Signature
Termination of terms over the following signature is verified: app, 0, s, *, +, sum, nil, cons, prod
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
*#(s(x), s(y)) | → | *#(x, y) | | *#(*(x, y), z) | → | *#(y, z) |
*#(*(x, y), z) | → | *#(x, *(y, z)) |
Problem 3: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
prod#(cons(x, l)) | → | prod#(l) | | prod#(app(l1, l2)) | → | prod#(l1) |
prod#(app(l1, l2)) | → | prod#(l2) |
Rewrite Rules
+(x, 0) | → | x | | +(0, x) | → | x |
+(s(x), s(y)) | → | s(s(+(x, y))) | | +(+(x, y), z) | → | +(x, +(y, z)) |
*(x, 0) | → | 0 | | *(0, x) | → | 0 |
*(s(x), s(y)) | → | s(+(*(x, y), +(x, y))) | | *(*(x, y), z) | → | *(x, *(y, z)) |
app(nil, l) | → | l | | app(cons(x, l1), l2) | → | cons(x, app(l1, l2)) |
sum(nil) | → | 0 | | sum(cons(x, l)) | → | +(x, sum(l)) |
sum(app(l1, l2)) | → | +(sum(l1), sum(l2)) | | prod(nil) | → | s(0) |
prod(cons(x, l)) | → | *(x, prod(l)) | | prod(app(l1, l2)) | → | *(prod(l1), prod(l2)) |
Original Signature
Termination of terms over the following signature is verified: app, 0, s, *, +, sum, nil, cons, prod
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
prod#(cons(x, l)) | → | prod#(l) | | prod#(app(l1, l2)) | → | prod#(l1) |
prod#(app(l1, l2)) | → | prod#(l2) |
Problem 4: 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
+(x, 0) | → | x | | +(0, x) | → | x |
+(s(x), s(y)) | → | s(s(+(x, y))) | | +(+(x, y), z) | → | +(x, +(y, z)) |
*(x, 0) | → | 0 | | *(0, x) | → | 0 |
*(s(x), s(y)) | → | s(+(*(x, y), +(x, y))) | | *(*(x, y), z) | → | *(x, *(y, z)) |
app(nil, l) | → | l | | app(cons(x, l1), l2) | → | cons(x, app(l1, l2)) |
sum(nil) | → | 0 | | sum(cons(x, l)) | → | +(x, sum(l)) |
sum(app(l1, l2)) | → | +(sum(l1), sum(l2)) | | prod(nil) | → | s(0) |
prod(cons(x, l)) | → | *(x, prod(l)) | | prod(app(l1, l2)) | → | *(prod(l1), prod(l2)) |
Original Signature
Termination of terms over the following signature is verified: app, 0, s, *, +, sum, nil, cons, prod
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 5: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
sum#(app(l1, l2)) | → | sum#(l1) | | sum#(cons(x, l)) | → | sum#(l) |
sum#(app(l1, l2)) | → | sum#(l2) |
Rewrite Rules
+(x, 0) | → | x | | +(0, x) | → | x |
+(s(x), s(y)) | → | s(s(+(x, y))) | | +(+(x, y), z) | → | +(x, +(y, z)) |
*(x, 0) | → | 0 | | *(0, x) | → | 0 |
*(s(x), s(y)) | → | s(+(*(x, y), +(x, y))) | | *(*(x, y), z) | → | *(x, *(y, z)) |
app(nil, l) | → | l | | app(cons(x, l1), l2) | → | cons(x, app(l1, l2)) |
sum(nil) | → | 0 | | sum(cons(x, l)) | → | +(x, sum(l)) |
sum(app(l1, l2)) | → | +(sum(l1), sum(l2)) | | prod(nil) | → | s(0) |
prod(cons(x, l)) | → | *(x, prod(l)) | | prod(app(l1, l2)) | → | *(prod(l1), prod(l2)) |
Original Signature
Termination of terms over the following signature is verified: app, 0, s, *, +, sum, nil, cons, prod
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
sum#(app(l1, l2)) | → | sum#(l1) | | sum#(cons(x, l)) | → | sum#(l) |
sum#(app(l1, l2)) | → | sum#(l2) |
Problem 6: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
app#(cons(x, l1), l2) | → | app#(l1, l2) |
Rewrite Rules
+(x, 0) | → | x | | +(0, x) | → | x |
+(s(x), s(y)) | → | s(s(+(x, y))) | | +(+(x, y), z) | → | +(x, +(y, z)) |
*(x, 0) | → | 0 | | *(0, x) | → | 0 |
*(s(x), s(y)) | → | s(+(*(x, y), +(x, y))) | | *(*(x, y), z) | → | *(x, *(y, z)) |
app(nil, l) | → | l | | app(cons(x, l1), l2) | → | cons(x, app(l1, l2)) |
sum(nil) | → | 0 | | sum(cons(x, l)) | → | +(x, sum(l)) |
sum(app(l1, l2)) | → | +(sum(l1), sum(l2)) | | prod(nil) | → | s(0) |
prod(cons(x, l)) | → | *(x, prod(l)) | | prod(app(l1, l2)) | → | *(prod(l1), prod(l2)) |
Original Signature
Termination of terms over the following signature is verified: app, 0, s, *, +, sum, nil, cons, prod
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
app#(cons(x, l1), l2) | → | app#(l1, l2) |