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
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
lastbit(0) → 0
lastbit(s(0)) → s(0)
lastbit(s(s(x))) → lastbit(x)
zero(0) → true
zero(s(x)) → false
conv(x) → conviter(x, cons(0, nil))
conviter(x, l) → if(zero(x), x, l)
if(true, x, l) → l
if(false, x, l) → conviter(half(x), cons(lastbit(x), l))
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
lastbit(0) → 0
lastbit(s(0)) → s(0)
lastbit(s(s(x))) → lastbit(x)
zero(0) → true
zero(s(x)) → false
conv(x) → conviter(x, cons(0, nil))
conviter(x, l) → if(zero(x), x, l)
if(true, x, l) → l
if(false, x, l) → conviter(half(x), cons(lastbit(x), l))
half(0)
half(s(0))
half(s(s(x0)))
lastbit(0)
lastbit(s(0))
lastbit(s(s(x0)))
zero(0)
zero(s(x0))
conv(x0)
conviter(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
HALF(s(s(x))) → HALF(x)
LASTBIT(s(s(x))) → LASTBIT(x)
CONV(x) → CONVITER(x, cons(0, nil))
CONVITER(x, l) → IF(zero(x), x, l)
CONVITER(x, l) → ZERO(x)
IF(false, x, l) → CONVITER(half(x), cons(lastbit(x), l))
IF(false, x, l) → HALF(x)
IF(false, x, l) → LASTBIT(x)
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
lastbit(0) → 0
lastbit(s(0)) → s(0)
lastbit(s(s(x))) → lastbit(x)
zero(0) → true
zero(s(x)) → false
conv(x) → conviter(x, cons(0, nil))
conviter(x, l) → if(zero(x), x, l)
if(true, x, l) → l
if(false, x, l) → conviter(half(x), cons(lastbit(x), l))
half(0)
half(s(0))
half(s(s(x0)))
lastbit(0)
lastbit(s(0))
lastbit(s(s(x0)))
zero(0)
zero(s(x0))
conv(x0)
conviter(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
LASTBIT(s(s(x))) → LASTBIT(x)
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
lastbit(0) → 0
lastbit(s(0)) → s(0)
lastbit(s(s(x))) → lastbit(x)
zero(0) → true
zero(s(x)) → false
conv(x) → conviter(x, cons(0, nil))
conviter(x, l) → if(zero(x), x, l)
if(true, x, l) → l
if(false, x, l) → conviter(half(x), cons(lastbit(x), l))
half(0)
half(s(0))
half(s(s(x0)))
lastbit(0)
lastbit(s(0))
lastbit(s(s(x0)))
zero(0)
zero(s(x0))
conv(x0)
conviter(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LASTBIT(s(s(x))) → LASTBIT(x)
[half1, zero, false] > lastbit > [LASTBIT1, s1]
[half1, zero, false] > lastbit > [0, conv1] > nil
[half1, zero, false] > true
LASTBIT1: multiset
s1: multiset
half1: [1]
0: multiset
lastbit: multiset
zero: []
true: multiset
false: multiset
conv1: multiset
nil: multiset
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
lastbit(0) → 0
lastbit(s(0)) → s(0)
lastbit(s(s(x))) → lastbit(x)
zero(0) → true
zero(s(x)) → false
conv(x) → conviter(x, cons(0, nil))
conviter(x, l) → if(zero(x), x, l)
if(true, x, l) → l
if(false, x, l) → conviter(half(x), cons(lastbit(x), l))
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
lastbit(0) → 0
lastbit(s(0)) → s(0)
lastbit(s(s(x))) → lastbit(x)
zero(0) → true
zero(s(x)) → false
conv(x) → conviter(x, cons(0, nil))
conviter(x, l) → if(zero(x), x, l)
if(true, x, l) → l
if(false, x, l) → conviter(half(x), cons(lastbit(x), l))
half(0)
half(s(0))
half(s(s(x0)))
lastbit(0)
lastbit(s(0))
lastbit(s(s(x0)))
zero(0)
zero(s(x0))
conv(x0)
conviter(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
HALF(s(s(x))) → HALF(x)
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
lastbit(0) → 0
lastbit(s(0)) → s(0)
lastbit(s(s(x))) → lastbit(x)
zero(0) → true
zero(s(x)) → false
conv(x) → conviter(x, cons(0, nil))
conviter(x, l) → if(zero(x), x, l)
if(true, x, l) → l
if(false, x, l) → conviter(half(x), cons(lastbit(x), l))
half(0)
half(s(0))
half(s(s(x0)))
lastbit(0)
lastbit(s(0))
lastbit(s(s(x0)))
zero(0)
zero(s(x0))
conv(x0)
conviter(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
HALF(s(s(x))) → HALF(x)
[half1, zero, false] > lastbit > [HALF1, s1]
[half1, zero, false] > lastbit > [0, conv1] > nil
[half1, zero, false] > true
HALF1: multiset
s1: multiset
half1: [1]
0: multiset
lastbit: multiset
zero: []
true: multiset
false: multiset
conv1: multiset
nil: multiset
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
lastbit(0) → 0
lastbit(s(0)) → s(0)
lastbit(s(s(x))) → lastbit(x)
zero(0) → true
zero(s(x)) → false
conv(x) → conviter(x, cons(0, nil))
conviter(x, l) → if(zero(x), x, l)
if(true, x, l) → l
if(false, x, l) → conviter(half(x), cons(lastbit(x), l))
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
lastbit(0) → 0
lastbit(s(0)) → s(0)
lastbit(s(s(x))) → lastbit(x)
zero(0) → true
zero(s(x)) → false
conv(x) → conviter(x, cons(0, nil))
conviter(x, l) → if(zero(x), x, l)
if(true, x, l) → l
if(false, x, l) → conviter(half(x), cons(lastbit(x), l))
half(0)
half(s(0))
half(s(s(x0)))
lastbit(0)
lastbit(s(0))
lastbit(s(s(x0)))
zero(0)
zero(s(x0))
conv(x0)
conviter(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
IF(false, x, l) → CONVITER(half(x), cons(lastbit(x), l))
CONVITER(x, l) → IF(zero(x), x, l)
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
lastbit(0) → 0
lastbit(s(0)) → s(0)
lastbit(s(s(x))) → lastbit(x)
zero(0) → true
zero(s(x)) → false
conv(x) → conviter(x, cons(0, nil))
conviter(x, l) → if(zero(x), x, l)
if(true, x, l) → l
if(false, x, l) → conviter(half(x), cons(lastbit(x), l))
half(0)
half(s(0))
half(s(s(x0)))
lastbit(0)
lastbit(s(0))
lastbit(s(s(x0)))
zero(0)
zero(s(x0))
conv(x0)
conviter(x0, x1)
if(true, x0, x1)
if(false, x0, x1)