(STRATEGY
    INNERMOST)

(VAR
    x xs y z)
(DATATYPES
    A = µX.< 0, true, s(X), false, cons(X, X), nil >)
(SIGNATURES
    le :: [A x A] -> A
    eq :: [A x A] -> A
    if1 :: [A x A x A x A] -> A
    if2 :: [A x A x A x A] -> A
    minsort :: [A] -> A
    min :: [A x A] -> A
    del :: [A x A] -> A)
(RULES
    le(0(),y) -> true()
    le(s(x),0()) -> false()
    le(s(x),s(y)) -> le(x,y)
    eq(0(),0()) -> true()
    eq(0(),s(y)) -> false()
    eq(s(x),0()) -> false()
    eq(s(x),s(y)) -> eq(x,y)
    if1(true(),x,y,xs) -> min(x,xs)
    if1(false(),x,y,xs) -> min(y,xs)
    if2(true(),x,y,xs) -> xs
    if2(false(),x,y,xs) -> cons(y
                               ,del(x,xs))
    minsort(nil()) -> nil()
    minsort(cons(x,y)) -> cons(min(x
                                  ,y)
                              ,minsort(del(min(x,y)
                                          ,cons(x,y))))
    min(x,nil()) -> x
    min(x,cons(y,z)) -> if1(le(x,y)
                           ,x
                           ,y
                           ,z)
    del(x,nil()) -> nil()
    del(x,cons(y,z)) -> if2(eq(x,y)
                           ,x
                           ,y
                           ,z))