sig
  type 'a t
  val copy : 'Hash_set.t -> 'Hash_set.t
  val add : 'Hash_set.t -> '-> unit
  val strict_add : 'Hash_set.t -> '-> unit
  val remove : 'Hash_set.t -> '-> unit
  val strict_remove : 'Hash_set.t -> '-> unit
  val clear : 'Hash_set.t -> unit
  val fold : 'Hash_set.t -> init:'-> f:('-> '-> 'b) -> 'b
  val iter : 'Hash_set.t -> f:('-> unit) -> unit
  val length : 'Hash_set.t -> int
  val mem : 'Hash_set.t -> '-> bool
  val is_empty : 'Hash_set.t -> bool
  val to_list : 'Hash_set.t -> 'a list
  val equal : 'Hash_set.t -> 'Hash_set.t -> bool
  val filter : 'Hash_set.t -> f:('-> bool) -> 'Hash_set.t
  val diff : 'Hash_set.t -> 'Hash_set.t -> 'Hash_set.t
  type 'a hash_set = 'Hash_set.t
  module Poly :
    sig
      type 'a t = 'Hash_set.hash_set
      type 'a sexpable = 'a t
      val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'a sexpable -> Sexplib.Sexp.t
      val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a sexpable
      val create :
        ?growth_allowed:bool -> ?size:int -> unit -> 'Hash_set.Poly.t
      val of_list : 'a list -> 'Hash_set.Poly.t
    end
  module Make :
    functor (H : Core_hashtbl.Key->
      sig
        type elem = H.t
        type t = Hash_set.Make.elem Hash_set.hash_set
        val create :
          ?growth_allowed:bool -> ?size:int -> unit -> Hash_set.Make.t
        val of_list : H.t list -> Hash_set.Make.t
        type sexpable = t
        val sexp_of_t : sexpable -> Sexplib.Sexp.t
        val t_of_sexp : Sexplib.Sexp.t -> sexpable
      end
  module Make_binable :
    functor
      (H : sig
             type t
             val compare : t -> t -> int
             val hash : t -> int
             type sexpable = t
             val sexp_of_t : sexpable -> Sexplib.Sexp.t
             val t_of_sexp : Sexplib.Sexp.t -> sexpable
             type binable = t
             val bin_size_t : binable Bin_prot.Size.sizer
             val bin_write_t : binable Bin_prot.Map_to_safe.writer
             val bin_write_t_ : binable Bin_prot.Unsafe_write_c.writer
             val bin_read_t : binable Bin_prot.Read_ml.reader
             val bin_read_t_ : binable Bin_prot.Unsafe_read_c.reader
             val bin_read_t__ :
               (int -> binable) Bin_prot.Unsafe_read_c.reader
             val bin_writer_t : binable Bin_prot.Type_class.writer
             val bin_reader_t : binable Bin_prot.Type_class.reader
             val bin_t : binable Bin_prot.Type_class.t
           end->
      sig
        type elem = H.t
        type t = Hash_set.Make_binable.elem Hash_set.hash_set
        val create :
          ?growth_allowed:bool ->
          ?size:int -> unit -> Hash_set.Make_binable.t
        val of_list : H.t list -> Hash_set.Make_binable.t
        type sexpable = t
        val sexp_of_t : sexpable -> Sexplib.Sexp.t
        val t_of_sexp : Sexplib.Sexp.t -> sexpable
        type binable = t
        val bin_size_t : binable Bin_prot.Size.sizer
        val bin_write_t : binable Bin_prot.Map_to_safe.writer
        val bin_write_t_ : binable Bin_prot.Unsafe_write_c.writer
        val bin_read_t : binable Bin_prot.Read_ml.reader
        val bin_read_t_ : binable Bin_prot.Unsafe_read_c.reader
        val bin_read_t__ : (int -> binable) Bin_prot.Unsafe_read_c.reader
        val bin_writer_t : binable Bin_prot.Type_class.writer
        val bin_reader_t : binable Bin_prot.Type_class.reader
        val bin_t : binable Bin_prot.Type_class.t
      end
end