sig
  type 'a t = 'a option
  val some : 'a -> 'a Util.Option.t
  val none : 'a Util.Option.t
  val map : ('a -> 'b) -> 'a Util.Option.t -> 'b Util.Option.t
  val sopt : ('a -> string) -> 'a Util.Option.t -> string
  val opt_min : 'a Util.Option.t -> 'a Util.Option.t -> 'a Util.Option.t
  val maybe : ('a -> 'b) -> 'a -> 'b Util.Option.t
  val get_or_else : 'a -> 'a Util.Option.t -> 'a
  val cat_options : 'a option list -> 'a list
end