-module type S =
-sig
- module S : Set.S
- type t = private Finite of S.t | CoFinite of S.t
- exception InfiniteTagSet
- val empty : t
- val any : t
- val is_empty : t -> bool
- val is_any : t -> bool
- val is_finite : t -> bool
- val singleton : S.elt -> t
- val mem : S.elt -> t -> bool
- val add : S.elt -> t -> t
- val remove : S.elt -> t -> t
- val cup : t -> t -> t
- val cap : t -> t -> t
- val diff : t -> t -> t
- val neg : t -> t
- val compare : t -> t -> int
- val subset : t -> t -> bool
- val kind_split : t list -> t * t
- val fold : (S.elt -> 'a -> 'a) -> t -> 'a -> 'a
- val for_all : (S.elt -> bool) -> t -> bool
- val exists : (S.elt -> bool) -> t -> bool
- val filter : (S.elt -> bool) -> t -> S.t
- val partition : (S.elt -> bool) -> t -> S.t * S.t
- val cardinal : t -> int
- val elements : t -> S.elt list
- val from_list : S.elt list -> t
- val choose : t -> S.elt