Term Rewriting System R:
[t, n, x, a, b, c]
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)

Termination of R to be shown.



   R
Dependency Pair Analysis



R contains the following Dependency Pairs:

FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, x) -> F'(t, g(x))
F(t, x) -> 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))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)

Furthermore, R contains one SCC.


   R
DPs
       →DP Problem 1
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
FOLDC(t, s(n)) -> FOLDC(t, n)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a, b, c), A) -> F''(foldB(triple(s(a), 0, c), b))
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, x) -> F'(t, g(x))
FOLDB(t, s(n)) -> F(foldB(t, n), B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F(t, x) -> F'(t, g(x))
six new Dependency Pairs are created:

F(t, A) -> F'(t, A)
F(t, B) -> F'(t, A)
F(t, B) -> F'(t, B)
F(t, C) -> F'(t, A)
F(t, C) -> F'(t, B)
F(t, C) -> F'(t, C)

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, A) -> F'(t, A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a, b, c), A) -> F''(foldB(triple(s(a), 0, c), b))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a, b, c), A) -> F''(foldB(triple(s(a), 0, c), b))
two new Dependency Pairs are created:

F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a', s(n'), c'), A) -> F''(f(foldB(triple(s(a'), 0, c'), n'), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 3
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a', s(n'), c'), A) -> F''(f(foldB(triple(s(a'), 0, c'), n'), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, A) -> F'(t, A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a', s(n'), c'), A) -> F''(f(foldB(triple(s(a'), 0, c'), n'), B))
three new Dependency Pairs are created:

F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), g(B)))
F'(triple(a'', s(0), c''), A) -> F''(f(triple(s(a''), 0, c''), B))
F'(triple(a'', s(s(n'')), c''), A) -> F''(f(f(foldB(triple(s(a''), 0, c''), n''), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 4
Instantiation Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, A) -> F'(t, A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'', s(s(n'')), c''), A) -> F''(f(f(foldB(triple(s(a''), 0, c''), n''), B), B))
F'(triple(a'', s(0), c''), A) -> F''(f(triple(s(a''), 0, c''), B))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, an Instantiation SCC transformation can be performed.
As a result of transforming the rule

F(t, A) -> F'(t, A)
one new Dependency Pair is created:

F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 5
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'', s(s(n'')), c''), A) -> F''(f(f(foldB(triple(s(a''), 0, c''), n''), B), B))
F'(triple(a'', s(0), c''), A) -> F''(f(triple(s(a''), 0, c''), B))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), g(B)))
four new Dependency Pairs are created:

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), g(B)))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), A))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 6
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), B))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))
F'(triple(a'', s(s(n'')), c''), A) -> F''(f(f(foldB(triple(s(a''), 0, c''), n''), B), B))
F'(triple(a'', s(0), c''), A) -> F''(f(triple(s(a''), 0, c''), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'', s(0), c''), A) -> F''(f(triple(s(a''), 0, c''), B))
one new Dependency Pair is created:

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 7
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), B))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))
F'(triple(a'', s(s(n'')), c''), A) -> F''(f(f(foldB(triple(s(a''), 0, c''), n''), B), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'', s(s(n'')), c''), A) -> F''(f(f(foldB(triple(s(a''), 0, c''), n''), B), B))
four new Dependency Pairs are created:

F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), g(B)), B))
F'(triple(a''', s(s(0)), c'''), A) -> F''(f(f(triple(s(a'''), 0, c'''), B), B))
F'(triple(a''', s(s(s(n'))), c'''), A) -> F''(f(f(f(foldB(triple(s(a'''), 0, c'''), n'), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 8
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a''', s(s(s(n'))), c'''), A) -> F''(f(f(f(foldB(triple(s(a'''), 0, c'''), n'), B), B), B))
F'(triple(a''', s(s(0)), c'''), A) -> F''(f(f(triple(s(a'''), 0, c'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), g(B)), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), B))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))
two new Dependency Pairs are created:

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 9
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(s(n'))), c'''), A) -> F''(f(f(f(foldB(triple(s(a'''), 0, c'''), n'), B), B), B))
F'(triple(a''', s(s(0)), c'''), A) -> F''(f(f(triple(s(a'''), 0, c'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), g(B)), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), B))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), g(B)))
five new Dependency Pairs are created:

F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 10
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(s(n'))), c'''), A) -> F''(f(f(f(foldB(triple(s(a'''), 0, c'''), n'), B), B), B))
F'(triple(a''', s(s(0)), c'''), A) -> F''(f(f(triple(s(a'''), 0, c'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), g(B)), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), B))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), A))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), A))
two new Dependency Pairs are created:

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 11
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(s(n'))), c'''), A) -> F''(f(f(f(foldB(triple(s(a'''), 0, c'''), n'), B), B), B))
F'(triple(a''', s(s(0)), c'''), A) -> F''(f(f(triple(s(a'''), 0, c'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), g(B)), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))
F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'', s(n''), c''), A) -> F''(f'(foldB(triple(s(a''), 0, c''), n''), B))
two new Dependency Pairs are created:

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 12
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(s(n'))), c'''), A) -> F''(f(f(f(foldB(triple(s(a'''), 0, c'''), n'), B), B), B))
F'(triple(a''', s(s(0)), c'''), A) -> F''(f(f(triple(s(a'''), 0, c'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), g(B)), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), g(B)))
two new Dependency Pairs are created:

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 13
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(s(n'))), c'''), A) -> F''(f(f(f(foldB(triple(s(a'''), 0, c'''), n'), B), B), B))
F'(triple(a''', s(s(0)), c'''), A) -> F''(f(f(triple(s(a'''), 0, c'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), g(B)), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), g(B)))
five new Dependency Pairs are created:

F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 14
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(s(n'))), c'''), A) -> F''(f(f(f(foldB(triple(s(a'''), 0, c'''), n'), B), B), B))
F'(triple(a''', s(s(0)), c'''), A) -> F''(f(f(triple(s(a'''), 0, c'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), g(B)), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), g(B)), B))
five new Dependency Pairs are created:

F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 15
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(s(n'))), c'''), A) -> F''(f(f(f(foldB(triple(s(a'''), 0, c'''), n'), B), B), B))
F'(triple(a''', s(s(0)), c'''), A) -> F''(f(f(triple(s(a'''), 0, c'''), B), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(0)), c'''), A) -> F''(f(f(triple(s(a'''), 0, c'''), B), B))
two new Dependency Pairs are created:

F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 16
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(s(n'))), c'''), A) -> F''(f(f(f(foldB(triple(s(a'''), 0, c'''), n'), B), B), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(s(n'))), c'''), A) -> F''(f(f(f(foldB(triple(s(a'''), 0, c'''), n'), B), B), B))
five new Dependency Pairs are created:

F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 17
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
one new Dependency Pair is created:

F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 18
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
one new Dependency Pair is created:

F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 19
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), g(B)))
six new Dependency Pairs are created:

F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 20
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
three new Dependency Pairs are created:

F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 21
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
six new Dependency Pairs are created:

F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 22
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
three new Dependency Pairs are created:

F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 23
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
three new Dependency Pairs are created:

F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 24
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
one new Dependency Pair is created:

F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 25
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), A))
three new Dependency Pairs are created:

F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 26
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
one new Dependency Pair is created:

F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 27
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(n')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'), B), B))
three new Dependency Pairs are created:

F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 28
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), A))
one new Dependency Pair is created:

F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 29
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(0), c'''), A) -> F''(f'(triple(s(a'''), 0, c'''), B))
one new Dependency Pair is created:

F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 30
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
six new Dependency Pairs are created:

F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 31
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
three new Dependency Pairs are created:

F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 32
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), g(B)))
six new Dependency Pairs are created:

F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 33
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), A))
three new Dependency Pairs are created:

F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 34
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(n''')), c'''), A) -> F''(f'(f(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
three new Dependency Pairs are created:

F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 35
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), g(B)))
six new Dependency Pairs are created:

F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 36
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
three new Dependency Pairs are created:

F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 37
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), g(B)), B))
six new Dependency Pairs are created:

F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 38
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), A), B))
three new Dependency Pairs are created:

F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 39
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a''', s(s(n''')), c'''), A) -> F''(f(f'(foldB(triple(s(a'''), 0, c'''), n'''), B), B))
three new Dependency Pairs are created:

F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 40
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), g(B)))
three new Dependency Pairs are created:

F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 41
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), g(B)), B))
three new Dependency Pairs are created:

F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 42
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), g(B)))
six new Dependency Pairs are created:

F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 43
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)), B))
six new Dependency Pairs are created:

F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), A), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 44
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), A), B))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B), B))
six new Dependency Pairs are created:

F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f(f'(triple(s(a'''''), 0, c'''''), g(B)), B), B))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f(f(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), A), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 45
Narrowing Transformation


Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), A), B), B))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f(f(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), B), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f(f'(triple(s(a'''''), 0, c'''''), g(B)), B), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), A), B))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(s(0))), c''''), A) -> F''(f(f(f(triple(s(a''''), 0, c''''), B), B), B))
three new Dependency Pairs are created:

F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f(f'(triple(s(a'''''), 0, c'''''), g(B)), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 46
Narrowing Transformation


Dependency Pairs:

F(t, B) -> F'(t, B)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, C) -> F'(t, B)
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f(f'(triple(s(a'''''), 0, c'''''), g(B)), B), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), A), B), B))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f(f(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), B), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f(f'(triple(s(a'''''), 0, c'''''), g(B)), B), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), A), B))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
FOLDB(t, s(n)) -> FOLDB(t, n)


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)





On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

F'(triple(a'''', s(s(s(s(n'')))), c''''), A) -> F''(f(f(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B), B))
six new Dependency Pairs are created:

F'(triple(a''''', s(s(s(s(n''')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(s(n''')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), B), g(B)), B))
F'(triple(a''''', s(s(s(s(n''')))), c'''''), A) -> F''(f(f(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), B), B))
F'(triple(a''''', s(s(s(s(n''')))), c'''''), A) -> F''(f(f(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), B), B))
F'(triple(a''''', s(s(s(s(0)))), c'''''), A) -> F''(f(f(f(f(triple(s(a'''''), 0, c'''''), B), B), B), B))
F'(triple(a''''', s(s(s(s(s(n'))))), c'''''), A) -> F''(f(f(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), B), B))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 47
Remaining Obligation(s)




The following remains to be proven:
Dependency Pairs:

FOLDB(t, s(n)) -> FOLDB(t, n)
FOLDC(t, s(n)) -> FOLDC(t, n)
F(t, C) -> F'(t, B)
F'(triple(a''''', s(s(s(s(s(n'))))), c'''''), A) -> F''(f(f(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), B), B))
F'(triple(a''''', s(s(s(s(0)))), c'''''), A) -> F''(f(f(f(f(triple(s(a'''''), 0, c'''''), B), B), B), B))
F'(triple(a''''', s(s(s(s(n''')))), c'''''), A) -> F''(f(f(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), B), B))
F'(triple(a''''', s(s(s(s(n''')))), c'''''), A) -> F''(f(f(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), B), B))
F'(triple(a''''', s(s(s(s(n''')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), B), g(B)), B))
F'(triple(a''''', s(s(s(s(n''')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f(f'(triple(s(a'''''), 0, c'''''), g(B)), B), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f(f'(foldB(triple(s(a''''), 0, c''''), n''), A), B), B))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f(f(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), B), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f(f'(triple(s(a'''''), 0, c'''''), g(B)), B), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n''), B), A), B))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f(f'(f(foldB(triple(s(a''''), 0, c''''), n'), B), A), B))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f(f'(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), g(B)), B))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f(f'(f(triple(s(a'''''), 0, c'''''), B), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f(f'(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), g(B)), B))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f(f'(triple(s(a''''), 0, c''''), A), B))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), B))
F'(triple(a'''', s(s(s(n'))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n'), B), B), A))
F'(triple(a''''', s(s(s(s(n'')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), B))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), g(B)), A))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), B), g(B)))
F'(triple(a'''', s(s(n'''')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), B))
F'(triple(a'''', s(s(s(n''))), c''''), A) -> F''(f'(f(f(foldB(triple(s(a''''), 0, c''''), n''), B), B), A))
F'(triple(a''''', s(s(s(s(n')))), c'''''), A) -> F''(f'(f(f(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), B), B), g(B)))
F'(triple(a''''', s(s(s(0))), c'''''), A) -> F''(f'(f(f(triple(s(a'''''), 0, c'''''), B), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f(f'(foldB(triple(s(a'''''), 0, c'''''), n'''), g(B)), B), g(B)))
F'(triple(a''''', s(s(s(n'''))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'''), B), g(B)), g(B)))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), B))
F'(triple(a'''', s(s(0)), c''''), A) -> F''(f'(f(triple(s(a''''), 0, c''''), B), A))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), B))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), g(B)), A))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), B), g(B)))
F'(triple(a'''', s(s(n'')), c''''), A) -> F''(f'(f'(foldB(triple(s(a''''), 0, c''''), n''), A), g(B)))
F'(triple(a''''', s(s(s(n'))), c'''''), A) -> F''(f'(f'(f(foldB(triple(s(a'''''), 0, c'''''), n'), B), g(B)), g(B)))
F'(triple(a''''', s(s(0)), c'''''), A) -> F''(f'(f'(triple(s(a'''''), 0, c'''''), g(B)), g(B)))
F'(triple(a'''', s(0), c''''), A) -> F''(f(triple(s(a''''), 0, c''''), A))
F'(triple(a'''', s(0), c''''), A) -> F''(f''(foldB(triple(s(s(a'''')), 0, c''''), 0)))
F(t, C) -> F'(t, A)
FOLDC(t, s(n)) -> F(foldC(t, n), C)
F''(triple(a, b, c)) -> FOLDC(triple(a, b, 0), c)
F'(triple(a', 0, c'), A) -> F''(triple(s(a'), 0, c'))
F(t, B) -> F'(t, A)
FOLDB(t, s(n)) -> F(foldB(t, n), B)
F'(triple(a, b, c), A) -> FOLDB(triple(s(a), 0, c), b)
F(triple(a'', b'', c''), A) -> F'(triple(a'', b'', c''), A)
F'(triple(a, b, c), B) -> F(triple(a, b, c), A)
F(t, B) -> F'(t, B)


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)




Termination of R could not be shown.
Duration:
0:45 minutes