Term Rewriting System R:
[f, h, t, c]
app(app(map1, f), app(app(cons, h), t)) -> app(app(cons, app(f, h)), app(app(map1, f), t))
app(app(app(map2, f), c), app(app(cons, h), t)) -> app(app(cons, app(app(f, h), c)), app(app(app(map2, f), c), t))
app(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> app(app(cons, app(app(app(f, g), h), c)), app(app(app(app(map3, f), g), c), t))

Innermost Termination of R to be shown.



   R
Dependency Pair Analysis



R contains the following Dependency Pairs:

APP(app(map1, f), app(app(cons, h), t)) -> APP(app(cons, app(f, h)), app(app(map1, f), t))
APP(app(map1, f), app(app(cons, h), t)) -> APP(cons, app(f, h))
APP(app(map1, f), app(app(cons, h), t)) -> APP(f, h)
APP(app(map1, f), app(app(cons, h), t)) -> APP(app(map1, f), t)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(cons, app(app(f, h), c)), app(app(app(map2, f), c), t))
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(cons, app(app(f, h), c))
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(f, h), c)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(f, h)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(app(map2, f), c), t)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(cons, app(app(app(f, g), h), c)), app(app(app(app(map3, f), g), c), t))
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(cons, app(app(app(f, g), h), c))
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(app(f, g), h), c)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(f, g), h)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(f, g)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(app(app(map3, f), g), c), t)

Furthermore, R contains one SCC.


   R
DPs
       →DP Problem 1
Narrowing Transformation


Dependency Pairs:

APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(app(app(map3, f), g), c), t)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(f, g), h)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(app(f, g), h), c)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(cons, app(app(app(f, g), h), c)), app(app(app(app(map3, f), g), c), t))
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(app(map2, f), c), t)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(f, h)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(f, h), c)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(cons, app(app(f, h), c)), app(app(app(map2, f), c), t))
APP(app(map1, f), app(app(cons, h), t)) -> APP(app(map1, f), t)
APP(app(map1, f), app(app(cons, h), t)) -> APP(f, h)
APP(app(map1, f), app(app(cons, h), t)) -> APP(app(cons, app(f, h)), app(app(map1, f), t))


Rules:


app(app(map1, f), app(app(cons, h), t)) -> app(app(cons, app(f, h)), app(app(map1, f), t))
app(app(app(map2, f), c), app(app(cons, h), t)) -> app(app(cons, app(app(f, h), c)), app(app(app(map2, f), c), t))
app(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> app(app(cons, app(app(app(f, g), h), c)), app(app(app(app(map3, f), g), c), t))


Strategy:

innermost




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

APP(app(map1, f), app(app(cons, h), t)) -> APP(app(cons, app(f, h)), app(app(map1, f), t))
four new Dependency Pairs are created:

APP(app(map1, app(map1, f'')), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(cons, app(f'', h'')), app(app(map1, f''), t''))), app(app(map1, app(map1, f'')), t))
APP(app(map1, app(app(map2, f''), c')), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(cons, app(app(f'', h''), c')), app(app(app(map2, f''), c'), t''))), app(app(map1, app(app(map2, f''), c')), t))
APP(app(map1, app(app(app(map3, f''), g), c')), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(cons, app(app(app(f'', g), h''), c')), app(app(app(app(map3, f''), g), c'), t''))), app(app(map1, app(app(app(map3, f''), g), c')), t))
APP(app(map1, f''), app(app(cons, h), app(app(cons, h''), t''))) -> APP(app(cons, app(f'', h)), app(app(cons, app(f'', h'')), app(app(map1, f''), t'')))

The transformation is resulting in one new DP problem:



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


Dependency Pairs:

APP(app(map1, f''), app(app(cons, h), app(app(cons, h''), t''))) -> APP(app(cons, app(f'', h)), app(app(cons, app(f'', h'')), app(app(map1, f''), t'')))
APP(app(map1, app(app(app(map3, f''), g), c')), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(cons, app(app(app(f'', g), h''), c')), app(app(app(app(map3, f''), g), c'), t''))), app(app(map1, app(app(app(map3, f''), g), c')), t))
APP(app(map1, app(app(map2, f''), c')), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(cons, app(app(f'', h''), c')), app(app(app(map2, f''), c'), t''))), app(app(map1, app(app(map2, f''), c')), t))
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(f, g), h)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(app(f, g), h), c)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(app(map2, f), c), t)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(f, h)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(f, h), c)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(cons, app(app(f, h), c)), app(app(app(map2, f), c), t))
APP(app(map1, app(map1, f'')), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(cons, app(f'', h'')), app(app(map1, f''), t''))), app(app(map1, app(map1, f'')), t))
APP(app(map1, f), app(app(cons, h), t)) -> APP(app(map1, f), t)
APP(app(map1, f), app(app(cons, h), t)) -> APP(f, h)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(cons, app(app(app(f, g), h), c)), app(app(app(app(map3, f), g), c), t))
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(app(app(map3, f), g), c), t)


Rules:


app(app(map1, f), app(app(cons, h), t)) -> app(app(cons, app(f, h)), app(app(map1, f), t))
app(app(app(map2, f), c), app(app(cons, h), t)) -> app(app(cons, app(app(f, h), c)), app(app(app(map2, f), c), t))
app(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> app(app(cons, app(app(app(f, g), h), c)), app(app(app(app(map3, f), g), c), t))


Strategy:

innermost




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

APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(cons, app(app(f, h), c)), app(app(app(map2, f), c), t))
seven new Dependency Pairs are created:

APP(app(app(map2, map1), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(h'', h''')), app(app(map1, h''), t''))), app(app(app(map2, map1), app(app(cons, h'''), t'')), t))
APP(app(app(map2, app(map2, f'')), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(app(f'', h'''), h'')), app(app(app(map2, f''), h''), t''))), app(app(app(map2, app(map2, f'')), app(app(cons, h'''), t'')), t))
APP(app(app(map2, app(app(map3, f''), g)), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(app(app(f'', g), h'''), h'')), app(app(app(app(map3, f''), g), h''), t''))), app(app(app(map2, app(app(map3, f''), g)), app(app(cons, h'''), t'')), t))
APP(app(app(map2, app(map1, f'')), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(f'', h'')), app(app(map1, f''), t'')), c)), app(app(app(map2, app(map1, f'')), c), t))
APP(app(app(map2, app(app(map2, f''), c'')), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(app(f'', h''), c'')), app(app(app(map2, f''), c''), t'')), c)), app(app(app(map2, app(app(map2, f''), c'')), c), t))
APP(app(app(map2, app(app(app(map3, f''), g), c'')), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(app(app(f'', g), h''), c'')), app(app(app(app(map3, f''), g), c''), t'')), c)), app(app(app(map2, app(app(app(map3, f''), g), c'')), c), t))
APP(app(app(map2, f''), c''), app(app(cons, h), app(app(cons, h''), t''))) -> APP(app(cons, app(app(f'', h), c'')), app(app(cons, app(app(f'', h''), c'')), app(app(app(map2, f''), c''), t'')))

The transformation is resulting in one new DP problem:



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


Dependency Pairs:

APP(app(app(map2, f''), c''), app(app(cons, h), app(app(cons, h''), t''))) -> APP(app(cons, app(app(f'', h), c'')), app(app(cons, app(app(f'', h''), c'')), app(app(app(map2, f''), c''), t'')))
APP(app(app(map2, app(app(app(map3, f''), g), c'')), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(app(app(f'', g), h''), c'')), app(app(app(app(map3, f''), g), c''), t'')), c)), app(app(app(map2, app(app(app(map3, f''), g), c'')), c), t))
APP(app(app(map2, app(app(map2, f''), c'')), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(app(f'', h''), c'')), app(app(app(map2, f''), c''), t'')), c)), app(app(app(map2, app(app(map2, f''), c'')), c), t))
APP(app(app(map2, app(map1, f'')), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(f'', h'')), app(app(map1, f''), t'')), c)), app(app(app(map2, app(map1, f'')), c), t))
APP(app(app(map2, app(app(map3, f''), g)), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(app(app(f'', g), h'''), h'')), app(app(app(app(map3, f''), g), h''), t''))), app(app(app(map2, app(app(map3, f''), g)), app(app(cons, h'''), t'')), t))
APP(app(app(map2, app(map2, f'')), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(app(f'', h'''), h'')), app(app(app(map2, f''), h''), t''))), app(app(app(map2, app(map2, f'')), app(app(cons, h'''), t'')), t))
APP(app(map1, app(app(app(map3, f''), g), c')), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(cons, app(app(app(f'', g), h''), c')), app(app(app(app(map3, f''), g), c'), t''))), app(app(map1, app(app(app(map3, f''), g), c')), t))
APP(app(map1, app(app(map2, f''), c')), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(cons, app(app(f'', h''), c')), app(app(app(map2, f''), c'), t''))), app(app(map1, app(app(map2, f''), c')), t))
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(app(app(map3, f), g), c), t)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(f, g), h)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(app(f, g), h), c)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(cons, app(app(app(f, g), h), c)), app(app(app(app(map3, f), g), c), t))
APP(app(app(map2, map1), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(h'', h''')), app(app(map1, h''), t''))), app(app(app(map2, map1), app(app(cons, h'''), t'')), t))
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(app(map2, f), c), t)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(f, h)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(f, h), c)
APP(app(map1, app(map1, f'')), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(cons, app(f'', h'')), app(app(map1, f''), t''))), app(app(map1, app(map1, f'')), t))
APP(app(map1, f), app(app(cons, h), t)) -> APP(app(map1, f), t)
APP(app(map1, f), app(app(cons, h), t)) -> APP(f, h)
APP(app(map1, f''), app(app(cons, h), app(app(cons, h''), t''))) -> APP(app(cons, app(f'', h)), app(app(cons, app(f'', h'')), app(app(map1, f''), t'')))


Rules:


app(app(map1, f), app(app(cons, h), t)) -> app(app(cons, app(f, h)), app(app(map1, f), t))
app(app(app(map2, f), c), app(app(cons, h), t)) -> app(app(cons, app(app(f, h), c)), app(app(app(map2, f), c), t))
app(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> app(app(cons, app(app(app(f, g), h), c)), app(app(app(app(map3, f), g), c), t))


Strategy:

innermost




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

APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(cons, app(app(app(f, g), h), c)), app(app(app(app(map3, f), g), c), t))
six new Dependency Pairs are created:

APP(app(app(app(map3, map2), g), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(app(g, h'''), h'')), app(app(app(map2, g), h''), t''))), app(app(app(app(map3, map2), g), app(app(cons, h'''), t'')), t))
APP(app(app(app(map3, app(map3, f'')), g), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(app(app(f'', g), h'''), h'')), app(app(app(app(map3, f''), g), h''), t''))), app(app(app(app(map3, app(map3, f'')), g), app(app(cons, h'''), t'')), t))
APP(app(app(app(map3, map1), g), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(g, h'')), app(app(map1, g), t'')), c)), app(app(app(app(map3, map1), g), c), t))
APP(app(app(app(map3, app(map2, f'')), g), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(app(f'', h''), g)), app(app(app(map2, f''), g), t'')), c)), app(app(app(app(map3, app(map2, f'')), g), c), t))
APP(app(app(app(map3, app(app(map3, f''), g)), g), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(app(app(f'', g), h''), g)), app(app(app(app(map3, f''), g), g), t'')), c)), app(app(app(app(map3, app(app(map3, f''), g)), g), c), t))
APP(app(app(app(map3, f''), g), c''), app(app(cons, h), app(app(cons, h''), t''))) -> APP(app(cons, app(app(app(f'', g), h), c'')), app(app(cons, app(app(app(f'', g), h''), c'')), app(app(app(app(map3, f''), g), c''), t'')))

The transformation is resulting in one new DP problem:



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




The following remains to be proven:
Dependency Pairs:

APP(app(app(app(map3, f''), g), c''), app(app(cons, h), app(app(cons, h''), t''))) -> APP(app(cons, app(app(app(f'', g), h), c'')), app(app(cons, app(app(app(f'', g), h''), c'')), app(app(app(app(map3, f''), g), c''), t'')))
APP(app(app(app(map3, app(app(map3, f''), g)), g), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(app(app(f'', g), h''), g)), app(app(app(app(map3, f''), g), g), t'')), c)), app(app(app(app(map3, app(app(map3, f''), g)), g), c), t))
APP(app(app(app(map3, app(map2, f'')), g), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(app(f'', h''), g)), app(app(app(map2, f''), g), t'')), c)), app(app(app(app(map3, app(map2, f'')), g), c), t))
APP(app(app(app(map3, map1), g), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(g, h'')), app(app(map1, g), t'')), c)), app(app(app(app(map3, map1), g), c), t))
APP(app(app(app(map3, app(map3, f'')), g), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(app(app(f'', g), h'''), h'')), app(app(app(app(map3, f''), g), h''), t''))), app(app(app(app(map3, app(map3, f'')), g), app(app(cons, h'''), t'')), t))
APP(app(app(map2, app(app(app(map3, f''), g), c'')), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(app(app(f'', g), h''), c'')), app(app(app(app(map3, f''), g), c''), t'')), c)), app(app(app(map2, app(app(app(map3, f''), g), c'')), c), t))
APP(app(app(map2, app(app(map2, f''), c'')), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(app(f'', h''), c'')), app(app(app(map2, f''), c''), t'')), c)), app(app(app(map2, app(app(map2, f''), c'')), c), t))
APP(app(app(map2, app(map1, f'')), c), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(app(cons, app(f'', h'')), app(app(map1, f''), t'')), c)), app(app(app(map2, app(map1, f'')), c), t))
APP(app(app(map2, app(app(map3, f''), g)), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(app(app(f'', g), h'''), h'')), app(app(app(app(map3, f''), g), h''), t''))), app(app(app(map2, app(app(map3, f''), g)), app(app(cons, h'''), t'')), t))
APP(app(app(map2, app(map2, f'')), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(app(f'', h'''), h'')), app(app(app(map2, f''), h''), t''))), app(app(app(map2, app(map2, f'')), app(app(cons, h'''), t'')), t))
APP(app(map1, f''), app(app(cons, h), app(app(cons, h''), t''))) -> APP(app(cons, app(f'', h)), app(app(cons, app(f'', h'')), app(app(map1, f''), t'')))
APP(app(map1, app(app(app(map3, f''), g), c')), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(cons, app(app(app(f'', g), h''), c')), app(app(app(app(map3, f''), g), c'), t''))), app(app(map1, app(app(app(map3, f''), g), c')), t))
APP(app(map1, app(app(map2, f''), c')), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(cons, app(app(f'', h''), c')), app(app(app(map2, f''), c'), t''))), app(app(map1, app(app(map2, f''), c')), t))
APP(app(app(app(map3, map2), g), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(app(g, h'''), h'')), app(app(app(map2, g), h''), t''))), app(app(app(app(map3, map2), g), app(app(cons, h'''), t'')), t))
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(app(app(map3, f), g), c), t)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(f, g), h)
APP(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> APP(app(app(f, g), h), c)
APP(app(app(map2, map1), app(app(cons, h'''), t'')), app(app(cons, h''), t)) -> APP(app(cons, app(app(cons, app(h'', h''')), app(app(map1, h''), t''))), app(app(app(map2, map1), app(app(cons, h'''), t'')), t))
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(app(map2, f), c), t)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(f, h)
APP(app(app(map2, f), c), app(app(cons, h), t)) -> APP(app(f, h), c)
APP(app(map1, app(map1, f'')), app(app(cons, app(app(cons, h''), t'')), t)) -> APP(app(cons, app(app(cons, app(f'', h'')), app(app(map1, f''), t''))), app(app(map1, app(map1, f'')), t))
APP(app(map1, f), app(app(cons, h), t)) -> APP(app(map1, f), t)
APP(app(map1, f), app(app(cons, h), t)) -> APP(f, h)
APP(app(app(map2, f''), c''), app(app(cons, h), app(app(cons, h''), t''))) -> APP(app(cons, app(app(f'', h), c'')), app(app(cons, app(app(f'', h''), c'')), app(app(app(map2, f''), c''), t'')))


Rules:


app(app(map1, f), app(app(cons, h), t)) -> app(app(cons, app(f, h)), app(app(map1, f), t))
app(app(app(map2, f), c), app(app(cons, h), t)) -> app(app(cons, app(app(f, h), c)), app(app(app(map2, f), c), t))
app(app(app(app(map3, f), g), c), app(app(cons, h), t)) -> app(app(cons, app(app(app(f, g), h), c)), app(app(app(app(map3, f), g), c), t))


Strategy:

innermost



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