sig
  type elt
  type t
  module T : sig type 'a elt = elt type 'a t = t end
  type sexpable = t
  val sexp_of_t : sexpable -> Sexplib.Sexp.t
  val t_of_sexp : Sexplib.Sexp.t -> sexpable
  val empty : Set_intf.S.t
  val is_empty : Set_intf.S.t -> bool
  val mem : Set_intf.S.t -> Set_intf.S.elt -> bool
  val add : Set_intf.S.t -> Set_intf.S.elt -> Set_intf.S.t
  val singleton : Set_intf.S.elt -> Set_intf.S.t
  val remove : Set_intf.S.t -> Set_intf.S.elt -> Set_intf.S.t
  val union : Set_intf.S.t -> Set_intf.S.t -> Set_intf.S.t
  val union_list : Set_intf.S.t list -> Set_intf.S.t
  val inter : Set_intf.S.t -> Set_intf.S.t -> Set_intf.S.t
  val diff : Set_intf.S.t -> Set_intf.S.t -> Set_intf.S.t
  val compare : Set_intf.S.t -> Set_intf.S.t -> int
  val equal : Set_intf.S.t -> Set_intf.S.t -> bool
  val subset : Set_intf.S.t -> Set_intf.S.t -> bool
  val iter : f:(Set_intf.S.elt -> unit) -> Set_intf.S.t -> unit
  val fold :
    f:(Set_intf.S.elt -> '-> 'a) -> Set_intf.S.t -> init:'-> 'a
  val for_all : f:(Set_intf.S.elt -> bool) -> Set_intf.S.t -> bool
  val exists : f:(Set_intf.S.elt -> bool) -> Set_intf.S.t -> bool
  val filter :
    f:(Set_intf.S.elt -> bool) -> Set_intf.S.t -> Set_intf.S.t
  val partition :
    f:(Set_intf.S.elt -> bool) ->
    Set_intf.S.t -> Set_intf.S.t * Set_intf.S.t
  val cardinal : Set_intf.S.t -> int
  val elements : Set_intf.S.t -> Set_intf.S.elt list
  val min_elt : Set_intf.S.t -> Set_intf.S.elt option
  val min_elt_exn : Set_intf.S.t -> Set_intf.S.elt
  val max_elt : Set_intf.S.t -> Set_intf.S.elt option
  val max_elt_exn : Set_intf.S.t -> Set_intf.S.elt
  val choose : Set_intf.S.t -> Set_intf.S.elt option
  val choose_exn : Set_intf.S.t -> Set_intf.S.elt
  val of_list : Set_intf.S.elt list -> Set_intf.S.t
  val to_list : Set_intf.S.t -> Set_intf.S.elt list
  val of_array : Set_intf.S.elt array -> Set_intf.S.t
  val to_array : Set_intf.S.t -> Set_intf.S.elt array
  val split :
    Set_intf.S.elt ->
    Set_intf.S.t -> Set_intf.S.t * bool * Set_intf.S.t
  val group_by :
    Set_intf.S.t ->
    equiv:(Set_intf.S.elt -> Set_intf.S.elt -> bool) ->
    Set_intf.S.t list
end