(STRATEGY INNERMOST) (VAR b x y) (DATATYPES A = µX.< nil, true, cons(X, X), false, 0, s(X) >) (SIGNATURES empty :: [A] -> A tail :: [A] -> A head :: [A] -> A zero :: [A] -> A p :: [A] -> A intlist :: [A] -> A if_intlist :: [A x A] -> A int :: [A x A] -> A if_int :: [A x A x A x A] -> A if1 :: [A x A x A] -> A if2 :: [A x A x A] -> A) (RULES empty(nil()) -> true() empty(cons(x,y)) -> false() tail(nil()) -> nil() tail(cons(x,y)) -> y head(cons(x,y)) -> x zero(0()) -> true() zero(s(x)) -> false() p(0()) -> 0() p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) intlist(x) -> if_intlist(empty(x),x) if_intlist(true(),x) -> nil() if_intlist(false(),x) -> cons(s(head(x)) ,intlist(tail(x))) int(x,y) -> if_int(zero(x) ,zero(y) ,x ,y) if_int(true(),b,x,y) -> if1(b ,x ,y) if_int(false(),b,x,y) -> if2(b ,x ,y) if1(true(),x,y) -> cons(0() ,nil()) if1(false(),x,y) -> cons(0() ,int(s(0()),y)) if2(true(),x,y) -> nil() if2(false(),x,y) -> intlist(int(p(x),p(y))))