half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
inc(0) → 0
inc(s(x)) → s(inc(x))
log(x) → log2(x, 0)
log2(x, y) → if(le(x, s(0)), x, inc(y))
if(true, x, s(y)) → y
if(false, x, y) → log2(half(x), y)
↳ QTRS
↳ Overlay + Local Confluence
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
inc(0) → 0
inc(s(x)) → s(inc(x))
log(x) → log2(x, 0)
log2(x, y) → if(le(x, s(0)), x, inc(y))
if(true, x, s(y)) → y
if(false, x, y) → log2(half(x), y)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
inc(0) → 0
inc(s(x)) → s(inc(x))
log(x) → log2(x, 0)
log2(x, y) → if(le(x, s(0)), x, inc(y))
if(true, x, s(y)) → y
if(false, x, y) → log2(half(x), y)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
LOG2(x, y) → IF(le(x, s(0)), x, inc(y))
IF(false, x, y) → HALF(x)
LOG2(x, y) → LE(x, s(0))
HALF(s(s(x))) → HALF(x)
LOG(x) → LOG2(x, 0)
LOG2(x, y) → INC(y)
IF(false, x, y) → LOG2(half(x), y)
INC(s(x)) → INC(x)
LE(s(x), s(y)) → LE(x, y)
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
inc(0) → 0
inc(s(x)) → s(inc(x))
log(x) → log2(x, 0)
log2(x, y) → if(le(x, s(0)), x, inc(y))
if(true, x, s(y)) → y
if(false, x, y) → log2(half(x), y)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
LOG2(x, y) → IF(le(x, s(0)), x, inc(y))
IF(false, x, y) → HALF(x)
LOG2(x, y) → LE(x, s(0))
HALF(s(s(x))) → HALF(x)
LOG(x) → LOG2(x, 0)
LOG2(x, y) → INC(y)
IF(false, x, y) → LOG2(half(x), y)
INC(s(x)) → INC(x)
LE(s(x), s(y)) → LE(x, y)
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
inc(0) → 0
inc(s(x)) → s(inc(x))
log(x) → log2(x, 0)
log2(x, y) → if(le(x, s(0)), x, inc(y))
if(true, x, s(y)) → y
if(false, x, y) → log2(half(x), y)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
INC(s(x)) → INC(x)
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
inc(0) → 0
inc(s(x)) → s(inc(x))
log(x) → log2(x, 0)
log2(x, y) → if(le(x, s(0)), x, inc(y))
if(true, x, s(y)) → y
if(false, x, y) → log2(half(x), y)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
↳ QDP
INC(s(x)) → INC(x)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
INC(s(x)) → INC(x)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
LE(s(x), s(y)) → LE(x, y)
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
inc(0) → 0
inc(s(x)) → s(inc(x))
log(x) → log2(x, 0)
log2(x, y) → if(le(x, s(0)), x, inc(y))
if(true, x, s(y)) → y
if(false, x, y) → log2(half(x), y)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
LE(s(x), s(y)) → LE(x, y)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
LE(s(x), s(y)) → LE(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
HALF(s(s(x))) → HALF(x)
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
inc(0) → 0
inc(s(x)) → s(inc(x))
log(x) → log2(x, 0)
log2(x, y) → if(le(x, s(0)), x, inc(y))
if(true, x, s(y)) → y
if(false, x, y) → log2(half(x), y)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
HALF(s(s(x))) → HALF(x)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
HALF(s(s(x))) → HALF(x)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
LOG2(x, y) → IF(le(x, s(0)), x, inc(y))
IF(false, x, y) → LOG2(half(x), y)
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
inc(0) → 0
inc(s(x)) → s(inc(x))
log(x) → log2(x, 0)
log2(x, y) → if(le(x, s(0)), x, inc(y))
if(true, x, s(y)) → y
if(false, x, y) → log2(half(x), y)
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
LOG2(x, y) → IF(le(x, s(0)), x, inc(y))
IF(false, x, y) → LOG2(half(x), y)
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
le(0, y) → true
le(s(x), s(y)) → le(x, y)
inc(0) → 0
inc(s(x)) → s(inc(x))
le(s(x), 0) → false
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
log(x0)
log2(x0, x1)
if(true, x0, s(x1))
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
LOG2(x, y) → IF(le(x, s(0)), x, inc(y))
IF(false, x, y) → LOG2(half(x), y)
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
le(0, y) → true
le(s(x), s(y)) → le(x, y)
inc(0) → 0
inc(s(x)) → s(inc(x))
le(s(x), 0) → false
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
IF(false, x, y) → LOG2(half(x), y)
Used ordering: Polynomial interpretation [25,35]:
LOG2(x, y) → IF(le(x, s(0)), x, inc(y))
The value of delta used in the strict ordering is 1/8.
POL(LOG2(x1, x2)) = (2)x_1
POL(half(x1)) = (1/2)x_1
POL(le(x1, x2)) = (1/4)x_1
POL(true) = 0
POL(false) = 1/4
POL(s(x1)) = 1 + x_1
POL(inc(x1)) = 4 + (7/4)x_1
POL(IF(x1, x2, x3)) = (1/2)x_1 + x_2
POL(0) = 0
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
half(s(s(x))) → s(half(x))
le(0, y) → true
half(0) → 0
half(s(0)) → 0
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
LOG2(x, y) → IF(le(x, s(0)), x, inc(y))
half(0) → 0
half(s(0)) → 0
half(s(s(x))) → s(half(x))
le(0, y) → true
le(s(x), s(y)) → le(x, y)
inc(0) → 0
inc(s(x)) → s(inc(x))
le(s(x), 0) → false
half(0)
half(s(0))
half(s(s(x0)))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
inc(0)
inc(s(x0))