(STRATEGY
    INNERMOST)

(VAR
    L X)
(DATATYPES
    A = µX.< nil, cons(X, X), s(X), 0 >)
(SIGNATURES
    incr :: [A] -> A
    adx :: [A] -> A
    nats :: [] -> A
    zeros :: [] -> A
    head :: [A] -> A
    tail :: [A] -> A)
(RULES
    incr(nil()) -> nil()
    incr(cons(X,L)) -> cons(s(X)
                           ,incr(L))
    adx(nil()) -> nil()
    adx(cons(X,L)) -> incr(cons(X
                               ,adx(L)))
    nats() -> adx(zeros())
    zeros() -> cons(0(),zeros())
    head(cons(X,L)) -> X
    tail(cons(X,L)) -> L)