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