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) -> Set.S.t -> '-> '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