Term Rewriting System R:
[y, x, f, ys]
app(app(neq, 0), 0) -> false
app(app(neq, 0), app(s, y)) -> true
app(app(neq, app(s, x)), 0) -> true
app(app(neq, app(s, x)), app(s, y)) -> app(app(neq, x), y)
app(app(filter, f), nil) -> nil
app(app(filter, f), app(app(cons, y), ys)) -> app(app(app(filtersub, app(f, y)), f), app(app(cons, y), ys))
app(app(app(filtersub, true), f), app(app(cons, y), ys)) -> app(app(cons, y), app(app(filter, f), ys))
app(app(app(filtersub, false), f), app(app(cons, y), ys)) -> app(app(filter, f), ys)
nonzero -> app(filter, app(neq, 0))

Termination of R to be shown.



   R
Dependency Pair Analysis



R contains the following Dependency Pairs:

APP(app(neq, app(s, x)), app(s, y)) -> APP(app(neq, x), y)
APP(app(neq, app(s, x)), app(s, y)) -> APP(neq, x)
APP(app(filter, f), app(app(cons, y), ys)) -> APP(app(app(filtersub, app(f, y)), f), app(app(cons, y), ys))
APP(app(filter, f), app(app(cons, y), ys)) -> APP(app(filtersub, app(f, y)), f)
APP(app(filter, f), app(app(cons, y), ys)) -> APP(filtersub, app(f, y))
APP(app(filter, f), app(app(cons, y), ys)) -> APP(f, y)
APP(app(app(filtersub, true), f), app(app(cons, y), ys)) -> APP(app(cons, y), app(app(filter, f), ys))
APP(app(app(filtersub, true), f), app(app(cons, y), ys)) -> APP(app(filter, f), ys)
APP(app(app(filtersub, true), f), app(app(cons, y), ys)) -> APP(filter, f)
APP(app(app(filtersub, false), f), app(app(cons, y), ys)) -> APP(app(filter, f), ys)
APP(app(app(filtersub, false), f), app(app(cons, y), ys)) -> APP(filter, f)
NONZERO -> APP(filter, app(neq, 0))
NONZERO -> APP(neq, 0)

Furthermore, R contains one SCC.


   R
DPs
       →DP Problem 1
Narrowing Transformation


Dependency Pairs:

APP(app(app(filtersub, false), f), app(app(cons, y), ys)) -> APP(app(filter, f), ys)
APP(app(app(filtersub, true), f), app(app(cons, y), ys)) -> APP(app(filter, f), ys)
APP(app(app(filtersub, true), f), app(app(cons, y), ys)) -> APP(app(cons, y), app(app(filter, f), ys))
APP(app(filter, f), app(app(cons, y), ys)) -> APP(f, y)
APP(app(filter, f), app(app(cons, y), ys)) -> APP(app(filtersub, app(f, y)), f)
APP(app(filter, f), app(app(cons, y), ys)) -> APP(app(app(filtersub, app(f, y)), f), app(app(cons, y), ys))
APP(app(neq, app(s, x)), app(s, y)) -> APP(app(neq, x), y)


Rules:


app(app(neq, 0), 0) -> false
app(app(neq, 0), app(s, y)) -> true
app(app(neq, app(s, x)), 0) -> true
app(app(neq, app(s, x)), app(s, y)) -> app(app(neq, x), y)
app(app(filter, f), nil) -> nil
app(app(filter, f), app(app(cons, y), ys)) -> app(app(app(filtersub, app(f, y)), f), app(app(cons, y), ys))
app(app(app(filtersub, true), f), app(app(cons, y), ys)) -> app(app(cons, y), app(app(filter, f), ys))
app(app(app(filtersub, false), f), app(app(cons, y), ys)) -> app(app(filter, f), ys)
nonzero -> app(filter, app(neq, 0))





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

APP(app(app(filtersub, true), f), app(app(cons, y), ys)) -> APP(app(cons, y), app(app(filter, f), ys))
two new Dependency Pairs are created:

APP(app(app(filtersub, true), f''), app(app(cons, y), nil)) -> APP(app(cons, y), nil)
APP(app(app(filtersub, true), f''), app(app(cons, y), app(app(cons, y''), ys''))) -> APP(app(cons, y), app(app(app(filtersub, app(f'', y'')), f''), app(app(cons, y''), ys'')))

The transformation is resulting in one new DP problem:



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




The following remains to be proven:
Dependency Pairs:

APP(app(app(filtersub, true), f''), app(app(cons, y), app(app(cons, y''), ys''))) -> APP(app(cons, y), app(app(app(filtersub, app(f'', y'')), f''), app(app(cons, y''), ys'')))
APP(app(app(filtersub, true), f), app(app(cons, y), ys)) -> APP(app(filter, f), ys)
APP(app(filter, f), app(app(cons, y), ys)) -> APP(f, y)
APP(app(filter, f), app(app(cons, y), ys)) -> APP(app(filtersub, app(f, y)), f)
APP(app(filter, f), app(app(cons, y), ys)) -> APP(app(app(filtersub, app(f, y)), f), app(app(cons, y), ys))
APP(app(neq, app(s, x)), app(s, y)) -> APP(app(neq, x), y)
APP(app(app(filtersub, false), f), app(app(cons, y), ys)) -> APP(app(filter, f), ys)


Rules:


app(app(neq, 0), 0) -> false
app(app(neq, 0), app(s, y)) -> true
app(app(neq, app(s, x)), 0) -> true
app(app(neq, app(s, x)), app(s, y)) -> app(app(neq, x), y)
app(app(filter, f), nil) -> nil
app(app(filter, f), app(app(cons, y), ys)) -> app(app(app(filtersub, app(f, y)), f), app(app(cons, y), ys))
app(app(app(filtersub, true), f), app(app(cons, y), ys)) -> app(app(cons, y), app(app(filter, f), ys))
app(app(app(filtersub, false), f), app(app(cons, y), ys)) -> app(app(filter, f), ys)
nonzero -> app(filter, app(neq, 0))




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