(STRATEGY INNERMOST) (VAR l x y) (DATATYPES A = µX.< nil, cons(X, X), 0, s(X) >) (SIGNATURES rev :: [A] -> A rev1 :: [A x A] -> A rev2 :: [A x A] -> A) (RULES rev(nil()) -> nil() rev(cons(x,l)) -> cons(rev1(x,l) ,rev2(x,l)) rev1(0(),nil()) -> 0() rev1(s(x),nil()) -> s(x) rev1(x,cons(y,l)) -> rev1(y,l) rev2(x,nil()) -> nil() rev2(x,cons(y,l)) -> rev(cons(x ,rev2(y,l))))