(STRATEGY INNERMOST) (VAR u x y z) (DATATYPES A = µX.< 0, s(X), true, false >) (SIGNATURES minus :: [A x A] -> A le :: [A x A] -> A if :: [A x A x A] -> A perfectp :: [A] -> A f :: [A x A x A x A] -> A) (RULES minus(0(),y) -> 0() minus(s(x),0()) -> s(x) minus(s(x),s(y)) -> minus(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) if(true(),x,y) -> x if(false(),x,y) -> y perfectp(0()) -> false() perfectp(s(x)) -> f(x ,s(0()) ,s(x) ,s(x)) f(0(),y,0(),u) -> true() f(0(),y,s(z),u) -> false() f(s(x),0(),z,u) -> f(x ,u ,minus(z,s(x)) ,u) f(s(x),s(y),z,u) -> if(le(x,y) ,f(s(x),minus(y,x),z,u) ,f(x,u,z,u)))