TRS:
 {                      eq(0(), 0()) -> true(),
                       eq(0(), s(x)) -> false(),
                       eq(s(x), 0()) -> false(),
                      eq(s(x), s(y)) -> eq(x, y),
                          le(0(), y) -> true(),
                       le(s(x), 0()) -> false(),
                      le(s(x), s(y)) -> le(x, y),
                       app(nil(), y) -> y,
                   app(add(n, x), y) -> add(n, app(x, y)),
                  min(add(n, nil())) -> n,
              min(add(n, add(m, x))) -> if_min(le(n, m), add(n, add(m, x))),
   if_min(true(), add(n, add(m, x))) -> min(add(n, x)),
  if_min(false(), add(n, add(m, x))) -> min(add(m, x)),
                     head(add(n, x)) -> n,
                     tail(add(n, x)) -> x,
                         tail(nil()) -> nil(),
                         null(nil()) -> true(),
                     null(add(n, x)) -> false(),
                        rm(n, nil()) -> nil(),
                    rm(n, add(m, x)) -> if_rm(eq(n, m), n, add(m, x)),
         if_rm(true(), n, add(m, x)) -> rm(n, x),
        if_rm(false(), n, add(m, x)) -> add(m, rm(n, x)),
                          minsort(x) -> mins(x, nil(), nil()),
                       mins(x, y, z) -> if(null(x), x, y, z),
                 if(true(), x, y, z) -> z,
                if(false(), x, y, z) -> if2(eq(head(x), min(x)), x, y, z),
                if2(true(), x, y, z) -> mins(app(rm(head(x), tail(x)), y), nil(), app(z, add(head(x), nil()))),
               if2(false(), x, y, z) -> mins(tail(x), add(head(x), y), z)}
 Fail