YES
div(x, s(y)) → d(x, s(y), 0)
d(x, s(y), z) → cond(ge(x, z), x, y, z)
cond(true, x, y, z) → s(d(x, s(y), plus(s(y), z)))
cond(false, x, y, z) → 0
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
↳ QTRS
↳ Overlay + Local Confluence
div(x, s(y)) → d(x, s(y), 0)
d(x, s(y), z) → cond(ge(x, z), x, y, z)
cond(true, x, y, z) → s(d(x, s(y), plus(s(y), z)))
cond(false, x, y, z) → 0
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
div(x, s(y)) → d(x, s(y), 0)
d(x, s(y), z) → cond(ge(x, z), x, y, z)
cond(true, x, y, z) → s(d(x, s(y), plus(s(y), z)))
cond(false, x, y, z) → 0
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
div(x0, s(x1))
d(x0, s(x1), x2)
cond(true, x0, x1, x2)
cond(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
COND(true, x, y, z) → PLUS(s(y), z)
COND(true, x, y, z) → D(x, s(y), plus(s(y), z))
D(x, s(y), z) → COND(ge(x, z), x, y, z)
DIV(x, s(y)) → D(x, s(y), 0)
D(x, s(y), z) → GE(x, z)
PLUS(n, s(m)) → PLUS(n, m)
GE(s(u), s(v)) → GE(u, v)
div(x, s(y)) → d(x, s(y), 0)
d(x, s(y), z) → cond(ge(x, z), x, y, z)
cond(true, x, y, z) → s(d(x, s(y), plus(s(y), z)))
cond(false, x, y, z) → 0
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
div(x0, s(x1))
d(x0, s(x1), x2)
cond(true, x0, x1, x2)
cond(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
COND(true, x, y, z) → PLUS(s(y), z)
COND(true, x, y, z) → D(x, s(y), plus(s(y), z))
D(x, s(y), z) → COND(ge(x, z), x, y, z)
DIV(x, s(y)) → D(x, s(y), 0)
D(x, s(y), z) → GE(x, z)
PLUS(n, s(m)) → PLUS(n, m)
GE(s(u), s(v)) → GE(u, v)
div(x, s(y)) → d(x, s(y), 0)
d(x, s(y), z) → cond(ge(x, z), x, y, z)
cond(true, x, y, z) → s(d(x, s(y), plus(s(y), z)))
cond(false, x, y, z) → 0
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
div(x0, s(x1))
d(x0, s(x1), x2)
cond(true, x0, x1, x2)
cond(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
PLUS(n, s(m)) → PLUS(n, m)
div(x, s(y)) → d(x, s(y), 0)
d(x, s(y), z) → cond(ge(x, z), x, y, z)
cond(true, x, y, z) → s(d(x, s(y), plus(s(y), z)))
cond(false, x, y, z) → 0
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
div(x0, s(x1))
d(x0, s(x1), x2)
cond(true, x0, x1, x2)
cond(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
PLUS(n, s(m)) → PLUS(n, m)
div(x0, s(x1))
d(x0, s(x1), x2)
cond(true, x0, x1, x2)
cond(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
div(x0, s(x1))
d(x0, s(x1), x2)
cond(true, x0, x1, x2)
cond(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
PLUS(n, s(m)) → PLUS(n, m)
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
GE(s(u), s(v)) → GE(u, v)
div(x, s(y)) → d(x, s(y), 0)
d(x, s(y), z) → cond(ge(x, z), x, y, z)
cond(true, x, y, z) → s(d(x, s(y), plus(s(y), z)))
cond(false, x, y, z) → 0
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
div(x0, s(x1))
d(x0, s(x1), x2)
cond(true, x0, x1, x2)
cond(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
GE(s(u), s(v)) → GE(u, v)
div(x0, s(x1))
d(x0, s(x1), x2)
cond(true, x0, x1, x2)
cond(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
div(x0, s(x1))
d(x0, s(x1), x2)
cond(true, x0, x1, x2)
cond(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
GE(s(u), s(v)) → GE(u, v)
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
COND(true, x, y, z) → D(x, s(y), plus(s(y), z))
D(x, s(y), z) → COND(ge(x, z), x, y, z)
div(x, s(y)) → d(x, s(y), 0)
d(x, s(y), z) → cond(ge(x, z), x, y, z)
cond(true, x, y, z) → s(d(x, s(y), plus(s(y), z)))
cond(false, x, y, z) → 0
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
div(x0, s(x1))
d(x0, s(x1), x2)
cond(true, x0, x1, x2)
cond(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
COND(true, x, y, z) → D(x, s(y), plus(s(y), z))
D(x, s(y), z) → COND(ge(x, z), x, y, z)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
div(x0, s(x1))
d(x0, s(x1), x2)
cond(true, x0, x1, x2)
cond(false, x0, x1, x2)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
div(x0, s(x1))
d(x0, s(x1), x2)
cond(true, x0, x1, x2)
cond(false, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
COND(true, x, y, z) → D(x, s(y), plus(s(y), z))
D(x, s(y), z) → COND(ge(x, z), x, y, z)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
(1) (COND(ge(x3, x5), x3, x4, x5)=COND(true, x6, x7, x8) ⇒ COND(true, x6, x7, x8)≥D(x6, s(x7), plus(s(x7), x8)))
(2) (ge(x3, x5)=true ⇒ COND(true, x3, x4, x5)≥D(x3, s(x4), plus(s(x4), x5)))
(3) (true=true ⇒ COND(true, x18, x4, 0)≥D(x18, s(x4), plus(s(x4), 0)))
(4) (ge(x20, x21)=true∧(∀x22:ge(x20, x21)=true ⇒ COND(true, x20, x22, x21)≥D(x20, s(x22), plus(s(x22), x21))) ⇒ COND(true, s(x20), x4, s(x21))≥D(s(x20), s(x4), plus(s(x4), s(x21))))
(5) (COND(true, x18, x4, 0)≥D(x18, s(x4), plus(s(x4), 0)))
(6) (COND(true, x20, x4, x21)≥D(x20, s(x4), plus(s(x4), x21)) ⇒ COND(true, s(x20), x4, s(x21))≥D(s(x20), s(x4), plus(s(x4), s(x21))))
(7) (D(x9, s(x10), plus(s(x10), x11))=D(x12, s(x13), x14) ⇒ D(x12, s(x13), x14)≥COND(ge(x12, x14), x12, x13, x14))
(8) (D(x9, s(x10), x14)≥COND(ge(x9, x14), x9, x10, x14))
POL(0) = 0
POL(COND(x1, x2, x3, x4)) = -1 + x1 + x2 + x3 - x4
POL(D(x1, x2, x3)) = -1 + x1 + x2 - x3
POL(c) = -1
POL(false) = 0
POL(ge(x1, x2)) = 1
POL(plus(x1, x2)) = x1 + x2
POL(s(x1)) = 1 + x1
POL(true) = 1
The following pairs are in Pbound:
COND(true, x, y, z) → D(x, s(y), plus(s(y), z))
The following rules are usable:
COND(true, x, y, z) → D(x, s(y), plus(s(y), z))
s(plus(n, m)) → plus(n, s(m))
n → plus(n, 0)
ge(0, s(v)) → false
ge(u, 0) → true
ge(s(u), s(v)) → ge(u, v)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ DependencyGraphProof
D(x, s(y), z) → COND(ge(x, z), x, y, z)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))