(STRATEGY INNERMOST) (VAR n x y) (DATATYPES A = µX.< nil, add(X, X) >) (SIGNATURES app :: [A x A] -> A reverse :: [A] -> A shuffle :: [A] -> A) (RULES app(nil(),y) -> y app(add(n,x),y) -> add(n ,app(x,y)) reverse(nil()) -> nil() reverse(add(n,x)) -> app(reverse(x),add(n,nil())) shuffle(nil()) -> nil() shuffle(add(n,x)) -> add(n ,shuffle(reverse(x))))