(STRATEGY
    INNERMOST)

(VAR
    N X X1 X2 XS Y)
(DATATYPES
    A = µX.< s(X), 0, cons(X, X), n__fib1(X, X), n__add(X, X) >)
(SIGNATURES
    fib :: [A] -> A
    fib1 :: [A x A] -> A
    add :: [A x A] -> A
    sel :: [A x A] -> A
    activate :: [A] -> A)
(RULES
    fib(N) -> sel(N
                 ,fib1(s(0()),s(0())))
    fib1(X,Y) -> cons(X
                     ,n__fib1(Y,n__add(X,Y)))
    add(0(),X) -> X
    add(s(X),Y) -> s(add(X,Y))
    sel(0(),cons(X,XS)) -> X
    sel(s(N),cons(X,XS)) -> sel(N
                               ,activate(XS))
    fib1(X1,X2) -> n__fib1(X1,X2)
    add(X1,X2) -> n__add(X1,X2)
    activate(n__fib1(X1,X2)) ->
      fib1(activate(X1),activate(X2))
    activate(n__add(X1,X2)) ->
      add(activate(X1),activate(X2))
    activate(X) -> X)