(STRATEGY
    INNERMOST)

(VAR
    N X Y)
(DATATYPES
    A = µX.< cons(X), recip(X), 0, s(X), nil >)
(SIGNATURES
    terms :: [A] -> A
    sqr :: [A] -> A
    dbl :: [A] -> A
    add :: [A x A] -> A
    first :: [A x A] -> A)
(RULES
    terms(N) -> cons(recip(sqr(N)))
    sqr(0()) -> 0()
    sqr(s(X)) -> s(add(sqr(X)
                      ,dbl(X)))
    dbl(0()) -> 0()
    dbl(s(X)) -> s(s(dbl(X)))
    add(0(),X) -> X
    add(s(X),Y) -> s(add(X,Y))
    first(0(),X) -> nil()
    first(s(X),cons(Y)) -> cons(Y))