(STRATEGY
    INNERMOST)

(VAR
    x y)
(DATATYPES
    A = µX.< 0, s(X) >)
(SIGNATURES
    min :: [A x A] -> A
    max :: [A x A] -> A
    twice :: [A] -> A
    - :: [A x A] -> A
    p :: [A] -> A
    f :: [A x A] -> A)
(RULES
    min(0(),y) -> 0()
    min(x,0()) -> 0()
    min(s(x),s(y)) -> s(min(x,y))
    max(0(),y) -> y
    max(x,0()) -> x
    max(s(x),s(y)) -> s(max(x,y))
    twice(0()) -> 0()
    twice(s(x)) -> s(s(twice(x)))
    -(x,0()) -> x
    -(s(x),s(y)) -> -(x,y)
    p(s(x)) -> x
    f(s(x),s(y)) -> f(-(max(s(x)
                           ,s(y))
                       ,min(s(x),s(y)))
                     ,p(twice(min(x,y)))))