0 QTRS
↳1 Overlay + Local Confluence (⇔)
↳2 QTRS
↳3 DependencyPairsProof (⇔)
↳4 QDP
↳5 DependencyGraphProof (⇔)
↳6 AND
↳7 QDP
↳8 QDPOrderProof (⇔)
↳9 QDP
↳10 DependencyGraphProof (⇔)
↳11 TRUE
↳12 QDP
↳13 QDPOrderProof (⇔)
↳14 QDP
↳15 PisEmptyProof (⇔)
↳16 TRUE
↳17 QDP
gt(s(x), 0) → true
gt(0, y) → false
gt(s(x), s(y)) → gt(x, y)
divides(x, y) → div(x, y, y)
div(0, 0, z) → true
div(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))
div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))
test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)
if1(false, x, y) → true
if2(true, x, y) → false
if2(false, x, y) → test(x, s(y))
gt(s(x), 0) → true
gt(0, y) → false
gt(s(x), s(y)) → gt(x, y)
divides(x, y) → div(x, y, y)
div(0, 0, z) → true
div(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))
div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))
test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)
if1(false, x, y) → true
if2(true, x, y) → false
if2(false, x, y) → test(x, s(y))
gt(s(x0), 0)
gt(0, x0)
gt(s(x0), s(x1))
divides(x0, x1)
div(0, 0, x0)
div(0, s(x0), x1)
div(s(x0), 0, s(x1))
div(s(x0), s(x1), x2)
prime(x0)
test(x0, x1)
if1(true, x0, x1)
if1(false, x0, x1)
if2(true, x0, x1)
if2(false, x0, x1)
GT(s(x), s(y)) → GT(x, y)
DIVIDES(x, y) → DIV(x, y, y)
DIV(s(x), 0, s(z)) → DIV(s(x), s(z), s(z))
DIV(s(x), s(y), z) → DIV(x, y, z)
PRIME(x) → TEST(x, s(s(0)))
TEST(x, y) → IF1(gt(x, y), x, y)
TEST(x, y) → GT(x, y)
IF1(true, x, y) → IF2(divides(x, y), x, y)
IF1(true, x, y) → DIVIDES(x, y)
IF2(false, x, y) → TEST(x, s(y))
gt(s(x), 0) → true
gt(0, y) → false
gt(s(x), s(y)) → gt(x, y)
divides(x, y) → div(x, y, y)
div(0, 0, z) → true
div(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))
div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))
test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)
if1(false, x, y) → true
if2(true, x, y) → false
if2(false, x, y) → test(x, s(y))
gt(s(x0), 0)
gt(0, x0)
gt(s(x0), s(x1))
divides(x0, x1)
div(0, 0, x0)
div(0, s(x0), x1)
div(s(x0), 0, s(x1))
div(s(x0), s(x1), x2)
prime(x0)
test(x0, x1)
if1(true, x0, x1)
if1(false, x0, x1)
if2(true, x0, x1)
if2(false, x0, x1)
DIV(s(x), s(y), z) → DIV(x, y, z)
DIV(s(x), 0, s(z)) → DIV(s(x), s(z), s(z))
gt(s(x), 0) → true
gt(0, y) → false
gt(s(x), s(y)) → gt(x, y)
divides(x, y) → div(x, y, y)
div(0, 0, z) → true
div(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))
div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))
test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)
if1(false, x, y) → true
if2(true, x, y) → false
if2(false, x, y) → test(x, s(y))
gt(s(x0), 0)
gt(0, x0)
gt(s(x0), s(x1))
divides(x0, x1)
div(0, 0, x0)
div(0, s(x0), x1)
div(s(x0), 0, s(x1))
div(s(x0), s(x1), x2)
prime(x0)
test(x0, x1)
if1(true, x0, x1)
if1(false, x0, x1)
if2(true, x0, x1)
if2(false, x0, x1)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
DIV(s(x), s(y), z) → DIV(x, y, z)
0 > [DIV2, s1]
DIV2: multiset
s1: multiset
0: multiset
DIV(s(x), 0, s(z)) → DIV(s(x), s(z), s(z))
gt(s(x), 0) → true
gt(0, y) → false
gt(s(x), s(y)) → gt(x, y)
divides(x, y) → div(x, y, y)
div(0, 0, z) → true
div(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))
div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))
test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)
if1(false, x, y) → true
if2(true, x, y) → false
if2(false, x, y) → test(x, s(y))
gt(s(x0), 0)
gt(0, x0)
gt(s(x0), s(x1))
divides(x0, x1)
div(0, 0, x0)
div(0, s(x0), x1)
div(s(x0), 0, s(x1))
div(s(x0), s(x1), x2)
prime(x0)
test(x0, x1)
if1(true, x0, x1)
if1(false, x0, x1)
if2(true, x0, x1)
if2(false, x0, x1)
GT(s(x), s(y)) → GT(x, y)
gt(s(x), 0) → true
gt(0, y) → false
gt(s(x), s(y)) → gt(x, y)
divides(x, y) → div(x, y, y)
div(0, 0, z) → true
div(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))
div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))
test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)
if1(false, x, y) → true
if2(true, x, y) → false
if2(false, x, y) → test(x, s(y))
gt(s(x0), 0)
gt(0, x0)
gt(s(x0), s(x1))
divides(x0, x1)
div(0, 0, x0)
div(0, s(x0), x1)
div(s(x0), 0, s(x1))
div(s(x0), s(x1), x2)
prime(x0)
test(x0, x1)
if1(true, x0, x1)
if1(false, x0, x1)
if2(true, x0, x1)
if2(false, x0, x1)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
GT(s(x), s(y)) → GT(x, y)
trivial
GT1: [1]
s1: multiset
gt(s(x), 0) → true
gt(0, y) → false
gt(s(x), s(y)) → gt(x, y)
divides(x, y) → div(x, y, y)
div(0, 0, z) → true
div(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))
div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))
test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)
if1(false, x, y) → true
if2(true, x, y) → false
if2(false, x, y) → test(x, s(y))
gt(s(x0), 0)
gt(0, x0)
gt(s(x0), s(x1))
divides(x0, x1)
div(0, 0, x0)
div(0, s(x0), x1)
div(s(x0), 0, s(x1))
div(s(x0), s(x1), x2)
prime(x0)
test(x0, x1)
if1(true, x0, x1)
if1(false, x0, x1)
if2(true, x0, x1)
if2(false, x0, x1)
TEST(x, y) → IF1(gt(x, y), x, y)
IF1(true, x, y) → IF2(divides(x, y), x, y)
IF2(false, x, y) → TEST(x, s(y))
gt(s(x), 0) → true
gt(0, y) → false
gt(s(x), s(y)) → gt(x, y)
divides(x, y) → div(x, y, y)
div(0, 0, z) → true
div(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))
div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))
test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)
if1(false, x, y) → true
if2(true, x, y) → false
if2(false, x, y) → test(x, s(y))
gt(s(x0), 0)
gt(0, x0)
gt(s(x0), s(x1))
divides(x0, x1)
div(0, 0, x0)
div(0, s(x0), x1)
div(s(x0), 0, s(x1))
div(s(x0), s(x1), x2)
prime(x0)
test(x0, x1)
if1(true, x0, x1)
if1(false, x0, x1)
if2(true, x0, x1)
if2(false, x0, x1)