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