R
↳Dependency Pair Analysis
-'(s(x), s(y)) -> -'(x, y)
*'(x, s(y)) -> *'(x, y)
ODD(s(s(x))) -> ODD(x)
HALF(s(s(x))) -> HALF(x)
POW(x, y) -> F(x, y, s(0))
F(x, s(y), z) -> IF(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
F(x, s(y), z) -> ODD(s(y))
F(x, s(y), z) -> F(x, y, *(x, z))
F(x, s(y), z) -> *'(x, z)
F(x, s(y), z) -> F(*(x, x), half(s(y)), z)
F(x, s(y), z) -> *'(x, x)
F(x, s(y), z) -> HALF(s(y))
R
↳DPs
→DP Problem 1
↳Forward Instantiation Transformation
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
-'(s(x), s(y)) -> -'(x, y)
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
one new Dependency Pair is created:
-'(s(x), s(y)) -> -'(x, y)
-'(s(s(x'')), s(s(y''))) -> -'(s(x''), s(y''))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 6
↳Forward Instantiation Transformation
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
-'(s(s(x'')), s(s(y''))) -> -'(s(x''), s(y''))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
one new Dependency Pair is created:
-'(s(s(x'')), s(s(y''))) -> -'(s(x''), s(y''))
-'(s(s(s(x''''))), s(s(s(y'''')))) -> -'(s(s(x'''')), s(s(y'''')))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 6
↳FwdInst
...
→DP Problem 7
↳Argument Filtering and Ordering
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
-'(s(s(s(x''''))), s(s(s(y'''')))) -> -'(s(s(x'''')), s(s(y'''')))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
-'(s(s(s(x''''))), s(s(s(y'''')))) -> -'(s(s(x'''')), s(s(y'''')))
trivial
-'(x1, x2) -> -'(x1, x2)
s(x1) -> s(x1)
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 6
↳FwdInst
...
→DP Problem 8
↳Dependency Graph
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳Forward Instantiation Transformation
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
*'(x, s(y)) -> *'(x, y)
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
one new Dependency Pair is created:
*'(x, s(y)) -> *'(x, y)
*'(x'', s(s(y''))) -> *'(x'', s(y''))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 9
↳Forward Instantiation Transformation
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
*'(x'', s(s(y''))) -> *'(x'', s(y''))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
one new Dependency Pair is created:
*'(x'', s(s(y''))) -> *'(x'', s(y''))
*'(x'''', s(s(s(y'''')))) -> *'(x'''', s(s(y'''')))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 9
↳FwdInst
...
→DP Problem 10
↳Argument Filtering and Ordering
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
*'(x'''', s(s(s(y'''')))) -> *'(x'''', s(s(y'''')))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
*'(x'''', s(s(s(y'''')))) -> *'(x'''', s(s(y'''')))
trivial
*'(x1, x2) -> *'(x1, x2)
s(x1) -> s(x1)
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 9
↳FwdInst
...
→DP Problem 11
↳Dependency Graph
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳Forward Instantiation Transformation
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
ODD(s(s(x))) -> ODD(x)
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
one new Dependency Pair is created:
ODD(s(s(x))) -> ODD(x)
ODD(s(s(s(s(x''))))) -> ODD(s(s(x'')))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 12
↳Forward Instantiation Transformation
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
ODD(s(s(s(s(x''))))) -> ODD(s(s(x'')))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
one new Dependency Pair is created:
ODD(s(s(s(s(x''))))) -> ODD(s(s(x'')))
ODD(s(s(s(s(s(s(x''''))))))) -> ODD(s(s(s(s(x'''')))))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 12
↳FwdInst
...
→DP Problem 13
↳Argument Filtering and Ordering
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
ODD(s(s(s(s(s(s(x''''))))))) -> ODD(s(s(s(s(x'''')))))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
ODD(s(s(s(s(s(s(x''''))))))) -> ODD(s(s(s(s(x'''')))))
trivial
ODD(x1) -> ODD(x1)
s(x1) -> s(x1)
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 12
↳FwdInst
...
→DP Problem 14
↳Dependency Graph
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳Forward Instantiation Transformation
→DP Problem 5
↳Nar
HALF(s(s(x))) -> HALF(x)
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
one new Dependency Pair is created:
HALF(s(s(x))) -> HALF(x)
HALF(s(s(s(s(x''))))) -> HALF(s(s(x'')))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 15
↳Forward Instantiation Transformation
→DP Problem 5
↳Nar
HALF(s(s(s(s(x''))))) -> HALF(s(s(x'')))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
one new Dependency Pair is created:
HALF(s(s(s(s(x''))))) -> HALF(s(s(x'')))
HALF(s(s(s(s(s(s(x''''))))))) -> HALF(s(s(s(s(x'''')))))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 15
↳FwdInst
...
→DP Problem 16
↳Argument Filtering and Ordering
→DP Problem 5
↳Nar
HALF(s(s(s(s(s(s(x''''))))))) -> HALF(s(s(s(s(x'''')))))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
HALF(s(s(s(s(s(s(x''''))))))) -> HALF(s(s(s(s(x'''')))))
trivial
HALF(x1) -> HALF(x1)
s(x1) -> s(x1)
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 15
↳FwdInst
...
→DP Problem 17
↳Dependency Graph
→DP Problem 5
↳Nar
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Narrowing Transformation
F(x, s(y), z) -> F(*(x, x), half(s(y)), z)
F(x, s(y), z) -> F(x, y, *(x, z))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
four new Dependency Pairs are created:
F(x, s(y), z) -> F(*(x, x), half(s(y)), z)
F(0, s(y), z) -> F(0, half(s(y)), z)
F(s(y''), s(y), z) -> F(+(*(s(y''), y''), s(y'')), half(s(y)), z)
F(x, s(0), z) -> F(*(x, x), 0, z)
F(x, s(s(x'')), z) -> F(*(x, x), s(half(x'')), z)
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
→DP Problem 18
↳Narrowing Transformation
F(s(y''), s(y), z) -> F(+(*(s(y''), y''), s(y'')), half(s(y)), z)
F(x, s(s(x'')), z) -> F(*(x, x), s(half(x'')), z)
F(0, s(y), z) -> F(0, half(s(y)), z)
F(x, s(y), z) -> F(x, y, *(x, z))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
two new Dependency Pairs are created:
F(0, s(y), z) -> F(0, half(s(y)), z)
F(0, s(0), z) -> F(0, 0, z)
F(0, s(s(x')), z) -> F(0, s(half(x')), z)
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
→DP Problem 18
↳Nar
...
→DP Problem 19
↳Narrowing Transformation
F(0, s(s(x')), z) -> F(0, s(half(x')), z)
F(x, s(s(x'')), z) -> F(*(x, x), s(half(x'')), z)
F(x, s(y), z) -> F(x, y, *(x, z))
F(s(y''), s(y), z) -> F(+(*(s(y''), y''), s(y'')), half(s(y)), z)
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
four new Dependency Pairs are created:
F(s(y''), s(y), z) -> F(+(*(s(y''), y''), s(y'')), half(s(y)), z)
F(s(0), s(y), z) -> F(+(0, s(0)), half(s(y)), z)
F(s(s(y''')), s(y), z) -> F(+(+(*(s(s(y''')), y'''), s(s(y'''))), s(s(y'''))), half(s(y)), z)
F(s(y''), s(0), z) -> F(+(*(s(y''), y''), s(y'')), 0, z)
F(s(y''), s(s(x')), z) -> F(+(*(s(y''), y''), s(y'')), s(half(x')), z)
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
→DP Problem 18
↳Nar
...
→DP Problem 20
↳Forward Instantiation Transformation
F(s(y''), s(s(x')), z) -> F(+(*(s(y''), y''), s(y'')), s(half(x')), z)
F(s(s(y''')), s(y), z) -> F(+(+(*(s(s(y''')), y'''), s(s(y'''))), s(s(y'''))), half(s(y)), z)
F(s(0), s(y), z) -> F(+(0, s(0)), half(s(y)), z)
F(x, s(s(x'')), z) -> F(*(x, x), s(half(x'')), z)
F(x, s(y), z) -> F(x, y, *(x, z))
F(0, s(s(x')), z) -> F(0, s(half(x')), z)
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
six new Dependency Pairs are created:
F(x, s(y), z) -> F(x, y, *(x, z))
F(x'', s(s(y'')), z'') -> F(x'', s(y''), *(x'', z''))
F(x'', s(s(s(x''''))), z'') -> F(x'', s(s(x'''')), *(x'', z''))
F(x', s(s(s(x'0'))), z'') -> F(x', s(s(x'0')), *(x', z''))
F(s(x'''), s(s(y'')), z'') -> F(s(x'''), s(y''), *(s(x'''), z''))
F(s(s(y''''')), s(s(y'')), z'') -> F(s(s(y''''')), s(y''), *(s(s(y''''')), z''))
F(s(y''''), s(s(s(x'''))), z'') -> F(s(y''''), s(s(x''')), *(s(y''''), z''))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
→DP Problem 18
↳Nar
...
→DP Problem 21
↳Narrowing Transformation
F(s(y''''), s(s(s(x'''))), z'') -> F(s(y''''), s(s(x''')), *(s(y''''), z''))
F(s(s(y''''')), s(s(y'')), z'') -> F(s(s(y''''')), s(y''), *(s(s(y''''')), z''))
F(s(x'''), s(s(y'')), z'') -> F(s(x'''), s(y''), *(s(x'''), z''))
F(x', s(s(s(x'0'))), z'') -> F(x', s(s(x'0')), *(x', z''))
F(s(s(y''')), s(y), z) -> F(+(+(*(s(s(y''')), y'''), s(s(y'''))), s(s(y'''))), half(s(y)), z)
F(x'', s(s(s(x''''))), z'') -> F(x'', s(s(x'''')), *(x'', z''))
F(s(0), s(y), z) -> F(+(0, s(0)), half(s(y)), z)
F(x'', s(s(y'')), z'') -> F(x'', s(y''), *(x'', z''))
F(0, s(s(x')), z) -> F(0, s(half(x')), z)
F(x, s(s(x'')), z) -> F(*(x, x), s(half(x'')), z)
F(s(y''), s(s(x')), z) -> F(+(*(s(y''), y''), s(y'')), s(half(x')), z)
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
five new Dependency Pairs are created:
F(x, s(s(x'')), z) -> F(*(x, x), s(half(x'')), z)
F(0, s(s(x'')), z) -> F(0, s(half(x'')), z)
F(s(y'), s(s(x'')), z) -> F(+(*(s(y'), y'), s(y')), s(half(x'')), z)
F(x, s(s(0)), z) -> F(*(x, x), s(0), z)
F(x, s(s(s(0))), z) -> F(*(x, x), s(0), z)
F(x, s(s(s(s(x''')))), z) -> F(*(x, x), s(s(half(x'''))), z)
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
→DP Problem 18
↳Nar
...
→DP Problem 22
↳Forward Instantiation Transformation
F(0, s(s(x'')), z) -> F(0, s(half(x'')), z)
F(s(y'), s(s(x'')), z) -> F(+(*(s(y'), y'), s(y')), s(half(x'')), z)
F(s(s(y''''')), s(s(y'')), z'') -> F(s(s(y''''')), s(y''), *(s(s(y''''')), z''))
F(s(x'''), s(s(y'')), z'') -> F(s(x'''), s(y''), *(s(x'''), z''))
F(x, s(s(s(s(x''')))), z) -> F(*(x, x), s(s(half(x'''))), z)
F(x, s(s(s(0))), z) -> F(*(x, x), s(0), z)
F(x, s(s(0)), z) -> F(*(x, x), s(0), z)
F(s(y''), s(s(x')), z) -> F(+(*(s(y''), y''), s(y'')), s(half(x')), z)
F(x', s(s(s(x'0'))), z'') -> F(x', s(s(x'0')), *(x', z''))
F(s(s(y''')), s(y), z) -> F(+(+(*(s(s(y''')), y'''), s(s(y'''))), s(s(y'''))), half(s(y)), z)
F(x'', s(s(s(x''''))), z'') -> F(x'', s(s(x'''')), *(x'', z''))
F(0, s(s(x')), z) -> F(0, s(half(x')), z)
F(x'', s(s(y'')), z'') -> F(x'', s(y''), *(x'', z''))
F(s(0), s(y), z) -> F(+(0, s(0)), half(s(y)), z)
F(s(y''''), s(s(s(x'''))), z'') -> F(s(y''''), s(s(x''')), *(s(y''''), z''))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
12 new Dependency Pairs are created:
F(x'', s(s(y'')), z'') -> F(x'', s(y''), *(x'', z''))
F(x'''', s(s(s(x'''''))), z''') -> F(x'''', s(s(x''''')), *(x'''', z'''))
F(s(x'''), s(s(y''')), z''') -> F(s(x'''), s(y'''), *(s(x'''), z'''))
F(s(s(y''''')), s(s(y''')), z''') -> F(s(s(y''''')), s(y'''), *(s(s(y''''')), z'''))
F(s(y''''), s(s(s(x''''))), z''') -> F(s(y''''), s(s(x'''')), *(s(y''''), z'''))
F(x'''', s(s(s(y''''))), z'''') -> F(x'''', s(s(y'''')), *(x'''', z''''))
F(x'''', s(s(s(s(x'''''')))), z'''') -> F(x'''', s(s(s(x''''''))), *(x'''', z''''))
F(x'''', s(s(s(s(x'0''')))), z'''') -> F(x'''', s(s(s(x'0'''))), *(x'''', z''''))
F(s(x'''''), s(s(s(y''''))), z'''') -> F(s(x'''''), s(s(y'''')), *(s(x'''''), z''''))
F(s(s(y''''''')), s(s(s(y''''))), z'''') -> F(s(s(y''''''')), s(s(y'''')), *(s(s(y''''''')), z''''))
F(s(y''''''), s(s(s(s(x''''')))), z'''') -> F(s(y''''''), s(s(s(x'''''))), *(s(y''''''), z''''))
F(x'''', s(s(s(s(x''''')))), z''') -> F(x'''', s(s(s(x'''''))), *(x'''', z'''))
F(x''', s(s(s(s(s(x'''''))))), z''') -> F(x''', s(s(s(s(x''''')))), *(x''', z'''))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
→DP Problem 18
↳Nar
...
→DP Problem 23
↳Forward Instantiation Transformation
F(x''', s(s(s(s(s(x'''''))))), z''') -> F(x''', s(s(s(s(x''''')))), *(x''', z'''))
F(x'''', s(s(s(s(x''''')))), z''') -> F(x'''', s(s(s(x'''''))), *(x'''', z'''))
F(s(y''''''), s(s(s(s(x''''')))), z'''') -> F(s(y''''''), s(s(s(x'''''))), *(s(y''''''), z''''))
F(s(s(y''''''')), s(s(s(y''''))), z'''') -> F(s(s(y''''''')), s(s(y'''')), *(s(s(y''''''')), z''''))
F(s(x'''''), s(s(s(y''''))), z'''') -> F(s(x'''''), s(s(y'''')), *(s(x'''''), z''''))
F(x'''', s(s(s(s(x'0''')))), z'''') -> F(x'''', s(s(s(x'0'''))), *(x'''', z''''))
F(x'''', s(s(s(s(x'''''')))), z'''') -> F(x'''', s(s(s(x''''''))), *(x'''', z''''))
F(s(y''''), s(s(s(x''''))), z''') -> F(s(y''''), s(s(x'''')), *(s(y''''), z'''))
F(s(s(y''''')), s(s(y''')), z''') -> F(s(s(y''''')), s(y'''), *(s(s(y''''')), z'''))
F(s(x'''), s(s(y''')), z''') -> F(s(x'''), s(y'''), *(s(x'''), z'''))
F(x'''', s(s(s(y''''))), z'''') -> F(x'''', s(s(y'''')), *(x'''', z''''))
F(s(y'), s(s(x'')), z) -> F(+(*(s(y'), y'), s(y')), s(half(x'')), z)
F(s(y''''), s(s(s(x'''))), z'') -> F(s(y''''), s(s(x''')), *(s(y''''), z''))
F(s(s(y''''')), s(s(y'')), z'') -> F(s(s(y''''')), s(y''), *(s(s(y''''')), z''))
F(s(x'''), s(s(y'')), z'') -> F(s(x'''), s(y''), *(s(x'''), z''))
F(x'''', s(s(s(x'''''))), z''') -> F(x'''', s(s(x''''')), *(x'''', z'''))
F(s(y''), s(s(x')), z) -> F(+(*(s(y''), y''), s(y'')), s(half(x')), z)
F(x, s(s(s(s(x''')))), z) -> F(*(x, x), s(s(half(x'''))), z)
F(x, s(s(s(0))), z) -> F(*(x, x), s(0), z)
F(x, s(s(0)), z) -> F(*(x, x), s(0), z)
F(s(s(y''')), s(y), z) -> F(+(+(*(s(s(y''')), y'''), s(s(y'''))), s(s(y'''))), half(s(y)), z)
F(x', s(s(s(x'0'))), z'') -> F(x', s(s(x'0')), *(x', z''))
F(s(0), s(y), z) -> F(+(0, s(0)), half(s(y)), z)
F(x'', s(s(s(x''''))), z'') -> F(x'', s(s(x'''')), *(x'', z''))
F(0, s(s(x')), z) -> F(0, s(half(x')), z)
F(0, s(s(x'')), z) -> F(0, s(half(x'')), z)
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
no new Dependency Pairs are created.
F(x, s(s(0)), z) -> F(*(x, x), s(0), z)
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
→DP Problem 18
↳Nar
...
→DP Problem 24
↳Forward Instantiation Transformation
F(x'''', s(s(s(s(x''''')))), z''') -> F(x'''', s(s(s(x'''''))), *(x'''', z'''))
F(s(y''''''), s(s(s(s(x''''')))), z'''') -> F(s(y''''''), s(s(s(x'''''))), *(s(y''''''), z''''))
F(s(s(y''''''')), s(s(s(y''''))), z'''') -> F(s(s(y''''''')), s(s(y'''')), *(s(s(y''''''')), z''''))
F(s(x'''''), s(s(s(y''''))), z'''') -> F(s(x'''''), s(s(y'''')), *(s(x'''''), z''''))
F(x'''', s(s(s(s(x'0''')))), z'''') -> F(x'''', s(s(s(x'0'''))), *(x'''', z''''))
F(s(y''''), s(s(s(x''''))), z''') -> F(s(y''''), s(s(x'''')), *(s(y''''), z'''))
F(s(s(y''''')), s(s(y''')), z''') -> F(s(s(y''''')), s(y'''), *(s(s(y''''')), z'''))
F(s(x'''), s(s(y''')), z''') -> F(s(x'''), s(y'''), *(s(x'''), z'''))
F(x'''', s(s(s(s(x'''''')))), z'''') -> F(x'''', s(s(s(x''''''))), *(x'''', z''''))
F(0, s(s(x'')), z) -> F(0, s(half(x'')), z)
F(x'''', s(s(s(y''''))), z'''') -> F(x'''', s(s(y'''')), *(x'''', z''''))
F(s(y'), s(s(x'')), z) -> F(+(*(s(y'), y'), s(y')), s(half(x'')), z)
F(s(y''''), s(s(s(x'''))), z'') -> F(s(y''''), s(s(x''')), *(s(y''''), z''))
F(s(s(y''''')), s(s(y'')), z'') -> F(s(s(y''''')), s(y''), *(s(s(y''''')), z''))
F(s(x'''), s(s(y'')), z'') -> F(s(x'''), s(y''), *(s(x'''), z''))
F(x'''', s(s(s(x'''''))), z''') -> F(x'''', s(s(x''''')), *(x'''', z'''))
F(s(y''), s(s(x')), z) -> F(+(*(s(y''), y''), s(y'')), s(half(x')), z)
F(x, s(s(s(s(x''')))), z) -> F(*(x, x), s(s(half(x'''))), z)
F(x, s(s(s(0))), z) -> F(*(x, x), s(0), z)
F(s(s(y''')), s(y), z) -> F(+(+(*(s(s(y''')), y'''), s(s(y'''))), s(s(y'''))), half(s(y)), z)
F(x', s(s(s(x'0'))), z'') -> F(x', s(s(x'0')), *(x', z''))
F(s(0), s(y), z) -> F(+(0, s(0)), half(s(y)), z)
F(x'', s(s(s(x''''))), z'') -> F(x'', s(s(x'''')), *(x'', z''))
F(0, s(s(x')), z) -> F(0, s(half(x')), z)
F(x''', s(s(s(s(s(x'''''))))), z''') -> F(x''', s(s(s(s(x''''')))), *(x''', z'''))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
no new Dependency Pairs are created.
F(x, s(s(s(0))), z) -> F(*(x, x), s(0), z)
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
→DP Problem 18
↳Nar
...
→DP Problem 25
↳Argument Filtering and Ordering
F(x''', s(s(s(s(s(x'''''))))), z''') -> F(x''', s(s(s(s(x''''')))), *(x''', z'''))
F(s(y''''''), s(s(s(s(x''''')))), z'''') -> F(s(y''''''), s(s(s(x'''''))), *(s(y''''''), z''''))
F(s(s(y''''''')), s(s(s(y''''))), z'''') -> F(s(s(y''''''')), s(s(y'''')), *(s(s(y''''''')), z''''))
F(s(x'''''), s(s(s(y''''))), z'''') -> F(s(x'''''), s(s(y'''')), *(s(x'''''), z''''))
F(x'''', s(s(s(s(x'0''')))), z'''') -> F(x'''', s(s(s(x'0'''))), *(x'''', z''''))
F(s(y''''), s(s(s(x''''))), z''') -> F(s(y''''), s(s(x'''')), *(s(y''''), z'''))
F(s(s(y''''')), s(s(y''')), z''') -> F(s(s(y''''')), s(y'''), *(s(s(y''''')), z'''))
F(s(x'''), s(s(y''')), z''') -> F(s(x'''), s(y'''), *(s(x'''), z'''))
F(x'''', s(s(s(s(x'''''')))), z'''') -> F(x'''', s(s(s(x''''''))), *(x'''', z''''))
F(0, s(s(x'')), z) -> F(0, s(half(x'')), z)
F(x'''', s(s(s(y''''))), z'''') -> F(x'''', s(s(y'''')), *(x'''', z''''))
F(s(y'), s(s(x'')), z) -> F(+(*(s(y'), y'), s(y')), s(half(x'')), z)
F(s(y''''), s(s(s(x'''))), z'') -> F(s(y''''), s(s(x''')), *(s(y''''), z''))
F(s(s(y''''')), s(s(y'')), z'') -> F(s(s(y''''')), s(y''), *(s(s(y''''')), z''))
F(s(x'''), s(s(y'')), z'') -> F(s(x'''), s(y''), *(s(x'''), z''))
F(x'''', s(s(s(x'''''))), z''') -> F(x'''', s(s(x''''')), *(x'''', z'''))
F(s(y''), s(s(x')), z) -> F(+(*(s(y''), y''), s(y'')), s(half(x')), z)
F(x, s(s(s(s(x''')))), z) -> F(*(x, x), s(s(half(x'''))), z)
F(s(s(y''')), s(y), z) -> F(+(+(*(s(s(y''')), y'''), s(s(y'''))), s(s(y'''))), half(s(y)), z)
F(x', s(s(s(x'0'))), z'') -> F(x', s(s(x'0')), *(x', z''))
F(s(0), s(y), z) -> F(+(0, s(0)), half(s(y)), z)
F(x'', s(s(s(x''''))), z'') -> F(x'', s(s(x'''')), *(x'', z''))
F(0, s(s(x')), z) -> F(0, s(half(x')), z)
F(x'''', s(s(s(s(x''''')))), z''') -> F(x'''', s(s(s(x'''''))), *(x'''', z'''))
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost
F(x''', s(s(s(s(s(x'''''))))), z''') -> F(x''', s(s(s(s(x''''')))), *(x''', z'''))
F(s(y''''''), s(s(s(s(x''''')))), z'''') -> F(s(y''''''), s(s(s(x'''''))), *(s(y''''''), z''''))
F(s(s(y''''''')), s(s(s(y''''))), z'''') -> F(s(s(y''''''')), s(s(y'''')), *(s(s(y''''''')), z''''))
F(s(x'''''), s(s(s(y''''))), z'''') -> F(s(x'''''), s(s(y'''')), *(s(x'''''), z''''))
F(x'''', s(s(s(s(x'0''')))), z'''') -> F(x'''', s(s(s(x'0'''))), *(x'''', z''''))
F(s(y''''), s(s(s(x''''))), z''') -> F(s(y''''), s(s(x'''')), *(s(y''''), z'''))
F(s(s(y''''')), s(s(y''')), z''') -> F(s(s(y''''')), s(y'''), *(s(s(y''''')), z'''))
F(s(x'''), s(s(y''')), z''') -> F(s(x'''), s(y'''), *(s(x'''), z'''))
F(x'''', s(s(s(s(x'''''')))), z'''') -> F(x'''', s(s(s(x''''''))), *(x'''', z''''))
F(0, s(s(x'')), z) -> F(0, s(half(x'')), z)
F(x'''', s(s(s(y''''))), z'''') -> F(x'''', s(s(y'''')), *(x'''', z''''))
F(s(y'), s(s(x'')), z) -> F(+(*(s(y'), y'), s(y')), s(half(x'')), z)
F(s(y''''), s(s(s(x'''))), z'') -> F(s(y''''), s(s(x''')), *(s(y''''), z''))
F(s(s(y''''')), s(s(y'')), z'') -> F(s(s(y''''')), s(y''), *(s(s(y''''')), z''))
F(s(x'''), s(s(y'')), z'') -> F(s(x'''), s(y''), *(s(x'''), z''))
F(x'''', s(s(s(x'''''))), z''') -> F(x'''', s(s(x''''')), *(x'''', z'''))
F(s(y''), s(s(x')), z) -> F(+(*(s(y''), y''), s(y'')), s(half(x')), z)
F(x, s(s(s(s(x''')))), z) -> F(*(x, x), s(s(half(x'''))), z)
F(s(s(y''')), s(y), z) -> F(+(+(*(s(s(y''')), y'''), s(s(y'''))), s(s(y'''))), half(s(y)), z)
F(x', s(s(s(x'0'))), z'') -> F(x', s(s(x'0')), *(x', z''))
F(s(0), s(y), z) -> F(+(0, s(0)), half(s(y)), z)
F(x'', s(s(s(x''''))), z'') -> F(x'', s(s(x'''')), *(x'', z''))
F(0, s(s(x')), z) -> F(0, s(half(x')), z)
F(x'''', s(s(s(s(x''''')))), z''') -> F(x'''', s(s(s(x'''''))), *(x'''', z'''))
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
F > half > {+, 0}
* > {+, 0}
s > half > {+, 0}
F(x1, x2, x3) -> F(x1, x2, x3)
s(x1) -> s(x1)
*(x1, x2) -> x1
half(x1) -> half(x1)
+(x1, x2) -> +
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 3
↳FwdInst
→DP Problem 4
↳FwdInst
→DP Problem 5
↳Nar
→DP Problem 18
↳Nar
...
→DP Problem 26
↳Dependency Graph
-(x, 0) -> x
-(s(x), s(y)) -> -(x, y)
*(x, 0) -> 0
*(x, s(y)) -> +(*(x, y), x)
if(true, x, y) -> x
if(false, x, y) -> y
if(true, x, y) -> true
if(false, x, y) -> false
odd(0) -> false
odd(s(0)) -> true
odd(s(s(x))) -> odd(x)
half(0) -> 0
half(s(0)) -> 0
half(s(s(x))) -> s(half(x))
pow(x, y) -> f(x, y, s(0))
f(x, 0, z) -> z
f(x, s(y), z) -> if(odd(s(y)), f(x, y, *(x, z)), f(*(x, x), half(s(y)), z))
innermost