Term Rewriting System R:
[f, g, x, l, xs]
app(app(app(compose, f), g), x) -> app(g, app(f, x))
app(reverse, l) -> app(app(reverse2, l), nil)
app(app(reverse2, nil), l) -> l
app(app(reverse2, app(app(cons, x), xs)), l) -> app(app(reverse2, xs), app(app(cons, x), l))
app(hd, app(app(cons, x), xs)) -> x
app(tl, app(app(cons, x), xs)) -> xs
last -> app(app(compose, hd), reverse)
init -> app(app(compose, reverse), app(app(compose, tl), reverse))
Termination of R to be shown.
R
↳Removing Redundant Rules
Removing the following rules from R which fullfill a polynomial ordering:
app(app(app(compose, f), g), x) -> app(g, app(f, x))
where the Polynomial interpretation:
POL(last) | = 1 |
POL(reverse) | = 0 |
POL(cons) | = 0 |
POL(hd) | = 0 |
POL(nil) | = 0 |
POL(tl) | = 0 |
POL(compose) | = 1 |
POL(init) | = 2 |
POL(app(x1, x2)) | = x1 + x2 |
POL(reverse2) | = 0 |
was used.
Not all Rules of R can be deleted, so we still have to regard a part of R.
R
↳RRRPolo
→TRS2
↳Removing Redundant Rules
Removing the following rules from R which fullfill a polynomial ordering:
last -> app(app(compose, hd), reverse)
where the Polynomial interpretation:
POL(last) | = 1 |
POL(reverse) | = 0 |
POL(cons) | = 0 |
POL(hd) | = 0 |
POL(nil) | = 0 |
POL(tl) | = 0 |
POL(init) | = 0 |
POL(compose) | = 0 |
POL(app(x1, x2)) | = x1 + x2 |
POL(reverse2) | = 0 |
was used.
Not all Rules of R can be deleted, so we still have to regard a part of R.
R
↳RRRPolo
→TRS2
↳RRRPolo
→TRS3
↳Removing Redundant Rules
Removing the following rules from R which fullfill a polynomial ordering:
app(reverse, l) -> app(app(reverse2, l), nil)
app(hd, app(app(cons, x), xs)) -> x
where the Polynomial interpretation:
POL(reverse) | = 1 |
POL(cons) | = 0 |
POL(hd) | = 1 |
POL(nil) | = 0 |
POL(tl) | = 0 |
POL(init) | = 2 |
POL(compose) | = 0 |
POL(app(x1, x2)) | = x1 + x2 |
POL(reverse2) | = 0 |
was used.
Not all Rules of R can be deleted, so we still have to regard a part of R.
R
↳RRRPolo
→TRS2
↳RRRPolo
→TRS3
↳RRRPolo
...
→TRS4
↳Removing Redundant Rules
Removing the following rules from R which fullfill a polynomial ordering:
init -> app(app(compose, reverse), app(app(compose, tl), reverse))
app(app(reverse2, nil), l) -> l
where the Polynomial interpretation:
POL(reverse) | = 0 |
POL(cons) | = 0 |
POL(nil) | = 0 |
POL(tl) | = 0 |
POL(init) | = 1 |
POL(compose) | = 0 |
POL(app(x1, x2)) | = x1 + x2 |
POL(reverse2) | = 1 |
was used.
Not all Rules of R can be deleted, so we still have to regard a part of R.
R
↳RRRPolo
→TRS2
↳RRRPolo
→TRS3
↳RRRPolo
...
→TRS5
↳Removing Redundant Rules
Removing the following rules from R which fullfill a polynomial ordering:
app(app(reverse2, app(app(cons, x), xs)), l) -> app(app(reverse2, xs), app(app(cons, x), l))
app(tl, app(app(cons, x), xs)) -> xs
where the Polynomial interpretation:
POL(cons) | = 1 |
POL(tl) | = 2 |
POL(app(x1, x2)) | = 2·x1 + x2 |
POL(reverse2) | = 2 |
was used.
All Rules of R can be deleted.
R
↳RRRPolo
→TRS2
↳RRRPolo
→TRS3
↳RRRPolo
...
→TRS6
↳Overlay and local confluence Check
The TRS is overlay and locally confluent (all critical pairs are trivially joinable).Hence, we can switch to innermost.
R
↳RRRPolo
→TRS2
↳RRRPolo
→TRS3
↳RRRPolo
...
→TRS7
↳Dependency Pair Analysis
R contains no Dependency Pairs and therefore no SCCs.
Termination of R successfully shown.
Duration:
0:00 minutes