sig
  type t
  type elt
  val create : int -> CCHashSet.S.t
  val singleton : CCHashSet.S.elt -> CCHashSet.S.t
  val clear : CCHashSet.S.t -> unit
  val copy : CCHashSet.S.t -> CCHashSet.S.t
  val copy_into : into:CCHashSet.S.t -> CCHashSet.S.t -> unit
  val insert : CCHashSet.S.t -> CCHashSet.S.elt -> unit
  val remove : CCHashSet.S.t -> CCHashSet.S.elt -> unit
  val cardinal : CCHashSet.S.t -> int
  val mem : CCHashSet.S.t -> CCHashSet.S.elt -> bool
  val find_exn : CCHashSet.S.t -> CCHashSet.S.elt -> CCHashSet.S.elt
  val find : CCHashSet.S.t -> CCHashSet.S.elt -> CCHashSet.S.elt option
  val inter : CCHashSet.S.t -> CCHashSet.S.t -> CCHashSet.S.t
  val inter_mut : into:CCHashSet.S.t -> CCHashSet.S.t -> unit
  val union : CCHashSet.S.t -> CCHashSet.S.t -> CCHashSet.S.t
  val union_mut : into:CCHashSet.S.t -> CCHashSet.S.t -> unit
  val diff : CCHashSet.S.t -> CCHashSet.S.t -> CCHashSet.S.t
  val subset : CCHashSet.S.t -> CCHashSet.S.t -> bool
  val equal : CCHashSet.S.t -> CCHashSet.S.t -> bool
  val for_all : (CCHashSet.S.elt -> bool) -> CCHashSet.S.t -> bool
  val exists : (CCHashSet.S.elt -> bool) -> CCHashSet.S.t -> bool
  val iter : (CCHashSet.S.elt -> unit) -> CCHashSet.S.t -> unit
  val fold : ('-> CCHashSet.S.elt -> 'a) -> '-> CCHashSet.S.t -> 'a
  val elements : CCHashSet.S.t -> CCHashSet.S.elt list
  val of_list : CCHashSet.S.elt list -> CCHashSet.S.t
  val to_seq : CCHashSet.S.t -> CCHashSet.S.elt CCHashSet.sequence
  val of_seq : CCHashSet.S.elt CCHashSet.sequence -> CCHashSet.S.t
  val add_seq : CCHashSet.S.t -> CCHashSet.S.elt CCHashSet.sequence -> unit
  val pp :
    ?sep:string ->
    CCHashSet.S.elt CCHashSet.printer -> CCHashSet.S.t CCHashSet.printer
end