(STRATEGY
    INNERMOST)

(VAR
    ap n xs y ys)
(DATATYPES
    A = µX.< node(X, X), s(X), cons(X, X) >)
(SIGNATURES
    f :: [A] -> A
    select :: [A] -> A
    addchild :: [A x A] -> A)
(RULES
    f(node(s(n),xs)) ->
      f(addchild(select(xs)
                ,node(n,xs)))
    select(cons(ap,xs)) -> ap
    select(cons(ap,xs)) ->
      select(xs)
    addchild(node(y,ys)
            ,node(n,xs)) -> node(y
                                ,cons(node(n,xs),ys)))