0 QTRS
↳1 Overlay + Local Confluence (⇔)
↳2 QTRS
↳3 DependencyPairsProof (⇔)
↳4 QDP
↳5 DependencyGraphProof (⇔)
↳6 AND
↳7 QDP
↳8 QDPOrderProof (⇔)
↳9 QDP
↳10 PisEmptyProof (⇔)
↳11 TRUE
↳12 QDP
↳13 QDPOrderProof (⇔)
↳14 QDP
↳15 PisEmptyProof (⇔)
↳16 TRUE
↳17 QDP
numbers → d(0)
d(x) → if(le(x, nr), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
nr → ack(s(s(s(s(s(s(0)))))), 0)
ack(0, x) → s(x)
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
numbers → d(0)
d(x) → if(le(x, nr), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
nr → ack(s(s(s(s(s(s(0)))))), 0)
ack(0, x) → s(x)
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
numbers
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
nr
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
NUMBERS → D(0)
D(x) → IF(le(x, nr), x)
D(x) → LE(x, nr)
D(x) → NR
IF(true, x) → D(s(x))
LE(s(x), s(y)) → LE(x, y)
NR → ACK(s(s(s(s(s(s(0)))))), 0)
ACK(s(x), 0) → ACK(x, s(0))
ACK(s(x), s(y)) → ACK(x, ack(s(x), y))
ACK(s(x), s(y)) → ACK(s(x), y)
numbers → d(0)
d(x) → if(le(x, nr), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
nr → ack(s(s(s(s(s(s(0)))))), 0)
ack(0, x) → s(x)
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
numbers
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
nr
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
ACK(s(x), s(y)) → ACK(x, ack(s(x), y))
ACK(s(x), s(y)) → ACK(s(x), y)
ACK(s(x), 0) → ACK(x, s(0))
numbers → d(0)
d(x) → if(le(x, nr), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
nr → ack(s(s(s(s(s(s(0)))))), 0)
ack(0, x) → s(x)
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
numbers
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
nr
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACK(s(x), s(y)) → ACK(x, ack(s(x), y))
ACK(s(x), s(y)) → ACK(s(x), y)
ACK(s(x), 0) → ACK(x, s(0))
ACK2 > 0 > ack2 > s1
numbers > 0 > ack2 > s1
numbers > [d, if, nil] > [le, true, false] > s1
nr > 0 > ack2 > s1
numbers → d(0)
d(x) → if(le(x, nr), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
nr → ack(s(s(s(s(s(s(0)))))), 0)
ack(0, x) → s(x)
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
numbers → d(0)
d(x) → if(le(x, nr), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
nr → ack(s(s(s(s(s(s(0)))))), 0)
ack(0, x) → s(x)
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
numbers
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
nr
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
LE(s(x), s(y)) → LE(x, y)
numbers → d(0)
d(x) → if(le(x, nr), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
nr → ack(s(s(s(s(s(s(0)))))), 0)
ack(0, x) → s(x)
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
numbers
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
nr
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LE(s(x), s(y)) → LE(x, y)
numbers > [d1, if1] > s1 > le2
numbers > [d1, if1] > cons
numbers > [d1, if1] > nil
numbers > 0 > true > s1 > le2
numbers > 0 > false
nr > ack2 > 0 > true > s1 > le2
nr > ack2 > 0 > false
numbers → d(0)
d(x) → if(le(x, nr), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
nr → ack(s(s(s(s(s(s(0)))))), 0)
ack(0, x) → s(x)
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
numbers → d(0)
d(x) → if(le(x, nr), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
nr → ack(s(s(s(s(s(s(0)))))), 0)
ack(0, x) → s(x)
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
numbers
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
nr
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
IF(true, x) → D(s(x))
D(x) → IF(le(x, nr), x)
numbers → d(0)
d(x) → if(le(x, nr), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
nr → ack(s(s(s(s(s(s(0)))))), 0)
ack(0, x) → s(x)
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
numbers
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
nr
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))