(STRATEGY
    INNERMOST)

(VAR
    M N X X1 X2 X3)
(DATATYPES
    A = µX.< tt, s(X), 0, U11(X, X, X), U12(X, X, X), plus(X, X) >)
(SIGNATURES
    a__U11 :: [A x A x A] -> A
    a__U12 :: [A x A x A] -> A
    a__plus :: [A x A] -> A
    mark :: [A] -> A)
(RULES
    a__U11(tt(),M,N) -> a__U12(tt()
                              ,M
                              ,N)
    a__U12(tt(),M,N) ->
      s(a__plus(mark(N),mark(M)))
    a__plus(N,0()) -> mark(N)
    a__plus(N,s(M)) -> a__U11(tt()
                             ,M
                             ,N)
    mark(U11(X1,X2,X3)) ->
      a__U11(mark(X1),X2,X3)
    mark(U12(X1,X2,X3)) ->
      a__U12(mark(X1),X2,X3)
    mark(plus(X1,X2)) ->
      a__plus(mark(X1),mark(X2))
    mark(tt()) -> tt()
    mark(s(X)) -> s(mark(X))
    mark(0()) -> 0()
    a__U11(X1,X2,X3) -> U11(X1
                           ,X2
                           ,X3)
    a__U12(X1,X2,X3) -> U12(X1
                           ,X2
                           ,X3)
    a__plus(X1,X2) -> plus(X1,X2))