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))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(x0, 0)
d(x0, s(x1), x2)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
plus(plus(x0, x1), x2)
↳ 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))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(x0, 0)
d(x0, s(x1), x2)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
plus(plus(x0, x1), x2)
PLUS(plus(n, m), u) → PLUS(n, plus(m, u))
COND(true, x, y, z) → PLUS(s(y), z)
PLUS(plus(n, m), u) → PLUS(m, u)
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))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(x0, 0)
d(x0, s(x1), x2)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
plus(plus(x0, x1), x2)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
PLUS(plus(n, m), u) → PLUS(n, plus(m, u))
COND(true, x, y, z) → PLUS(s(y), z)
PLUS(plus(n, m), u) → PLUS(m, u)
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))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(x0, 0)
d(x0, s(x1), x2)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
plus(plus(x0, x1), x2)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
PLUS(plus(n, m), u) → PLUS(n, plus(m, u))
PLUS(plus(n, m), u) → PLUS(m, u)
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))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(x0, 0)
d(x0, s(x1), x2)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
plus(plus(x0, x1), x2)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
PLUS(plus(n, m), u) → PLUS(n, plus(m, u))
PLUS(plus(n, m), u) → PLUS(m, u)
PLUS(n, s(m)) → PLUS(n, m)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(x0, 0)
d(x0, s(x1), x2)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
plus(plus(x0, x1), x2)
ge(x0, 0)
d(x0, s(x1), x2)
ge(0, s(x0))
ge(s(x0), s(x1))
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
PLUS(plus(n, m), u) → PLUS(n, plus(m, u))
PLUS(plus(n, m), u) → PLUS(m, u)
PLUS(n, s(m)) → PLUS(n, m)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
plus(plus(n, m), u) → plus(n, plus(m, u))
plus(x0, s(x1))
plus(x0, 0)
plus(plus(x0, x1), x2)
From the DPs we obtained the following set of size-change graphs:
↳ 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))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(x0, 0)
d(x0, s(x1), x2)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
plus(plus(x0, x1), x2)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
GE(s(u), s(v)) → GE(u, v)
ge(x0, 0)
d(x0, s(x1), x2)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
plus(plus(x0, x1), x2)
ge(x0, 0)
d(x0, s(x1), x2)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
plus(plus(x0, x1), x2)
↳ 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
↳ 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))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(x0, 0)
d(x0, s(x1), x2)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
plus(plus(x0, x1), x2)
↳ 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))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
ge(x0, 0)
d(x0, s(x1), x2)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
plus(plus(x0, x1), x2)
d(x0, s(x1), x2)
cond(false, x0, x1, x2)
cond(true, x0, x1, x2)
div(x0, s(x1))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ 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))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
ge(x0, 0)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(plus(x0, x1), x2)
D(x0, s(y1), 0) → COND(true, x0, y1, 0)
D(0, s(y1), s(x0)) → COND(false, 0, y1, s(x0))
D(s(x0), s(y1), s(x1)) → COND(ge(x0, x1), s(x0), y1, s(x1))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ NonInfProof
D(s(x0), s(y1), s(x1)) → COND(ge(x0, x1), s(x0), y1, s(x1))
COND(true, x, y, z) → D(x, s(y), plus(s(y), z))
D(x0, s(y1), 0) → COND(true, x0, y1, 0)
D(0, s(y1), s(x0)) → COND(false, 0, y1, s(x0))
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
ge(x0, 0)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(plus(x0, x1), x2)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ NonInfProof
D(s(x0), s(y1), s(x1)) → COND(ge(x0, x1), s(x0), y1, s(x1))
COND(true, x, y, z) → D(x, s(y), plus(s(y), z))
D(x0, s(y1), 0) → COND(true, x0, y1, 0)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
ge(x0, 0)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(plus(x0, x1), x2)
COND(true, y0, y1, s(x1)) → D(y0, s(y1), s(plus(s(y1), x1)))
COND(true, y0, y1, 0) → D(y0, s(y1), s(y1))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ NonInfProof
COND(true, y0, y1, s(x1)) → D(y0, s(y1), s(plus(s(y1), x1)))
COND(true, y0, y1, 0) → D(y0, s(y1), s(y1))
D(s(x0), s(y1), s(x1)) → COND(ge(x0, x1), s(x0), y1, s(x1))
D(x0, s(y1), 0) → COND(true, x0, y1, 0)
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
ge(x0, 0)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(plus(x0, x1), x2)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ NonInfProof
COND(true, y0, y1, s(x1)) → D(y0, s(y1), s(plus(s(y1), x1)))
D(s(x0), s(y1), s(x1)) → COND(ge(x0, x1), s(x0), y1, s(x1))
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
ge(x0, 0)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(plus(x0, x1), x2)
COND(true, s(z0), z1, s(z2)) → D(s(z0), s(z1), s(plus(s(z1), z2)))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ NonInfProof
COND(true, s(z0), z1, s(z2)) → D(s(z0), s(z1), s(plus(s(z1), z2)))
D(s(x0), s(y1), s(x1)) → COND(ge(x0, x1), s(x0), y1, s(x1))
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
ge(x0, 0)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(plus(x0, x1), x2)
POL(0) = 0
POL(COND(x1, x2, x3, x4)) = -1 - x1 + 2·x2 - x4
POL(D(x1, x2, x3)) = -1 + 2·x1 + x2 - x3
POL(c) = -1
POL(false) = 0
POL(ge(x1, x2)) = 0
POL(plus(x1, x2)) = x1 + x2
POL(s(x1)) = 2 + x1
POL(true) = 0
The following pairs are in Pbound:
D(x, s(y), z) → COND(ge(x, z), x, y, z)
The following rules are usable:
D(x, s(y), z) → COND(ge(x, z), x, y, z)
s(plus(n, m)) → plus(n, s(m))
true → ge(u, 0)
ge(u, v) → ge(s(u), s(v))
n → plus(n, 0)
plus(n, plus(m, u)) → plus(plus(n, m), u)
false → ge(0, s(v))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ NonInfProof
↳ QDP
↳ DependencyGraphProof
COND(true, x, y, z) → D(x, s(y), plus(s(y), z))
plus(n, 0) → n
plus(n, s(m)) → s(plus(n, m))
plus(plus(n, m), u) → plus(n, plus(m, u))
ge(u, 0) → true
ge(0, s(v)) → false
ge(s(u), s(v)) → ge(u, v)
ge(x0, 0)
plus(x0, s(x1))
ge(0, s(x0))
ge(s(x0), s(x1))
plus(x0, 0)
plus(plus(x0, x1), x2)