sig
  module type Infix =
    sig
      type comparable
      val ( >= ) : comparable -> comparable -> bool
      val ( <= ) : comparable -> comparable -> bool
      val ( = ) : comparable -> comparable -> bool
      val ( > ) : comparable -> comparable -> bool
      val ( < ) : comparable -> comparable -> bool
      val ( <> ) : comparable -> comparable -> bool
    end
  module type S =
    sig
      type comparable
      val ( >= ) : comparable -> comparable -> bool
      val ( <= ) : comparable -> comparable -> bool
      val ( = ) : comparable -> comparable -> bool
      val ( > ) : comparable -> comparable -> bool
      val ( < ) : comparable -> comparable -> bool
      val ( <> ) : comparable -> comparable -> bool
      val compare : comparable -> comparable -> int
      val ascending : comparable -> comparable -> int
      val descending : comparable -> comparable -> int
      val min : comparable -> comparable -> comparable
      val max : comparable -> comparable -> comparable
    end
  module Poly :
    functor (T : sig type t end->
      sig
        type comparable = T.t
        val ( >= ) : comparable -> comparable -> bool
        val ( <= ) : comparable -> comparable -> bool
        val ( = ) : comparable -> comparable -> bool
        val ( > ) : comparable -> comparable -> bool
        val ( < ) : comparable -> comparable -> bool
        val ( <> ) : comparable -> comparable -> bool
        val compare : comparable -> comparable -> int
        val ascending : comparable -> comparable -> int
        val descending : comparable -> comparable -> int
        val min : comparable -> comparable -> comparable
        val max : comparable -> comparable -> comparable
      end
  module From_compare :
    functor (T : sig type t val compare : t -> t -> int end->
      sig
        type comparable = T.t
        val ( >= ) : comparable -> comparable -> bool
        val ( <= ) : comparable -> comparable -> bool
        val ( = ) : comparable -> comparable -> bool
        val ( > ) : comparable -> comparable -> bool
        val ( < ) : comparable -> comparable -> bool
        val ( <> ) : comparable -> comparable -> bool
        val compare : comparable -> comparable -> int
        val ascending : comparable -> comparable -> int
        val descending : comparable -> comparable -> int
        val min : comparable -> comparable -> comparable
        val max : comparable -> comparable -> comparable
      end
  module Inherit :
    functor (C : S->
      functor (T : sig type t val component : t -> C.comparable end->
        sig
          type comparable = T.t
          val ( >= ) : comparable -> comparable -> bool
          val ( <= ) : comparable -> comparable -> bool
          val ( = ) : comparable -> comparable -> bool
          val ( > ) : comparable -> comparable -> bool
          val ( < ) : comparable -> comparable -> bool
          val ( <> ) : comparable -> comparable -> bool
          val compare : comparable -> comparable -> int
          val ascending : comparable -> comparable -> int
          val descending : comparable -> comparable -> int
          val min : comparable -> comparable -> comparable
          val max : comparable -> comparable -> comparable
        end
end