(STRATEGY INNERMOST) (VAR x y) (DATATYPES A = µX.< 0, true, s(X), false >) (SIGNATURES le :: [A x A] -> A minus :: [A x A] -> A if_minus :: [A x A x A] -> A gcd :: [A x A] -> A if_gcd :: [A x A x A] -> A) (RULES le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(0(),y) -> 0() minus(s(x),y) -> if_minus(le(s(x),y),s(x),y) if_minus(true(),s(x),y) -> 0() if_minus(false(),s(x),y) -> s(minus(x,y)) gcd(0(),y) -> y gcd(s(x),0()) -> s(x) gcd(s(x),s(y)) -> if_gcd(le(y,x) ,s(x) ,s(y)) if_gcd(true(),s(x),s(y)) -> gcd(minus(x,y),s(y)) if_gcd(false(),s(x),s(y)) -> gcd(minus(y,x),s(x)))