Term Rewriting System R:
[x, l, y]
app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))

Innermost Termination of R to be shown.



   R
Dependency Pair Analysis



R contains the following Dependency Pairs:

APP(rev, app(app(cons, x), l)) -> APP(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
APP(rev, app(app(cons, x), l)) -> APP(cons, app(app(rev1, x), l))
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x), l)) -> APP(rev1, x)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(rev2, x)
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(app(rev1, x), app(app(cons, y), l)) -> APP(rev1, y)
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(cons, x), app(app(rev2, y), l))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(cons, x)
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev2, y)

Furthermore, R contains one SCC.


   R
DPs
       →DP Problem 1
Narrowing Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(cons, x), app(app(rev2, y), l))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x), l)) -> APP(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
five new Dependency Pairs are created:

APP(rev, app(app(cons, 0), nil)) -> APP(app(cons, 0), app(app(rev2, 0), nil))
APP(rev, app(app(cons, app(s, x'')), nil)) -> APP(app(cons, app(s, x'')), app(app(rev2, app(s, x'')), nil))
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(rev2, x''), app(app(cons, y'), l'')))
APP(rev, app(app(cons, x''), nil)) -> APP(app(cons, app(app(rev1, x''), nil)), nil)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, x''), app(app(cons, y'), l''))), app(rev, app(app(cons, x''), app(app(rev2, y'), l''))))

The transformation is resulting in one new DP problem:



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


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, x''), app(app(cons, y'), l''))), app(rev, app(app(cons, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(cons, x), app(app(rev2, y), l))
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(rev2, x''), app(app(cons, y'), l'')))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(rev2, x''), app(app(cons, y'), l'')))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(rev, app(app(cons, x''), app(app(rev2, y'), l''))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 3
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(cons, x), app(app(rev2, y), l))
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(rev, app(app(cons, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, x''), app(app(cons, y'), l''))), app(rev, app(app(cons, x''), app(app(rev2, y'), l''))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, x''), app(app(cons, y'), l''))), app(rev, app(app(cons, x''), app(app(rev2, y'), l''))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(rev, app(app(cons, x''), app(app(rev2, y'), l''))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 4
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(rev, app(app(cons, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(cons, x), app(app(rev2, y), l))
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(rev, app(app(cons, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(rev, app(app(cons, x''), app(app(rev2, y'), l''))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 5
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(cons, x), app(app(rev2, y), l))
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(rev, app(app(cons, x''), app(app(rev2, y'), l''))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(rev, app(app(cons, x''), app(app(rev2, y'), l''))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))

The transformation is resulting in one new DP problem:



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


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(cons, x), app(app(rev2, y), l))
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(cons, x), app(app(rev2, y), l))
two new Dependency Pairs are created:

APP(app(rev2, x), app(app(cons, y'), nil)) -> APP(app(cons, x), nil)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(rev, app(app(cons, y0), app(app(rev2, y''), l''))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 7
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(rev, app(app(cons, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(rev, app(app(cons, y0), app(app(rev2, y''), l''))))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))

The transformation is resulting in one new DP problem:



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


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
seven new Dependency Pairs are created:

APP(rev, app(app(cons, x''), app(app(cons, 0), nil))) -> APP(app(cons, 0), app(app(cons, app(app(rev1, x''), app(app(rev2, 0), nil))), app(app(rev2, x''), app(app(rev2, 0), nil))))
APP(rev, app(app(cons, x''), app(app(cons, app(s, x')), nil))) -> APP(app(cons, app(s, x')), app(app(cons, app(app(rev1, x''), app(app(rev2, app(s, x')), nil))), app(app(rev2, x''), app(app(rev2, app(s, x')), nil))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), app(app(rev2, y''), nil))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), nil))), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 9
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), nil))), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), app(app(rev2, y''), nil))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 10
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), nil))), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), app(app(rev2, y''), nil))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), app(app(rev2, y''), nil))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 11
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), nil))), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 12
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), nil))), app(app(rev2, x''), nil)))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), nil))), app(app(rev2, x''), nil)))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 13
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 14
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 15
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 16
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 17
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 18
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 19
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 20
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 21
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))

The transformation is resulting in one new DP problem:



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


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y'), l''))) -> APP(app(cons, app(app(rev1, y'), l'')), app(app(cons, app(app(rev1, x''), app(app(rev2, y'), l''))), app(app(rev2, x''), app(app(rev2, y'), l''))))
seven new Dependency Pairs are created:

APP(rev, app(app(cons, x''), app(app(cons, 0), nil))) -> APP(app(cons, 0), app(app(cons, app(app(rev1, x''), app(app(rev2, 0), nil))), app(app(rev2, x''), app(app(rev2, 0), nil))))
APP(rev, app(app(cons, x''), app(app(cons, app(s, x')), nil))) -> APP(app(cons, app(s, x')), app(app(cons, app(app(rev1, x''), app(app(rev2, app(s, x')), nil))), app(app(rev2, x''), app(app(rev2, app(s, x')), nil))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), app(app(rev2, y''), nil))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), nil))), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 23
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), nil))), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), app(app(rev2, y''), nil))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 24
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), nil))), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), app(app(rev2, y''), nil))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), app(app(rev2, y''), nil))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 25
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), nil))), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 26
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), nil))), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), nil))), app(app(rev2, x''), nil)))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 27
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y''), app(app(cons, y0), l'))), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 28
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 29
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 30
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 31
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), app(app(rev2, x''), nil)))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 32
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(rev2, y''), app(app(cons, y0), l')))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 33
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 34
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 35
Rewriting Transformation


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
one new Dependency Pair is created:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))

The transformation is resulting in one new DP problem:



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


Dependency Pairs:

APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y''), l''))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y''), l''))), app(app(rev2, y0), app(app(rev2, y''), l''))))
four new Dependency Pairs are created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), app(app(rev2, y'''), nil))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y'''), nil))), app(app(rev2, y0), nil)))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y'''), app(app(cons, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 37
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y'''), app(app(cons, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y'''), nil))), app(app(rev2, y0), nil)))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), app(app(rev2, y'''), nil))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), app(app(rev2, y'''), nil))))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), nil)))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 38
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), nil)))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y'''), nil))), app(app(rev2, y0), nil)))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y'''), app(app(cons, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 39
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y'''), app(app(cons, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y'''), nil))), app(app(rev2, y0), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), nil)))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y'''), nil))), app(app(rev2, y0), nil)))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), nil)))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 40
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), nil)))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), nil)))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y'''), app(app(cons, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(rev2, y'''), app(app(cons, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 41
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), nil)))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), nil)))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 42
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), nil)))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 43
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), nil)))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), app(app(rev2, y0), nil)))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 44
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 45
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(app(rev2, y'''), app(app(cons, y'), l')))))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 46
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 47
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Rw
             ...
               →DP Problem 48
Rewriting Transformation


Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost




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

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(rev, app(app(cons, y'''), app(app(rev2, y'), l'))))))
one new Dependency Pair is created:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))))

The transformation is resulting in one new DP problem:



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




The following remains to be proven:
Dependency Pairs:

APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), nil))) -> APP(app(cons, x), app(app(cons, app(app(rev1, y0), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, x''), app(app(cons, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l'))))), app(app(rev2, x''), app(rev, app(app(cons, y''), app(app(rev2, y0), l'))))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), app(app(cons, y0), l')))) -> APP(app(cons, app(app(rev1, y0), l')), app(app(cons, app(app(rev1, app(app(rev1, y''), app(app(rev2, y0), l'))), app(app(rev2, y''), app(app(rev2, y0), l')))), app(app(rev2, x''), app(app(rev2, y''), app(app(cons, y0), l')))))
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(app(rev2, y), l)
APP(rev, app(app(cons, x''), app(app(cons, y''), nil))) -> APP(app(cons, app(app(rev1, y''), nil)), app(app(cons, app(app(rev1, x''), nil)), nil))
APP(app(rev2, x), app(app(cons, y), l)) -> APP(rev, app(app(cons, x), app(app(rev2, y), l)))
APP(app(rev1, x), app(app(cons, y), l)) -> APP(app(rev1, y), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev2, x), l)
APP(rev, app(app(cons, x), l)) -> APP(app(rev1, x), l)
APP(app(rev2, x), app(app(cons, y0), app(app(cons, y'''), app(app(cons, y'), l')))) -> APP(app(cons, x), app(app(cons, app(app(rev1, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l')))), app(app(rev2, y0), app(app(cons, app(app(rev1, y'''), app(app(rev2, y'), l'))), app(app(rev2, y'''), app(app(rev2, y'), l'))))))


Rules:


app(rev, nil) -> nil
app(rev, app(app(cons, x), l)) -> app(app(cons, app(app(rev1, x), l)), app(app(rev2, x), l))
app(app(rev1, 0), nil) -> 0
app(app(rev1, app(s, x)), nil) -> app(s, x)
app(app(rev1, x), app(app(cons, y), l)) -> app(app(rev1, y), l)
app(app(rev2, x), nil) -> nil
app(app(rev2, x), app(app(cons, y), l)) -> app(rev, app(app(cons, x), app(app(rev2, y), l)))


Strategy:

innermost



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