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 > ack2 > s1 > nil
numbers > 0 > ack2 > s1 > nil
numbers > 0 > true > nil
numbers > 0 > false > nil
numbers > d1 > le2 > nil
nr > 0 > ack2 > s1 > nil
nr > 0 > true > nil
nr > 0 > false > nil
ACK2: [1,2]
s1: [1]
ack2: [1,2]
0: multiset
numbers: multiset
d1: multiset
le2: [2,1]
nr: multiset
true: multiset
false: multiset
nil: multiset
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)
LE1 > nil
numbers > 0 > s1 > nil
le1 > true > s1 > nil
le1 > false > nil
nr > 0 > s1 > nil
nr > ack2 > s1 > nil
LE1: multiset
s1: multiset
numbers: multiset
0: multiset
le1: multiset
nr: multiset
true: multiset
false: multiset
nil: multiset
ack2: [1,2]
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))