(STRATEGY INNERMOST) (VAR x y z) (DATATYPES A = µX.< 0, s(X) >) (SIGNATURES double :: [A] -> A half :: [A] -> A - :: [A x A] -> A if :: [A x A x A] -> A) (RULES double(0()) -> 0() double(s(x)) -> s(s(double(x))) half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) -(x,0()) -> x -(s(x),s(y)) -> -(x,y) if(0(),y,z) -> y if(s(x),y,z) -> z half(double(x)) -> x)