YES
The TRS could be proven terminating. The proof took 1642 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (58ms).
| Problem 2 was processed with processor PolynomialLinearRange4iUR (991ms).
| | Problem 3 was processed with processor DependencyGraph (5ms).
| | | Problem 4 was processed with processor PolynomialLinearRange4iUR (439ms).
| | | | Problem 5 was processed with processor DependencyGraph (1ms).
| | | | | Problem 6 was processed with processor PolynomialLinearRange4iUR (36ms).
| | | | | | Problem 7 was processed with processor DependencyGraph (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) |
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)) |
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) |
Original Signature
Termination of terms over the following signature is verified: f, f', g, 0, s, f'', A, B, C, triple, foldC, foldB
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) |
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) |
Original Signature
Termination of terms over the following signature is verified: f, f', g, 0, s, f'', A, B, C, triple, foldC, foldB
Strategy
Polynomial Interpretation
- 0: 0
- A: 0
- B: 0
- C: 0
- f(x,y): x
- f#(x,y): x
- f'(x,y): x
- f'#(x,y): x
- f''(x): 2x
- f''#(x): x
- foldB(x,y): 2x
- foldB#(x,y): y + 3x
- foldC(x,y): x
- foldC#(x,y): x
- g(x): 1
- s(x): x + 1
- triple(x,y,z): 2y
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:
foldB#(t, s(n)) | → | foldB#(t, n) | | foldB#(t, s(n)) | → | f#(foldB(t, n), B) |
Problem 3: 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) | → | 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) |
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) |
Original Signature
Termination of terms over the following signature is verified: f', f, g, 0, f'', s, A, B, triple, C, foldC, foldB
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 4: 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) |
Original Signature
Termination of terms over the following signature is verified: f', f, g, 0, f'', s, A, B, triple, C, foldC, foldB
Strategy
Polynomial Interpretation
- 0: 0
- A: 0
- B: 0
- C: 2
- f(x,y): x + 2
- f#(x,y): x
- f'(x,y): x + 2
- f'#(x,y): x
- f''(x): x + 2
- f''#(x): x
- foldB(x,y): y + x
- foldC(x,y): y + x
- foldC#(x,y): y + x
- g(x): x + 1
- s(x): x + 2
- 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)) | → | f#(foldC(t, n), C) | | foldC#(t, s(n)) | → | foldC#(t, n) |
Problem 5: DependencyGraph
Dependency Pair Problem
Dependency Pairs
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) |
Original Signature
Termination of terms over the following signature is verified: f, f', g, 0, s, f'', A, B, C, triple, foldC, foldB
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 6: 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) |
Original Signature
Termination of terms over the following signature is verified: f, f', g, 0, s, f'', A, B, C, triple, foldC, foldB
Strategy
Polynomial Interpretation
- 0: 0
- A: 0
- B: 1
- C: 2
- f(x,y): 0
- f#(x,y): y + 1
- f'(x,y): 0
- f'#(x,y): y
- f''(x): 0
- foldB(x,y): 0
- foldC(x,y): 0
- g(x): x
- s(x): 0
- triple(x,y,z): 2z + 2x + 3
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:
Problem 7: DependencyGraph
Dependency Pair Problem
Dependency Pairs
f'#(triple(a, b, c), B) | → | f#(triple(a, b, c), A) |
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) |
Original Signature
Termination of terms over the following signature is verified: f', f, g, 0, f'', s, A, B, triple, C, foldC, foldB
Strategy
There are no SCCs!