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) → Ag(B) → A
g(B) → Bg(C) → A
g(C) → Bg(C) → C
foldB(t, 0) → tfoldB(t, s(n)) → f(foldB(t, n), B)
foldC(t, 0) → tfoldC(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) → Ag(B) → A
g(B) → Bg(C) → A
g(C) → Bg(C) → C
foldB(t, 0) → tfoldB(t, s(n)) → f(foldB(t, n), B)
foldC(t, 0) → tfoldC(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

Improved Usable rules

foldB(t, 0) → tfoldB(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) → tf(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) → Ag(B) → A
g(B) → Bg(C) → A
g(C) → Bg(C) → C
foldB(t, 0) → tfoldB(t, s(n)) → f(foldB(t, n), B)
foldC(t, 0) → tfoldC(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) → Ag(B) → A
g(B) → Bg(C) → A
g(C) → Bg(C) → C
foldB(t, 0) → tfoldB(t, s(n)) → f(foldB(t, n), B)
foldC(t, 0) → tfoldC(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

Improved Usable rules

foldB(t, 0) → tfoldB(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) → tf(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) → Ag(B) → A
g(B) → Bg(C) → A
g(C) → Bg(C) → C
foldB(t, 0) → tfoldB(t, s(n)) → f(foldB(t, n), B)
foldC(t, 0) → tfoldC(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) → Ag(B) → A
g(B) → Bg(C) → A
g(C) → Bg(C) → C
foldB(t, 0) → tfoldB(t, s(n)) → f(foldB(t, n), B)
foldC(t, 0) → tfoldC(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

Improved Usable rules

g(C) → Cg(A) → A
g(B) → Bg(C) → B
g(C) → Ag(B) → A

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

f#(t, x) → f'#(t, g(x))

Problem 7: DependencyGraph



Dependency Pair Problem

Dependency Pairs

f'#(triple(a, b, c), B) → f#(triple(a, b, c), A)

Rewrite Rules

g(A) → Ag(B) → A
g(B) → Bg(C) → A
g(C) → Bg(C) → C
foldB(t, 0) → tfoldB(t, s(n)) → f(foldB(t, n), B)
foldC(t, 0) → tfoldC(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!