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