(STRATEGY INNERMOST) (VAR x y z) (DATATYPES A = µX.< 0, true, false, s(X) >) (SIGNATURES division :: [A x A] -> A div :: [A x A x A] -> A if :: [A x A x A x A] -> A minus :: [A x A] -> A lt :: [A x A] -> A inc :: [A] -> A) (RULES division(x,y) -> div(x,y,0()) div(x,y,z) -> if(lt(x,y) ,x ,y ,inc(z)) if(true(),x,y,z) -> z if(false(),x,s(y),z) -> div(minus(x,s(y)),s(y),z) minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) lt(x,0()) -> false() lt(0(),s(y)) -> true() lt(s(x),s(y)) -> lt(x,y) inc(0()) -> s(0()) inc(s(x)) -> s(inc(x)))