`sig type elt type t val empty : Set.S.t val is_empty : Set.S.t -> bool val mem : Set.S.elt -> Set.S.t -> bool val add : Set.S.elt -> Set.S.t -> Set.S.t val singleton : Set.S.elt -> Set.S.t val remove : Set.S.elt -> Set.S.t -> Set.S.t val union : Set.S.t -> Set.S.t -> Set.S.t val inter : Set.S.t -> Set.S.t -> Set.S.t val diff : Set.S.t -> Set.S.t -> Set.S.t val compare : Set.S.t -> Set.S.t -> int val equal : Set.S.t -> Set.S.t -> bool val subset : Set.S.t -> Set.S.t -> bool val iter : (Set.S.elt -> unit) -> Set.S.t -> unit val fold : (Set.S.elt -> 'a -> 'a) -> Set.S.t -> 'a -> 'a val for_all : (Set.S.elt -> bool) -> Set.S.t -> bool val exists : (Set.S.elt -> bool) -> Set.S.t -> bool val filter : (Set.S.elt -> bool) -> Set.S.t -> Set.S.t val partition : (Set.S.elt -> bool) -> Set.S.t -> Set.S.t * Set.S.t val cardinal : Set.S.t -> int val elements : Set.S.t -> Set.S.elt list val min_elt : Set.S.t -> Set.S.elt val max_elt : Set.S.t -> Set.S.elt val choose : Set.S.t -> Set.S.elt val split : Set.S.elt -> Set.S.t -> Set.S.t * bool * Set.S.t val find : Set.S.elt -> Set.S.t -> Set.S.elt val of_list : Set.S.elt list -> Set.S.t end`