(STRATEGY
    INNERMOST)

(VAR
    x y)
(DATATYPES
    A = µX.< nil, s(X), 0, cons(X, X) >)
(SIGNATURES
    intlist :: [A] -> A
    int :: [A x A] -> A)
(RULES
    intlist(nil()) -> nil()
    int(s(x),0()) -> nil()
    int(x,x) -> cons(x,nil())
    intlist(cons(x,y)) -> cons(s(x)
                              ,intlist(y))
    int(s(x),s(y)) -> intlist(int(x
                                 ,y))
    int(0(),s(y)) -> cons(0()
                         ,int(s(0()),s(y)))
    intlist(cons(x,nil())) ->
      cons(s(x),nil()))