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