0 QTRS
↳1 Overlay + Local Confluence (⇔)
↳2 QTRS
↳3 DependencyPairsProof (⇔)
↳4 QDP
↳5 DependencyGraphProof (⇔)
↳6 QDP
↳7 QDPOrderProof (⇔)
↳8 QDP
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)))
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)))
app(app(app(if, true), x0), x1)
app(app(app(if, false), x0), x1)
app(app(app(until, x0), x1), x2)
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)
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)))
app(app(app(if, true), x0), x1)
app(app(app(if, false), x0), x1)
app(app(app(until, x0), x1), x2)
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)
APP(app(app(until, p), f), x) → APP(f, x)
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)))
app(app(app(if, true), x0), x1)
app(app(app(if, false), x0), x1)
app(app(app(until, x0), x1), x2)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APP(app(app(until, p), f), x) → APP(p, x)
APP(app(app(until, p), f), x) → APP(f, x)
trivial
APP1: [1]
until: []
if: []
true: []
false: []
app2: [2,1]
APP(app(app(until, p), f), x) → APP(app(app(until, p), f), app(f, x))
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)))
app(app(app(if, true), x0), x1)
app(app(app(if, false), x0), x1)
app(app(app(until, x0), x1), x2)