YES

The TRS could be proven terminating. The proof took 1080 ms.

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (38ms).
 | – Problem 2 was processed with processor PolynomialLinearRange4iUR (841ms).
 |    | – Problem 3 was processed with processor DependencyGraph (13ms).
 |    |    | – Problem 4 was processed with processor PolynomialLinearRange4iUR (67ms).
 |    |    |    | – Problem 5 was processed with processor DependencyGraph (4ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

foldf#(x, cons(y, z)) → foldf#(x, z)f'#(triple(a, b, c), A) → foldf#(triple(cons(A, a), nil, c), b)
f#(t, x) → f'#(t, g(x))f'#(triple(a, b, c), B) → f#(triple(a, b, c), A)
f''#(triple(a, b, c)) → foldf#(triple(a, b, nil), c)f#(t, x) → g#(x)
f'#(triple(a, b, c), A) → f''#(foldf(triple(cons(A, a), nil, c), b))foldf#(x, cons(y, z)) → f#(foldf(x, z), y)

Rewrite Rules

g(A) → Ag(B) → A
g(B) → Bg(C) → A
g(C) → Bg(C) → C
foldf(x, nil) → xfoldf(x, cons(y, z)) → f(foldf(x, z), y)
f(t, x) → f'(t, g(x))f'(triple(a, b, c), C) → triple(a, b, cons(C, c))
f'(triple(a, b, c), B) → f(triple(a, b, c), A)f'(triple(a, b, c), A) → f''(foldf(triple(cons(A, a), nil, c), b))
f''(triple(a, b, c)) → foldf(triple(a, b, nil), c)

Original Signature

Termination of terms over the following signature is verified: foldf, f, f', g, f'', A, B, C, triple, nil, cons

Strategy


The following SCCs where found

foldf#(x, cons(y, z)) → foldf#(x, z)f'#(triple(a, b, c), A) → foldf#(triple(cons(A, a), nil, c), b)
f#(t, x) → f'#(t, g(x))f'#(triple(a, b, c), B) → f#(triple(a, b, c), A)
f''#(triple(a, b, c)) → foldf#(triple(a, b, nil), c)f'#(triple(a, b, c), A) → f''#(foldf(triple(cons(A, a), nil, c), b))
foldf#(x, cons(y, z)) → f#(foldf(x, z), y)

Problem 2: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

foldf#(x, cons(y, z)) → foldf#(x, z)f'#(triple(a, b, c), A) → foldf#(triple(cons(A, a), nil, c), b)
f#(t, x) → f'#(t, g(x))f'#(triple(a, b, c), B) → f#(triple(a, b, c), A)
f''#(triple(a, b, c)) → foldf#(triple(a, b, nil), c)f'#(triple(a, b, c), A) → f''#(foldf(triple(cons(A, a), nil, c), b))
foldf#(x, cons(y, z)) → f#(foldf(x, z), y)

Rewrite Rules

g(A) → Ag(B) → A
g(B) → Bg(C) → A
g(C) → Bg(C) → C
foldf(x, nil) → xfoldf(x, cons(y, z)) → f(foldf(x, z), y)
f(t, x) → f'(t, g(x))f'(triple(a, b, c), C) → triple(a, b, cons(C, c))
f'(triple(a, b, c), B) → f(triple(a, b, c), A)f'(triple(a, b, c), A) → f''(foldf(triple(cons(A, a), nil, c), b))
f''(triple(a, b, c)) → foldf(triple(a, b, nil), c)

Original Signature

Termination of terms over the following signature is verified: foldf, f, f', g, f'', A, B, C, triple, nil, cons

Strategy


Polynomial Interpretation

Improved Usable rules

f'(triple(a, b, c), A) → f''(foldf(triple(cons(A, a), nil, c), b))f''(triple(a, b, c)) → foldf(triple(a, b, nil), c)
f'(triple(a, b, c), B) → f(triple(a, b, c), A)f'(triple(a, b, c), C) → triple(a, b, cons(C, c))
foldf(x, nil) → xfoldf(x, cons(y, z)) → f(foldf(x, z), y)
f(t, x) → f'(t, g(x))

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

foldf#(x, cons(y, z)) → foldf#(x, z)foldf#(x, cons(y, z)) → f#(foldf(x, z), y)

Problem 3: DependencyGraph



Dependency Pair Problem

Dependency Pairs

f'#(triple(a, b, c), A) → foldf#(triple(cons(A, a), nil, c), b)f'#(triple(a, b, c), B) → f#(triple(a, b, c), A)
f#(t, x) → f'#(t, g(x))f''#(triple(a, b, c)) → foldf#(triple(a, b, nil), c)
f'#(triple(a, b, c), A) → f''#(foldf(triple(cons(A, a), nil, c), b))

Rewrite Rules

g(A) → Ag(B) → A
g(B) → Bg(C) → A
g(C) → Bg(C) → C
foldf(x, nil) → xfoldf(x, cons(y, z)) → f(foldf(x, z), y)
f(t, x) → f'(t, g(x))f'(triple(a, b, c), C) → triple(a, b, cons(C, c))
f'(triple(a, b, c), B) → f(triple(a, b, c), A)f'(triple(a, b, c), A) → f''(foldf(triple(cons(A, a), nil, c), b))
f''(triple(a, b, c)) → foldf(triple(a, b, nil), c)

Original Signature

Termination of terms over the following signature is verified: f', f, foldf, g, f'', A, B, triple, C, cons, nil

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 4: 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
foldf(x, nil) → xfoldf(x, cons(y, z)) → f(foldf(x, z), y)
f(t, x) → f'(t, g(x))f'(triple(a, b, c), C) → triple(a, b, cons(C, c))
f'(triple(a, b, c), B) → f(triple(a, b, c), A)f'(triple(a, b, c), A) → f''(foldf(triple(cons(A, a), nil, c), b))
f''(triple(a, b, c)) → foldf(triple(a, b, nil), c)

Original Signature

Termination of terms over the following signature is verified: f', f, foldf, g, f'', A, B, triple, C, cons, nil

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 5: 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
foldf(x, nil) → xfoldf(x, cons(y, z)) → f(foldf(x, z), y)
f(t, x) → f'(t, g(x))f'(triple(a, b, c), C) → triple(a, b, cons(C, c))
f'(triple(a, b, c), B) → f(triple(a, b, c), A)f'(triple(a, b, c), A) → f''(foldf(triple(cons(A, a), nil, c), b))
f''(triple(a, b, c)) → foldf(triple(a, b, nil), c)

Original Signature

Termination of terms over the following signature is verified: foldf, f, f', g, f'', A, B, C, triple, nil, cons

Strategy


There are no SCCs!