(STRATEGY INNERMOST) (VAR x y z) (DATATYPES A = µX.< s(X), 0, false, true, logError >) (SIGNATURES le :: [A x A] -> A double :: [A] -> A log :: [A] -> A loop :: [A x A x A] -> A if :: [A x A x A x A] -> A) (RULES le(s(x),0()) -> false() le(0(),y) -> true() le(s(x),s(y)) -> le(x,y) double(0()) -> 0() double(s(x)) -> s(s(double(x))) log(0()) -> logError() log(s(x)) -> loop(s(x) ,s(0()) ,0()) loop(x,s(y),z) -> if(le(x,s(y)) ,x ,s(y) ,z) if(true(),x,y,z) -> z if(false(),x,y,z) -> loop(x ,double(y) ,s(z)))