sig module type OrderedType = sig type t val compare : Set.OrderedType.t -> Set.OrderedType.t -> int end module type S = 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 disjoint : Set.S.t -> Set.S.t -> bool 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 map : (Set.S.elt -> Set.S.elt) -> Set.S.t -> Set.S.t 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 filter_map : (Set.S.elt -> Set.S.elt option) -> 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 min_elt_opt : Set.S.t -> Set.S.elt option val max_elt : Set.S.t -> Set.S.elt val max_elt_opt : Set.S.t -> Set.S.elt option val choose : Set.S.t -> Set.S.elt val choose_opt : Set.S.t -> Set.S.elt option 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 find_opt : Set.S.elt -> Set.S.t -> Set.S.elt option val find_first : (Set.S.elt -> bool) -> Set.S.t -> Set.S.elt val find_first_opt : (Set.S.elt -> bool) -> Set.S.t -> Set.S.elt option val find_last : (Set.S.elt -> bool) -> Set.S.t -> Set.S.elt val find_last_opt : (Set.S.elt -> bool) -> Set.S.t -> Set.S.elt option val of_list : Set.S.elt list -> Set.S.t val to_seq_from : Set.S.elt -> Set.S.t -> Set.S.elt Stdlib.Seq.t val to_seq : Set.S.t -> Set.S.elt Stdlib.Seq.t val to_rev_seq : Set.S.t -> Set.S.elt Stdlib.Seq.t val add_seq : Set.S.elt Stdlib.Seq.t -> Set.S.t -> Set.S.t val of_seq : Set.S.elt Stdlib.Seq.t -> Set.S.t end module Make : functor (Ord : OrderedType) -> sig type elt = Ord.t type t val empty : t val is_empty : t -> bool val mem : elt -> t -> bool val add : elt -> t -> t val singleton : elt -> t val remove : elt -> t -> t val union : t -> t -> t val inter : t -> t -> t val disjoint : t -> t -> bool val diff : t -> t -> t val compare : t -> t -> int val equal : t -> t -> bool val subset : t -> t -> bool val iter : (elt -> unit) -> t -> unit val map : (elt -> elt) -> t -> t val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a val for_all : (elt -> bool) -> t -> bool val exists : (elt -> bool) -> t -> bool val filter : (elt -> bool) -> t -> t val filter_map : (elt -> elt option) -> t -> t val partition : (elt -> bool) -> t -> t * t val cardinal : t -> int val elements : t -> elt list val min_elt : t -> elt val min_elt_opt : t -> elt option val max_elt : t -> elt val max_elt_opt : t -> elt option val choose : t -> elt val choose_opt : t -> elt option val split : elt -> t -> t * bool * t val find : elt -> t -> elt val find_opt : elt -> t -> elt option val find_first : (elt -> bool) -> t -> elt val find_first_opt : (elt -> bool) -> t -> elt option val find_last : (elt -> bool) -> t -> elt val find_last_opt : (elt -> bool) -> t -> elt option val of_list : elt list -> t val to_seq_from : elt -> t -> elt Seq.t val to_seq : t -> elt Seq.t val to_rev_seq : t -> elt Seq.t val add_seq : elt Seq.t -> t -> t val of_seq : elt Seq.t -> t end end