YES
The TRS could be proven terminating. The proof took 2034 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (93ms).
| Problem 2 was processed with processor PolynomialLinearRange4iUR (858ms).
| | Problem 4 was processed with processor DependencyGraph (7ms).
| | | Problem 5 was processed with processor PolynomialLinearRange4iUR (535ms).
| | | | Problem 6 was processed with processor PolynomialLinearRange4iUR (331ms).
| | | | | Problem 7 was processed with processor DependencyGraph (1ms).
| | | | | | Problem 8 was processed with processor PolynomialLinearRange4iUR (30ms).
| | | | | | | Problem 9 was processed with processor DependencyGraph (0ms).
| Problem 3 was processed with processor SubtermCriterion (1ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
foldC#(t, s(n)) | → | f#(foldC(t, n), C) | | f#(t, x) | → | f'#(t, g(x)) |
f'#(triple(a, b, c), B) | → | f#(triple(a, b, c), A) | | foldC#(t, s(n)) | → | foldC#(t, n) |
foldB#(t, s(n)) | → | foldB#(t, n) | | f#(t, x) | → | g#(x) |
fold#(t, x, s(n)) | → | f#(fold(t, x, n), x) | | f'#(triple(a, b, c), A) | → | foldB#(triple(s(a), 0, c), b) |
f'#(triple(a, b, c), A) | → | f''#(foldB(triple(s(a), 0, c), b)) | | fold#(t, x, s(n)) | → | fold#(t, x, n) |
foldB#(t, s(n)) | → | f#(foldB(t, n), B) | | f''#(triple(a, b, c)) | → | foldC#(triple(a, b, 0), c) |
Rewrite Rules
g(A) | → | A | | g(B) | → | A |
g(B) | → | B | | g(C) | → | A |
g(C) | → | B | | g(C) | → | C |
foldB(t, 0) | → | t | | foldB(t, s(n)) | → | f(foldB(t, n), B) |
foldC(t, 0) | → | t | | foldC(t, s(n)) | → | f(foldC(t, n), C) |
f(t, x) | → | f'(t, g(x)) | | f'(triple(a, b, c), C) | → | triple(a, b, s(c)) |
f'(triple(a, b, c), B) | → | f(triple(a, b, c), A) | | f'(triple(a, b, c), A) | → | f''(foldB(triple(s(a), 0, c), b)) |
f''(triple(a, b, c)) | → | foldC(triple(a, b, 0), c) | | fold(t, x, 0) | → | t |
fold(t, x, s(n)) | → | f(fold(t, x, n), x) |
Original Signature
Termination of terms over the following signature is verified: f, g, f'', A, B, C, foldC, foldB, fold, f', 0, s, triple
Strategy
The following SCCs where found
foldC#(t, s(n)) → f#(foldC(t, n), C) | f#(t, x) → f'#(t, g(x)) |
f'#(triple(a, b, c), B) → f#(triple(a, b, c), A) | foldC#(t, s(n)) → foldC#(t, n) |
foldB#(t, s(n)) → foldB#(t, n) | f'#(triple(a, b, c), A) → foldB#(triple(s(a), 0, c), b) |
f'#(triple(a, b, c), A) → f''#(foldB(triple(s(a), 0, c), b)) | f''#(triple(a, b, c)) → foldC#(triple(a, b, 0), c) |
foldB#(t, s(n)) → f#(foldB(t, n), B) |
fold#(t, x, s(n)) → fold#(t, x, n) |
Problem 2: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
foldC#(t, s(n)) | → | f#(foldC(t, n), C) | | f#(t, x) | → | f'#(t, g(x)) |
f'#(triple(a, b, c), B) | → | f#(triple(a, b, c), A) | | foldC#(t, s(n)) | → | foldC#(t, n) |
foldB#(t, s(n)) | → | foldB#(t, n) | | f'#(triple(a, b, c), A) | → | foldB#(triple(s(a), 0, c), b) |
f'#(triple(a, b, c), A) | → | f''#(foldB(triple(s(a), 0, c), b)) | | f''#(triple(a, b, c)) | → | foldC#(triple(a, b, 0), c) |
foldB#(t, s(n)) | → | f#(foldB(t, n), B) |
Rewrite Rules
g(A) | → | A | | g(B) | → | A |
g(B) | → | B | | g(C) | → | A |
g(C) | → | B | | g(C) | → | C |
foldB(t, 0) | → | t | | foldB(t, s(n)) | → | f(foldB(t, n), B) |
foldC(t, 0) | → | t | | foldC(t, s(n)) | → | f(foldC(t, n), C) |
f(t, x) | → | f'(t, g(x)) | | f'(triple(a, b, c), C) | → | triple(a, b, s(c)) |
f'(triple(a, b, c), B) | → | f(triple(a, b, c), A) | | f'(triple(a, b, c), A) | → | f''(foldB(triple(s(a), 0, c), b)) |
f''(triple(a, b, c)) | → | foldC(triple(a, b, 0), c) | | fold(t, x, 0) | → | t |
fold(t, x, s(n)) | → | f(fold(t, x, n), x) |
Original Signature
Termination of terms over the following signature is verified: f, g, f'', A, B, C, foldC, foldB, fold, f', 0, s, triple
Strategy
Polynomial Interpretation
- 0: 0
- A: 1
- B: 1
- C: 1
- f(x,y): x
- f#(x,y): 2y + x
- f'(x,y): x
- f'#(x,y): 2y + x
- f''(x): 2x
- f''#(x): 2x + 2
- fold(x,y,z): 0
- foldB(x,y): y + 2x
- foldB#(x,y): 2y + 3x
- foldC(x,y): x
- foldC#(x,y): 2x + 2
- g(x): x
- s(x): x + 1
- triple(x,y,z): 2y
Improved Usable rules
f'(triple(a, b, c), B) | → | f(triple(a, b, c), A) | | g(C) | → | C |
f'(triple(a, b, c), C) | → | triple(a, b, s(c)) | | f''(triple(a, b, c)) | → | foldC(triple(a, b, 0), c) |
g(A) | → | A | | g(B) | → | B |
f(t, x) | → | f'(t, g(x)) | | g(B) | → | A |
foldB(t, 0) | → | t | | foldB(t, s(n)) | → | f(foldB(t, n), B) |
foldC(t, s(n)) | → | f(foldC(t, n), C) | | g(C) | → | B |
foldC(t, 0) | → | t | | g(C) | → | A |
f'(triple(a, b, c), A) | → | f''(foldB(triple(s(a), 0, c), b)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
foldB#(t, s(n)) | → | foldB#(t, n) | | f'#(triple(a, b, c), A) | → | foldB#(triple(s(a), 0, c), b) |
Problem 4: DependencyGraph
Dependency Pair Problem
Dependency Pairs
foldC#(t, s(n)) | → | f#(foldC(t, n), C) | | f'#(triple(a, b, c), B) | → | f#(triple(a, b, c), A) |
f#(t, x) | → | f'#(t, g(x)) | | foldC#(t, s(n)) | → | foldC#(t, n) |
f'#(triple(a, b, c), A) | → | f''#(foldB(triple(s(a), 0, c), b)) | | foldB#(t, s(n)) | → | f#(foldB(t, n), B) |
f''#(triple(a, b, c)) | → | foldC#(triple(a, b, 0), c) |
Rewrite Rules
g(A) | → | A | | g(B) | → | A |
g(B) | → | B | | g(C) | → | A |
g(C) | → | B | | g(C) | → | C |
foldB(t, 0) | → | t | | foldB(t, s(n)) | → | f(foldB(t, n), B) |
foldC(t, 0) | → | t | | foldC(t, s(n)) | → | f(foldC(t, n), C) |
f(t, x) | → | f'(t, g(x)) | | f'(triple(a, b, c), C) | → | triple(a, b, s(c)) |
f'(triple(a, b, c), B) | → | f(triple(a, b, c), A) | | f'(triple(a, b, c), A) | → | f''(foldB(triple(s(a), 0, c), b)) |
f''(triple(a, b, c)) | → | foldC(triple(a, b, 0), c) | | fold(t, x, 0) | → | t |
fold(t, x, s(n)) | → | f(fold(t, x, n), x) |
Original Signature
Termination of terms over the following signature is verified: f, g, f'', A, B, C, foldC, foldB, fold, f', 0, s, triple
Strategy
The following SCCs where found
foldC#(t, s(n)) → f#(foldC(t, n), C) | f#(t, x) → f'#(t, g(x)) |
f'#(triple(a, b, c), B) → f#(triple(a, b, c), A) | foldC#(t, s(n)) → foldC#(t, n) |
f'#(triple(a, b, c), A) → f''#(foldB(triple(s(a), 0, c), b)) | f''#(triple(a, b, c)) → foldC#(triple(a, b, 0), c) |
Problem 5: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
foldC#(t, s(n)) | → | f#(foldC(t, n), C) | | f#(t, x) | → | f'#(t, g(x)) |
f'#(triple(a, b, c), B) | → | f#(triple(a, b, c), A) | | foldC#(t, s(n)) | → | foldC#(t, n) |
f'#(triple(a, b, c), A) | → | f''#(foldB(triple(s(a), 0, c), b)) | | f''#(triple(a, b, c)) | → | foldC#(triple(a, b, 0), c) |
Rewrite Rules
g(A) | → | A | | g(B) | → | A |
g(B) | → | B | | g(C) | → | A |
g(C) | → | B | | g(C) | → | C |
foldB(t, 0) | → | t | | foldB(t, s(n)) | → | f(foldB(t, n), B) |
foldC(t, 0) | → | t | | foldC(t, s(n)) | → | f(foldC(t, n), C) |
f(t, x) | → | f'(t, g(x)) | | f'(triple(a, b, c), C) | → | triple(a, b, s(c)) |
f'(triple(a, b, c), B) | → | f(triple(a, b, c), A) | | f'(triple(a, b, c), A) | → | f''(foldB(triple(s(a), 0, c), b)) |
f''(triple(a, b, c)) | → | foldC(triple(a, b, 0), c) | | fold(t, x, 0) | → | t |
fold(t, x, s(n)) | → | f(fold(t, x, n), x) |
Original Signature
Termination of terms over the following signature is verified: f, g, f'', A, B, C, foldC, foldB, fold, f', 0, s, triple
Strategy
Polynomial Interpretation
- 0: 0
- A: 0
- B: 0
- C: 1
- f(x,y): x + 1
- f#(x,y): 2y + 2x
- f'(x,y): x + 1
- f'#(x,y): 2x
- f''(x): x + 1
- f''#(x): 2x
- fold(x,y,z): 0
- foldB(x,y): y + x
- foldC(x,y): y + x
- foldC#(x,y): 2y + 2x
- g(x): 0
- s(x): x + 1
- triple(x,y,z): z + y
Improved Usable rules
foldB(t, 0) | → | t | | foldB(t, s(n)) | → | f(foldB(t, n), B) |
f'(triple(a, b, c), B) | → | f(triple(a, b, c), A) | | foldC(t, s(n)) | → | f(foldC(t, n), C) |
f'(triple(a, b, c), C) | → | triple(a, b, s(c)) | | f''(triple(a, b, c)) | → | foldC(triple(a, b, 0), c) |
foldC(t, 0) | → | t | | f(t, x) | → | f'(t, g(x)) |
f'(triple(a, b, c), A) | → | f''(foldB(triple(s(a), 0, c), b)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
foldC#(t, s(n)) | → | foldC#(t, n) |
Problem 6: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
foldC#(t, s(n)) | → | f#(foldC(t, n), C) | | f'#(triple(a, b, c), B) | → | f#(triple(a, b, c), A) |
f#(t, x) | → | f'#(t, g(x)) | | f'#(triple(a, b, c), A) | → | f''#(foldB(triple(s(a), 0, c), b)) |
f''#(triple(a, b, c)) | → | foldC#(triple(a, b, 0), c) |
Rewrite Rules
g(A) | → | A | | g(B) | → | A |
g(B) | → | B | | g(C) | → | A |
g(C) | → | B | | g(C) | → | C |
foldB(t, 0) | → | t | | foldB(t, s(n)) | → | f(foldB(t, n), B) |
foldC(t, 0) | → | t | | foldC(t, s(n)) | → | f(foldC(t, n), C) |
f(t, x) | → | f'(t, g(x)) | | f'(triple(a, b, c), C) | → | triple(a, b, s(c)) |
f'(triple(a, b, c), B) | → | f(triple(a, b, c), A) | | f'(triple(a, b, c), A) | → | f''(foldB(triple(s(a), 0, c), b)) |
f''(triple(a, b, c)) | → | foldC(triple(a, b, 0), c) | | fold(t, x, 0) | → | t |
fold(t, x, s(n)) | → | f(fold(t, x, n), x) |
Original Signature
Termination of terms over the following signature is verified: f, g, f'', A, B, C, foldC, foldB, fold, f', 0, s, triple
Strategy
Polynomial Interpretation
- 0: 0
- A: 1
- B: 1
- C: 1
- f(x,y): 2y + x
- f#(x,y): 2y + x
- f'(x,y): 2y + x
- f'#(x,y): 2y + x
- f''(x): x + 2
- f''#(x): x + 2
- fold(x,y,z): 0
- foldB(x,y): 2y + x
- foldC(x,y): 2y + x + 1
- foldC#(x,y): 2y + x + 1
- g(x): x
- s(x): x + 1
- triple(x,y,z): 2z + 2y
Improved Usable rules
f'(triple(a, b, c), B) | → | f(triple(a, b, c), A) | | g(C) | → | C |
f'(triple(a, b, c), C) | → | triple(a, b, s(c)) | | f''(triple(a, b, c)) | → | foldC(triple(a, b, 0), c) |
g(A) | → | A | | g(B) | → | B |
f(t, x) | → | f'(t, g(x)) | | g(B) | → | A |
foldB(t, 0) | → | t | | foldB(t, s(n)) | → | f(foldB(t, n), B) |
foldC(t, s(n)) | → | f(foldC(t, n), C) | | g(C) | → | B |
foldC(t, 0) | → | t | | g(C) | → | A |
f'(triple(a, b, c), A) | → | f''(foldB(triple(s(a), 0, c), b)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
f''#(triple(a, b, c)) | → | foldC#(triple(a, b, 0), c) |
Problem 7: DependencyGraph
Dependency Pair Problem
Dependency Pairs
foldC#(t, s(n)) | → | f#(foldC(t, n), C) | | f#(t, x) | → | f'#(t, g(x)) |
f'#(triple(a, b, c), B) | → | f#(triple(a, b, c), A) | | f'#(triple(a, b, c), A) | → | f''#(foldB(triple(s(a), 0, c), b)) |
Rewrite Rules
g(A) | → | A | | g(B) | → | A |
g(B) | → | B | | g(C) | → | A |
g(C) | → | B | | g(C) | → | C |
foldB(t, 0) | → | t | | foldB(t, s(n)) | → | f(foldB(t, n), B) |
foldC(t, 0) | → | t | | foldC(t, s(n)) | → | f(foldC(t, n), C) |
f(t, x) | → | f'(t, g(x)) | | f'(triple(a, b, c), C) | → | triple(a, b, s(c)) |
f'(triple(a, b, c), B) | → | f(triple(a, b, c), A) | | f'(triple(a, b, c), A) | → | f''(foldB(triple(s(a), 0, c), b)) |
f''(triple(a, b, c)) | → | foldC(triple(a, b, 0), c) | | fold(t, x, 0) | → | t |
fold(t, x, s(n)) | → | f(fold(t, x, n), x) |
Original Signature
Termination of terms over the following signature is verified: f, g, f'', A, B, C, foldC, foldB, fold, f', 0, s, triple
Strategy
The following SCCs where found
f'#(triple(a, b, c), B) → f#(triple(a, b, c), A) | f#(t, x) → f'#(t, g(x)) |
Problem 8: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
f'#(triple(a, b, c), B) | → | f#(triple(a, b, c), A) | | f#(t, x) | → | f'#(t, g(x)) |
Rewrite Rules
g(A) | → | A | | g(B) | → | A |
g(B) | → | B | | g(C) | → | A |
g(C) | → | B | | g(C) | → | C |
foldB(t, 0) | → | t | | foldB(t, s(n)) | → | f(foldB(t, n), B) |
foldC(t, 0) | → | t | | foldC(t, s(n)) | → | f(foldC(t, n), C) |
f(t, x) | → | f'(t, g(x)) | | f'(triple(a, b, c), C) | → | triple(a, b, s(c)) |
f'(triple(a, b, c), B) | → | f(triple(a, b, c), A) | | f'(triple(a, b, c), A) | → | f''(foldB(triple(s(a), 0, c), b)) |
f''(triple(a, b, c)) | → | foldC(triple(a, b, 0), c) | | fold(t, x, 0) | → | t |
fold(t, x, s(n)) | → | f(fold(t, x, n), x) |
Original Signature
Termination of terms over the following signature is verified: f, g, f'', A, B, C, foldC, foldB, fold, f', 0, s, triple
Strategy
Polynomial Interpretation
- 0: 0
- A: 1
- B: 3
- C: 3
- f(x,y): 0
- f#(x,y): 2y
- f'(x,y): 0
- f'#(x,y): y
- f''(x): 0
- fold(x,y,z): 0
- foldB(x,y): 0
- foldC(x,y): 0
- g(x): x
- s(x): 0
- triple(x,y,z): 2z + 2x
Improved Usable rules
g(C) | → | C | | g(A) | → | A |
g(B) | → | B | | g(C) | → | B |
g(C) | → | A | | g(B) | → | A |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
f'#(triple(a, b, c), B) | → | f#(triple(a, b, c), A) |
Problem 9: DependencyGraph
Dependency Pair Problem
Dependency Pairs
Rewrite Rules
g(A) | → | A | | g(B) | → | A |
g(B) | → | B | | g(C) | → | A |
g(C) | → | B | | g(C) | → | C |
foldB(t, 0) | → | t | | foldB(t, s(n)) | → | f(foldB(t, n), B) |
foldC(t, 0) | → | t | | foldC(t, s(n)) | → | f(foldC(t, n), C) |
f(t, x) | → | f'(t, g(x)) | | f'(triple(a, b, c), C) | → | triple(a, b, s(c)) |
f'(triple(a, b, c), B) | → | f(triple(a, b, c), A) | | f'(triple(a, b, c), A) | → | f''(foldB(triple(s(a), 0, c), b)) |
f''(triple(a, b, c)) | → | foldC(triple(a, b, 0), c) | | fold(t, x, 0) | → | t |
fold(t, x, s(n)) | → | f(fold(t, x, n), x) |
Original Signature
Termination of terms over the following signature is verified: f, g, f'', A, B, C, foldC, foldB, fold, f', 0, s, triple
Strategy
There are no SCCs!
Problem 3: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
fold#(t, x, s(n)) | → | fold#(t, x, n) |
Rewrite Rules
g(A) | → | A | | g(B) | → | A |
g(B) | → | B | | g(C) | → | A |
g(C) | → | B | | g(C) | → | C |
foldB(t, 0) | → | t | | foldB(t, s(n)) | → | f(foldB(t, n), B) |
foldC(t, 0) | → | t | | foldC(t, s(n)) | → | f(foldC(t, n), C) |
f(t, x) | → | f'(t, g(x)) | | f'(triple(a, b, c), C) | → | triple(a, b, s(c)) |
f'(triple(a, b, c), B) | → | f(triple(a, b, c), A) | | f'(triple(a, b, c), A) | → | f''(foldB(triple(s(a), 0, c), b)) |
f''(triple(a, b, c)) | → | foldC(triple(a, b, 0), c) | | fold(t, x, 0) | → | t |
fold(t, x, s(n)) | → | f(fold(t, x, n), x) |
Original Signature
Termination of terms over the following signature is verified: f, g, f'', A, B, C, foldC, foldB, fold, f', 0, s, triple
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
fold#(t, x, s(n)) | → | fold#(t, x, n) |