plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
DIV2(div2(x, y), z) -> TIMES2(y, z)
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
PR2(x, s1(s1(y))) -> DIVIDES2(s1(s1(y)), x)
DIVIDES2(y, x) -> TIMES2(div2(x, y), y)
DIVIDES2(y, x) -> EQ2(x, times2(div2(x, y), y))
PLUS2(s1(x), y) -> PLUS2(x, y)
TIMES2(s1(x), y) -> PLUS2(y, times2(x, y))
QUOT3(s1(x), s1(y), z) -> QUOT3(x, y, z)
EQ2(s1(x), s1(y)) -> EQ2(x, y)
DIV2(div2(x, y), z) -> DIV2(x, times2(y, z))
TIMES2(s1(x), y) -> TIMES2(x, y)
PR2(x, s1(s1(y))) -> IF3(divides2(s1(s1(y)), x), x, s1(y))
DIV2(x, y) -> QUOT3(x, y, y)
IF3(false, x, y) -> PR2(x, y)
DIVIDES2(y, x) -> DIV2(x, y)
PRIME1(s1(s1(x))) -> PR2(s1(s1(x)), s1(x))
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
DIV2(div2(x, y), z) -> TIMES2(y, z)
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
PR2(x, s1(s1(y))) -> DIVIDES2(s1(s1(y)), x)
DIVIDES2(y, x) -> TIMES2(div2(x, y), y)
DIVIDES2(y, x) -> EQ2(x, times2(div2(x, y), y))
PLUS2(s1(x), y) -> PLUS2(x, y)
TIMES2(s1(x), y) -> PLUS2(y, times2(x, y))
QUOT3(s1(x), s1(y), z) -> QUOT3(x, y, z)
EQ2(s1(x), s1(y)) -> EQ2(x, y)
DIV2(div2(x, y), z) -> DIV2(x, times2(y, z))
TIMES2(s1(x), y) -> TIMES2(x, y)
PR2(x, s1(s1(y))) -> IF3(divides2(s1(s1(y)), x), x, s1(y))
DIV2(x, y) -> QUOT3(x, y, y)
IF3(false, x, y) -> PR2(x, y)
DIVIDES2(y, x) -> DIV2(x, y)
PRIME1(s1(s1(x))) -> PR2(s1(s1(x)), s1(x))
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
EQ2(s1(x), s1(y)) -> EQ2(x, y)
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
EQ2(s1(x), s1(y)) -> EQ2(x, y)
POL(EQ2(x1, x2)) = x2
POL(s1(x1)) = 1 + x1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
↳ QDP
PLUS2(s1(x), y) -> PLUS2(x, y)
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PLUS2(s1(x), y) -> PLUS2(x, y)
POL(PLUS2(x1, x2)) = x1
POL(s1(x1)) = 1 + x1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
↳ QDP
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
TIMES2(s1(x), y) -> TIMES2(x, y)
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
TIMES2(s1(x), y) -> TIMES2(x, y)
POL(TIMES2(x1, x2)) = x1
POL(s1(x1)) = 1 + x1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
QUOT3(s1(x), s1(y), z) -> QUOT3(x, y, z)
DIV2(div2(x, y), z) -> DIV2(x, times2(y, z))
DIV2(x, y) -> QUOT3(x, y, y)
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
DIV2(div2(x, y), z) -> DIV2(x, times2(y, z))
Used ordering: Polynomial interpretation [21]:
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
QUOT3(s1(x), s1(y), z) -> QUOT3(x, y, z)
DIV2(x, y) -> QUOT3(x, y, y)
POL(0) = 0
POL(DIV2(x1, x2)) = x1
POL(QUOT3(x1, x2, x3)) = x1
POL(div2(x1, x2)) = 1 + x1
POL(plus2(x1, x2)) = 0
POL(s1(x1)) = x1
POL(times2(x1, x2)) = 0
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
QUOT3(s1(x), s1(y), z) -> QUOT3(x, y, z)
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
DIV2(x, y) -> QUOT3(x, y, y)
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
QUOT3(s1(x), s1(y), z) -> QUOT3(x, y, z)
Used ordering: Polynomial interpretation [21]:
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
DIV2(x, y) -> QUOT3(x, y, y)
POL(0) = 0
POL(DIV2(x1, x2)) = x1
POL(QUOT3(x1, x2, x3)) = x1
POL(s1(x1)) = 1 + x1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
DIV2(x, y) -> QUOT3(x, y, y)
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
Used ordering: Polynomial interpretation [21]:
DIV2(x, y) -> QUOT3(x, y, y)
POL(0) = 1
POL(DIV2(x1, x2)) = x2
POL(QUOT3(x1, x2, x3)) = x2
POL(s1(x1)) = 0
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
DIV2(x, y) -> QUOT3(x, y, y)
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
PR2(x, s1(s1(y))) -> IF3(divides2(s1(s1(y)), x), x, s1(y))
IF3(false, x, y) -> PR2(x, y)
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)