(STRATEGY
    INNERMOST)

(VAR
    x y)
(DATATYPES
    A = µX.< true, 0, false, s(X) >)
(SIGNATURES
    cond1 :: [A x A x A] -> A
    cond2 :: [A x A x A] -> A
    cond3 :: [A x A x A] -> A
    gr :: [A x A] -> A
    add :: [A x A] -> A
    p :: [A] -> A)
(RULES
    cond1(true(),x,y) -> cond2(gr(x
                                 ,0())
                              ,x
                              ,y)
    cond2(true(),x,y) ->
      cond1(gr(add(x,y),0()),p(x),y)
    cond2(false(),x,y) -> cond3(gr(y
                                  ,0())
                               ,x
                               ,y)
    cond3(true(),x,y) ->
      cond1(gr(add(x,y),0()),x,p(y))
    cond3(false(),x,y) ->
      cond1(gr(add(x,y),0()),x,y)
    gr(0(),x) -> false()
    gr(s(x),0()) -> true()
    gr(s(x),s(y)) -> gr(x,y)
    add(0(),x) -> x
    add(s(x),y) -> s(add(x,y))
    p(0()) -> 0()
    p(s(x)) -> x)