YES
 
The TRS could be proven terminating. The proof took 1041 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (129ms).
 |  Problem 2 was processed with processor SubtermCriterion (20ms).
 |  Problem 3 was processed with processor PolynomialLinearRange4iUR (299ms).
 |    |  Problem 6 was processed with processor DependencyGraph (1ms).
 |    |    |  Problem 7 was processed with processor PolynomialLinearRange4iUR (223ms).
 |    |    |  Problem 8 was processed with processor PolynomialLinearRange4iUR (108ms).
 |    |    |    |  Problem 9 was processed with processor PolynomialLinearRange4iUR (99ms).
 |  Problem 4 was processed with processor SubtermCriterion (0ms).
 |  Problem 5 was processed with processor SubtermCriterion (1ms).
 Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| +#(0(x), 1(y)) |  →  | +#(x, y) |  | +#(1(x), 1(y)) |  →  | 0#(+(+(x, y), 1(#))) | 
| +#(0(x), 0(y)) |  →  | +#(x, y) |  | sum#(cons(x, l)) |  →  | sum#(l) | 
| *#(0(x), y) |  →  | 0#(*(x, y)) |  | prod#(cons(x, l)) |  →  | *#(x, prod(l)) | 
| sum#(cons(x, l)) |  →  | +#(x, sum(l)) |  | +#(1(x), 1(y)) |  →  | +#(+(x, y), 1(#)) | 
| +#(0(x), 0(y)) |  →  | 0#(+(x, y)) |  | *#(1(x), y) |  →  | +#(0(*(x, y)), y) | 
| prod#(cons(x, l)) |  →  | prod#(l) |  | *#(1(x), y) |  →  | *#(x, y) | 
| sum#(nil) |  →  | 0#(#) |  | *#(1(x), y) |  →  | 0#(*(x, y)) | 
| +#(1(x), 1(y)) |  →  | +#(x, y) |  | *#(0(x), y) |  →  | *#(x, y) | 
| +#(1(x), 0(y)) |  →  | +#(x, y) | 
Rewrite Rules
| 0(#) |  →  | # |  | +(x, #) |  →  | x | 
| +(#, x) |  →  | x |  | +(0(x), 0(y)) |  →  | 0(+(x, y)) | 
| +(0(x), 1(y)) |  →  | 1(+(x, y)) |  | +(1(x), 0(y)) |  →  | 1(+(x, y)) | 
| +(1(x), 1(y)) |  →  | 0(+(+(x, y), 1(#))) |  | *(#, x) |  →  | # | 
| *(0(x), y) |  →  | 0(*(x, y)) |  | *(1(x), y) |  →  | +(0(*(x, y)), y) | 
| sum(nil) |  →  | 0(#) |  | sum(cons(x, l)) |  →  | +(x, sum(l)) | 
| prod(nil) |  →  | 1(#) |  | prod(cons(x, l)) |  →  | *(x, prod(l)) | 
Original Signature
Termination of terms over the following signature is verified: #, 1, 0, *, +, sum, nil, cons, prod
Strategy
The following SCCs where found
| prod#(cons(x, l)) → prod#(l) | 
| *#(1(x), y) → *#(x, y) | *#(0(x), y) → *#(x, y) | 
| sum#(cons(x, l)) → sum#(l) | 
| +#(0(x), 1(y)) → +#(x, y) | +#(0(x), 0(y)) → +#(x, y) | 
| +#(1(x), 1(y)) → +#(x, y) | +#(1(x), 1(y)) → +#(+(x, y), 1(#)) | 
| +#(1(x), 0(y)) → +#(x, y) | 
 
 Problem 2: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| *#(1(x), y) |  →  | *#(x, y) |  | *#(0(x), y) |  →  | *#(x, y) | 
Rewrite Rules
| 0(#) |  →  | # |  | +(x, #) |  →  | x | 
| +(#, x) |  →  | x |  | +(0(x), 0(y)) |  →  | 0(+(x, y)) | 
| +(0(x), 1(y)) |  →  | 1(+(x, y)) |  | +(1(x), 0(y)) |  →  | 1(+(x, y)) | 
| +(1(x), 1(y)) |  →  | 0(+(+(x, y), 1(#))) |  | *(#, x) |  →  | # | 
| *(0(x), y) |  →  | 0(*(x, y)) |  | *(1(x), y) |  →  | +(0(*(x, y)), y) | 
| sum(nil) |  →  | 0(#) |  | sum(cons(x, l)) |  →  | +(x, sum(l)) | 
| prod(nil) |  →  | 1(#) |  | prod(cons(x, l)) |  →  | *(x, prod(l)) | 
Original Signature
Termination of terms over the following signature is verified: #, 1, 0, *, +, sum, nil, cons, prod
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed: 
| *#(1(x), y) |  →  | *#(x, y) |  | *#(0(x), y) |  →  | *#(x, y) | 
 
 Problem 3: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
| +#(0(x), 1(y)) |  →  | +#(x, y) |  | +#(0(x), 0(y)) |  →  | +#(x, y) | 
| +#(1(x), 1(y)) |  →  | +#(x, y) |  | +#(1(x), 1(y)) |  →  | +#(+(x, y), 1(#)) | 
| +#(1(x), 0(y)) |  →  | +#(x, y) | 
Rewrite Rules
| 0(#) |  →  | # |  | +(x, #) |  →  | x | 
| +(#, x) |  →  | x |  | +(0(x), 0(y)) |  →  | 0(+(x, y)) | 
| +(0(x), 1(y)) |  →  | 1(+(x, y)) |  | +(1(x), 0(y)) |  →  | 1(+(x, y)) | 
| +(1(x), 1(y)) |  →  | 0(+(+(x, y), 1(#))) |  | *(#, x) |  →  | # | 
| *(0(x), y) |  →  | 0(*(x, y)) |  | *(1(x), y) |  →  | +(0(*(x, y)), y) | 
| sum(nil) |  →  | 0(#) |  | sum(cons(x, l)) |  →  | +(x, sum(l)) | 
| prod(nil) |  →  | 1(#) |  | prod(cons(x, l)) |  →  | *(x, prod(l)) | 
Original Signature
Termination of terms over the following signature is verified: #, 1, 0, *, +, sum, nil, cons, prod
Strategy
Polynomial Interpretation
- #: 0
 
- *(x,y): 0
 
- +(x,y): 0
 
- +#(x,y): 3y
 
- 0(x): 3x
 
- 1(x): x + 1
 
- cons(x,y): 0
 
- nil: 0
 
- prod(x): 0
 
- 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:
| +#(0(x), 1(y)) |  →  | +#(x, y) |  | +#(1(x), 1(y)) |  →  | +#(x, y) | 
 
 Problem 6: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| +#(0(x), 0(y)) |  →  | +#(x, y) |  | +#(1(x), 1(y)) |  →  | +#(+(x, y), 1(#)) | 
| +#(1(x), 0(y)) |  →  | +#(x, y) | 
Rewrite Rules
| 0(#) |  →  | # |  | +(x, #) |  →  | x | 
| +(#, x) |  →  | x |  | +(0(x), 0(y)) |  →  | 0(+(x, y)) | 
| +(0(x), 1(y)) |  →  | 1(+(x, y)) |  | +(1(x), 0(y)) |  →  | 1(+(x, y)) | 
| +(1(x), 1(y)) |  →  | 0(+(+(x, y), 1(#))) |  | *(#, x) |  →  | # | 
| *(0(x), y) |  →  | 0(*(x, y)) |  | *(1(x), y) |  →  | +(0(*(x, y)), y) | 
| sum(nil) |  →  | 0(#) |  | sum(cons(x, l)) |  →  | +(x, sum(l)) | 
| prod(nil) |  →  | 1(#) |  | prod(cons(x, l)) |  →  | *(x, prod(l)) | 
Original Signature
Termination of terms over the following signature is verified: #, 1, 0, *, sum, +, prod, cons, nil
Strategy
The following SCCs where found
| +#(0(x), 0(y)) → +#(x, y) | +#(1(x), 0(y)) → +#(x, y) | 
| +#(1(x), 1(y)) → +#(+(x, y), 1(#)) | 
 
 Problem 7: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
| +#(1(x), 1(y)) |  →  | +#(+(x, y), 1(#)) | 
Rewrite Rules
| 0(#) |  →  | # |  | +(x, #) |  →  | x | 
| +(#, x) |  →  | x |  | +(0(x), 0(y)) |  →  | 0(+(x, y)) | 
| +(0(x), 1(y)) |  →  | 1(+(x, y)) |  | +(1(x), 0(y)) |  →  | 1(+(x, y)) | 
| +(1(x), 1(y)) |  →  | 0(+(+(x, y), 1(#))) |  | *(#, x) |  →  | # | 
| *(0(x), y) |  →  | 0(*(x, y)) |  | *(1(x), y) |  →  | +(0(*(x, y)), y) | 
| sum(nil) |  →  | 0(#) |  | sum(cons(x, l)) |  →  | +(x, sum(l)) | 
| prod(nil) |  →  | 1(#) |  | prod(cons(x, l)) |  →  | *(x, prod(l)) | 
Original Signature
Termination of terms over the following signature is verified: #, 1, 0, *, sum, +, prod, cons, nil
Strategy
Polynomial Interpretation
- #: 0
 
- *(x,y): 0
 
- +(x,y): y + x
 
- +#(x,y): y + x
 
- 0(x): x + 1
 
- 1(x): x + 1
 
- cons(x,y): 0
 
- nil: 0
 
- prod(x): 0
 
- sum(x): 0
 
Improved Usable rules
| +(0(x), 0(y)) |  →  | 0(+(x, y)) |  | +(1(x), 0(y)) |  →  | 1(+(x, y)) | 
| 0(#) |  →  | # |  | +(x, #) |  →  | x | 
| +(0(x), 1(y)) |  →  | 1(+(x, y)) |  | +(1(x), 1(y)) |  →  | 0(+(+(x, y), 1(#))) | 
| +(#, x) |  →  | x | 
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| +#(1(x), 1(y)) |  →  | +#(+(x, y), 1(#)) | 
 
 Problem 8: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
| +#(0(x), 0(y)) |  →  | +#(x, y) |  | +#(1(x), 0(y)) |  →  | +#(x, y) | 
Rewrite Rules
| 0(#) |  →  | # |  | +(x, #) |  →  | x | 
| +(#, x) |  →  | x |  | +(0(x), 0(y)) |  →  | 0(+(x, y)) | 
| +(0(x), 1(y)) |  →  | 1(+(x, y)) |  | +(1(x), 0(y)) |  →  | 1(+(x, y)) | 
| +(1(x), 1(y)) |  →  | 0(+(+(x, y), 1(#))) |  | *(#, x) |  →  | # | 
| *(0(x), y) |  →  | 0(*(x, y)) |  | *(1(x), y) |  →  | +(0(*(x, y)), y) | 
| sum(nil) |  →  | 0(#) |  | sum(cons(x, l)) |  →  | +(x, sum(l)) | 
| prod(nil) |  →  | 1(#) |  | prod(cons(x, l)) |  →  | *(x, prod(l)) | 
Original Signature
Termination of terms over the following signature is verified: #, 1, 0, *, sum, +, prod, cons, nil
Strategy
Polynomial Interpretation
- #: 0
 
- *(x,y): 0
 
- +(x,y): 0
 
- +#(x,y): y + 3x
 
- 0(x): 3x
 
- 1(x): x + 1
 
- cons(x,y): 0
 
- nil: 0
 
- prod(x): 0
 
- sum(x): 0
 
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| +#(1(x), 0(y)) |  →  | +#(x, y) | 
 
 Problem 9: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
| +#(0(x), 0(y)) |  →  | +#(x, y) | 
Rewrite Rules
| 0(#) |  →  | # |  | +(x, #) |  →  | x | 
| +(#, x) |  →  | x |  | +(0(x), 0(y)) |  →  | 0(+(x, y)) | 
| +(0(x), 1(y)) |  →  | 1(+(x, y)) |  | +(1(x), 0(y)) |  →  | 1(+(x, y)) | 
| +(1(x), 1(y)) |  →  | 0(+(+(x, y), 1(#))) |  | *(#, x) |  →  | # | 
| *(0(x), y) |  →  | 0(*(x, y)) |  | *(1(x), y) |  →  | +(0(*(x, y)), y) | 
| sum(nil) |  →  | 0(#) |  | sum(cons(x, l)) |  →  | +(x, sum(l)) | 
| prod(nil) |  →  | 1(#) |  | prod(cons(x, l)) |  →  | *(x, prod(l)) | 
Original Signature
Termination of terms over the following signature is verified: #, 1, 0, *, +, sum, nil, cons, prod
Strategy
Polynomial Interpretation
- #: 0
 
- *(x,y): 0
 
- +(x,y): 0
 
- +#(x,y): 2y + 1
 
- 0(x): 2x + 1
 
- 1(x): 0
 
- cons(x,y): 0
 
- nil: 0
 
- prod(x): 0
 
- sum(x): 0
 
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| +#(0(x), 0(y)) |  →  | +#(x, y) | 
 
 Problem 4: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| prod#(cons(x, l)) |  →  | prod#(l) | 
Rewrite Rules
| 0(#) |  →  | # |  | +(x, #) |  →  | x | 
| +(#, x) |  →  | x |  | +(0(x), 0(y)) |  →  | 0(+(x, y)) | 
| +(0(x), 1(y)) |  →  | 1(+(x, y)) |  | +(1(x), 0(y)) |  →  | 1(+(x, y)) | 
| +(1(x), 1(y)) |  →  | 0(+(+(x, y), 1(#))) |  | *(#, x) |  →  | # | 
| *(0(x), y) |  →  | 0(*(x, y)) |  | *(1(x), y) |  →  | +(0(*(x, y)), y) | 
| sum(nil) |  →  | 0(#) |  | sum(cons(x, l)) |  →  | +(x, sum(l)) | 
| prod(nil) |  →  | 1(#) |  | prod(cons(x, l)) |  →  | *(x, prod(l)) | 
Original Signature
Termination of terms over the following signature is verified: #, 1, 0, *, +, sum, nil, cons, prod
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed: 
| prod#(cons(x, l)) |  →  | prod#(l) | 
 
 Problem 5: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| sum#(cons(x, l)) |  →  | sum#(l) | 
Rewrite Rules
| 0(#) |  →  | # |  | +(x, #) |  →  | x | 
| +(#, x) |  →  | x |  | +(0(x), 0(y)) |  →  | 0(+(x, y)) | 
| +(0(x), 1(y)) |  →  | 1(+(x, y)) |  | +(1(x), 0(y)) |  →  | 1(+(x, y)) | 
| +(1(x), 1(y)) |  →  | 0(+(+(x, y), 1(#))) |  | *(#, x) |  →  | # | 
| *(0(x), y) |  →  | 0(*(x, y)) |  | *(1(x), y) |  →  | +(0(*(x, y)), y) | 
| sum(nil) |  →  | 0(#) |  | sum(cons(x, l)) |  →  | +(x, sum(l)) | 
| prod(nil) |  →  | 1(#) |  | prod(cons(x, l)) |  →  | *(x, prod(l)) | 
Original Signature
Termination of terms over the following signature is verified: #, 1, 0, *, +, sum, nil, cons, prod
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed: 
| sum#(cons(x, l)) |  →  | sum#(l) |