(STRATEGY INNERMOST) (VAR X Y Z) (DATATYPES A = µX.< true, false, 0, s(X), nil, cons(X, X) >) (SIGNATURES and :: [A x A] -> A if :: [A x A x A] -> A add :: [A x A] -> A first :: [A x A] -> A from :: [A] -> A) (RULES and(true(),X) -> X and(false(),Y) -> false() if(true(),X,Y) -> X if(false(),X,Y) -> Y add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) first(0(),X) -> nil() first(s(X),cons(Y,Z)) -> cons(Y ,first(X,Z)) from(X) -> cons(X,from(s(X))))