sig   type 'a bound_t = [ `of '| `of '| `u ]   type ('a, 'b) bounding_f =       bounds:'BatBounded.bound_t * 'BatBounded.bound_t -> '-> 'b   val bounding_of_ord :     default_low:'->     default_high:'->     ('-> 'b) ->     ('-> '-> BatOrd.order) -> ('a, 'b) BatBounded.bounding_f   val bounding_of_ord_chain :     low:('-> 'b) ->     high:('-> 'b) ->     ('-> 'b) ->     ('-> '-> BatOrd.order) -> ('a, 'b) BatBounded.bounding_f   val saturate_of_ord :     bounds:'BatBounded.bound_t * 'BatBounded.bound_t ->     ('-> '-> BatOrd.order) -> '-> 'a   val opt_of_ord :     bounds:'BatBounded.bound_t * 'BatBounded.bound_t ->     ('-> '-> BatOrd.order) -> '-> 'a option   module type BoundedType =     sig       type base_t       type t       val bounds :         BatBounded.BoundedType.base_t BatBounded.bound_t *         BatBounded.BoundedType.base_t BatBounded.bound_t       val bounded :         (BatBounded.BoundedType.base_t, BatBounded.BoundedType.t)         BatBounded.bounding_f       val base_of_t :         BatBounded.BoundedType.t -> BatBounded.BoundedType.base_t option       val base_of_t_exn :         BatBounded.BoundedType.t -> BatBounded.BoundedType.base_t     end   module type BoundedNumericType =     sig       type base_t       type t       val bounds : base_t bound_t * base_t bound_t       val bounded : (base_t, t) bounding_f       val base_of_t : t -> base_t option       val base_of_t_exn : t -> base_t       module Infix :         sig           val ( + ) : base_t -> base_t -> base_t           val ( - ) : base_t -> base_t -> base_t           val ( * ) : base_t -> base_t -> base_t           val ( / ) : base_t -> base_t -> base_t           val ( ** ) : base_t -> base_t -> base_t           val ( -- ) : base_t -> base_t -> base_t BatEnum.t           val ( --- ) : base_t -> base_t -> base_t BatEnum.t         end     end   module type S =     sig       type base_u       type u       type t = private BatBounded.S.u       val bounds :         BatBounded.S.base_u BatBounded.bound_t *         BatBounded.S.base_u BatBounded.bound_t       val make : BatBounded.S.base_u -> BatBounded.S.t       external extract : BatBounded.S.t -> BatBounded.S.u = "%identity"       val map :         (BatBounded.S.base_u -> BatBounded.S.base_u) ->         BatBounded.S.t -> BatBounded.S.t option       val map2 :         (BatBounded.S.base_u -> BatBounded.S.base_u -> BatBounded.S.base_u) ->         BatBounded.S.t -> BatBounded.S.t -> BatBounded.S.t option       val map_exn :         (BatBounded.S.base_u -> BatBounded.S.base_u) ->         BatBounded.S.t -> BatBounded.S.t       val map2_exn :         (BatBounded.S.base_u -> BatBounded.S.base_u -> BatBounded.S.base_u) ->         BatBounded.S.t -> BatBounded.S.t -> BatBounded.S.t     end   module type NumericSig =     sig       type base_u       type u       type t = private u       val bounds : base_u bound_t * base_u bound_t       val make : base_u -> t       external extract : t -> u = "%identity"       val map : (base_u -> base_u) -> t -> t option       val map2 : (base_u -> base_u -> base_u) -> t -> t -> t option       val map_exn : (base_u -> base_u) -> t -> t       val map2_exn : (base_u -> base_u -> base_u) -> t -> t -> t       val ( + ) : t -> base_u -> t       val ( - ) : t -> base_u -> t       val ( * ) : t -> base_u -> t       val ( / ) : t -> base_u -> t       val ( +: ) : t -> t -> t       val ( -: ) : t -> t -> t       val ( *: ) : t -> t -> t       val ( /: ) : t -> t -> t     end   module Make :     functor (M : BoundedType->       sig         type base_u = M.base_t         type u = M.t         type t = private M.t         val bounds : base_u bound_t * base_u bound_t         val make : base_u -> t         external extract : t -> u = "%identity"         val map : (base_u -> base_u) -> t -> t option         val map2 : (base_u -> base_u -> base_u) -> t -> t -> t option         val map_exn : (base_u -> base_u) -> t -> t         val map2_exn : (base_u -> base_u -> base_u) -> t -> t -> t       end   module MakeNumeric :     functor (M : BoundedNumericType->       sig         type base_u = M.base_t         type u = M.t         type t = private M.t         val bounds : base_u bound_t * base_u bound_t         val make : base_u -> t         external extract : t -> u = "%identity"         val map : (base_u -> base_u) -> t -> t option         val map2 : (base_u -> base_u -> base_u) -> t -> t -> t option         val map_exn : (base_u -> base_u) -> t -> t         val map2_exn : (base_u -> base_u -> base_u) -> t -> t -> t         val ( + ) : t -> base_u -> t         val ( - ) : t -> base_u -> t         val ( * ) : t -> base_u -> t         val ( / ) : t -> base_u -> t         val ( +: ) : t -> t -> t         val ( -: ) : t -> t -> t         val ( *: ) : t -> t -> t         val ( /: ) : t -> t -> t       end end