MAYBE 0.08/0.18 MAYBE 0.08/0.18 0.08/0.18 Problem: 0.08/0.18 -(x,0()) -> x 0.08/0.18 -(s(x),s(y)) -> -(x,y) 0.08/0.18 *(x,0()) -> 0() 0.08/0.18 *(x,s(y)) -> +(*(x,y),x) 0.08/0.18 if(true(),x,y) -> x 0.08/0.18 if(false(),x,y) -> y 0.08/0.18 odd(0()) -> false() 0.08/0.18 odd(s(0())) -> true() 0.08/0.18 odd(s(s(x))) -> odd(x) 0.08/0.18 half(0()) -> 0() 0.08/0.18 half(s(0())) -> 0() 0.08/0.18 half(s(s(x))) -> s(half(x)) 0.08/0.18 if(true(),x,y) -> true() 0.08/0.18 if(false(),x,y) -> false() 0.08/0.18 pow(x,y) -> f(x,y,s(0())) 0.08/0.18 f(x,0(),z) -> z 0.08/0.18 f(x,s(y),z) -> if(odd(s(y)),f(x,y,*(x,z)),f(*(x,x),half(s(y)),z)) 0.08/0.18 0.08/0.18 Proof: 0.08/0.18 Open 0.08/0.19 EOF