Term Rewriting System R:
[x, y, p, f]
app(app(app(if, true), x), y) -> x
app(app(app(if, false), x), y) -> y
app(app(app(until, p), f), x) -> app(app(app(if, app(p, x)), x), app(app(app(until, p), f), app(f, x)))

Termination of R to be shown.



   R
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
OC
       →TRS2
Dependency Pair Analysis



R contains the following Dependency Pairs:

APP(app(app(until, p), f), x) -> APP(app(app(if, app(p, x)), x), app(app(app(until, p), f), app(f, x)))
APP(app(app(until, p), f), x) -> APP(app(if, app(p, x)), x)
APP(app(app(until, p), f), x) -> APP(if, app(p, x))
APP(app(app(until, p), f), x) -> APP(p, x)
APP(app(app(until, p), f), x) -> APP(app(app(until, p), f), app(f, x))
APP(app(app(until, p), f), x) -> APP(f, x)

Furthermore, R contains one SCC.


   R
OC
       →TRS2
DPs
           →DP Problem 1
Argument Filtering and Ordering


Dependency Pairs:

APP(app(app(until, p), f), x) -> APP(f, x)
APP(app(app(until, p), f), x) -> APP(app(app(until, p), f), app(f, x))
APP(app(app(until, p), f), x) -> APP(p, x)


Rules:


app(app(app(if, true), x), y) -> x
app(app(app(if, false), x), y) -> y
app(app(app(until, p), f), x) -> app(app(app(if, app(p, x)), x), app(app(app(until, p), f), app(f, x)))


Strategy:

innermost




The following dependency pairs can be strictly oriented:

APP(app(app(until, p), f), x) -> APP(f, x)
APP(app(app(until, p), f), x) -> APP(p, x)


There are no usable rules w.r.t. the AFS that need to be oriented.
Used ordering: Lexicographic Path Order with Precedence:
trivial

resulting in one new DP problem.
Used Argument Filtering System:
APP(x1, x2) -> x1
app(x1, x2) -> app(x1, x2)


   R
OC
       →TRS2
DPs
           →DP Problem 1
AFS
             ...
               →DP Problem 2
Non Termination


Dependency Pair:

APP(app(app(until, p), f), x) -> APP(app(app(until, p), f), app(f, x))


Rules:


app(app(app(if, true), x), y) -> x
app(app(app(if, false), x), y) -> y
app(app(app(until, p), f), x) -> app(app(app(if, app(p, x)), x), app(app(app(until, p), f), app(f, x)))


Strategy:

innermost




Found an infinite P-chain over R:
P =

APP(app(app(until, p), f), x) -> APP(app(app(until, p), f), app(f, x))

R =

app(app(app(if, true), x), y) -> x
app(app(app(if, false), x), y) -> y
app(app(app(until, p), f), x) -> app(app(app(if, app(p, x)), x), app(app(app(until, p), f), app(f, x)))

s = APP(app(app(until, p), f), x)
evaluates to t =APP(app(app(until, p), f), app(f, x))

Thus, s starts an infinite chain as s matches t.

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