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