sig
  type order = Lt | Eq | Gt
  type 'a ord = 'a -> 'a -> BatOrd.order
  type 'a comp = 'a -> 'a -> int
  module type Comp = sig type t val compare : BatOrd.Comp.t BatOrd.comp end
  module type Ord = sig type t val ord : BatOrd.Ord.t BatOrd.ord end
  val ord0 : int -> BatOrd.order
  val ord : 'a BatOrd.comp -> 'a BatOrd.ord
  module Ord :
    functor (Comp : Comp) -> sig type t = Comp.t val ord : t ord end
  val comp0 : BatOrd.order -> int
  val comp : 'a BatOrd.ord -> 'a BatOrd.comp
  module Comp :
    functor (Ord : Ord) -> sig type t = Ord.t val compare : t comp end
  val poly_comp : 'a BatOrd.comp
  val poly_ord : 'a BatOrd.ord
  val poly : 'a BatOrd.ord
  val rev_ord0 : BatOrd.order -> BatOrd.order
  val rev_comp0 : int -> int
  val rev_ord : 'a BatOrd.ord -> 'a BatOrd.ord
  val rev_comp : 'a BatOrd.comp -> 'a BatOrd.comp
  val rev : 'a BatOrd.ord -> 'a BatOrd.ord
  module RevOrd :
    functor (Ord : Ord) -> sig type t = Ord.t val ord : t ord end
  module RevComp :
    functor (Comp : Comp) -> sig type t = Comp.t val compare : t comp end
  module Rev : functor (Ord : Ord) -> sig type t = Ord.t val ord : t ord end
  type 'a eq = 'a -> 'a -> bool
  val eq_ord0 : BatOrd.order -> bool
  val eq_comp0 : int -> bool
  val eq_ord : 'a BatOrd.ord -> 'a BatOrd.eq
  val eq_comp : 'a BatOrd.comp -> 'a BatOrd.eq
  val eq : 'a BatOrd.ord -> 'a BatOrd.eq
  module type Eq = sig type t val eq : BatOrd.Eq.t BatOrd.eq end
  module EqOrd : functor (Ord : Ord) -> sig type t = Ord.t val eq : t eq end
  module EqComp :
    functor (Comp : Comp) -> sig type t = Comp.t val eq : t eq end
  module Eq : functor (Ord : Ord) -> sig type t = Ord.t val eq : t eq end
  type 'a choice = 'a -> 'a -> 'a
  val min_ord : 'a BatOrd.ord -> 'a BatOrd.choice
  val max_ord : 'a BatOrd.ord -> 'a BatOrd.choice
  val min_comp : 'a BatOrd.comp -> 'a BatOrd.choice
  val max_comp : 'a BatOrd.comp -> 'a BatOrd.choice
  val min : 'a BatOrd.ord -> 'a BatOrd.choice
  val max : 'a BatOrd.ord -> 'a BatOrd.choice
  val bin_comp :
    'a BatOrd.comp -> 'a -> 'a -> 'b BatOrd.comp -> 'b -> 'b -> int
  val bin_ord :
    'a BatOrd.ord -> 'a -> 'a -> 'b BatOrd.ord -> 'b -> 'b -> BatOrd.order
  val bin_eq : 'a BatOrd.eq -> 'a -> 'a -> 'b BatOrd.eq -> 'b -> 'b -> bool
  val map_eq : ('a -> 'b) -> 'b BatOrd.eq -> 'a BatOrd.eq
  val map_comp : ('a -> 'b) -> 'b BatOrd.comp -> 'a BatOrd.comp
  val map_ord : ('a -> 'b) -> 'b BatOrd.ord -> 'a BatOrd.ord
  module Incubator :
    sig
      val eq_by : ('a -> 'b) -> 'a BatOrd.eq
      val comp_by : ('a -> 'b) -> 'a BatOrd.comp
      val ord_by : ('a -> 'b) -> 'a BatOrd.ord
    end
end