sig
module type S =
sig
type element
type t
val empty : GSet.S.t
val is_empty : GSet.S.t -> bool
val singleton : GSet.S.element -> GSet.S.t
val cardinal : GSet.S.t -> int
val choose : GSet.S.t -> GSet.S.element
val mem : GSet.S.element -> GSet.S.t -> bool
val add : GSet.S.element -> GSet.S.t -> GSet.S.t
val remove : GSet.S.element -> GSet.S.t -> GSet.S.t
val union : GSet.S.t -> GSet.S.t -> GSet.S.t
val diff : GSet.S.t -> GSet.S.t -> GSet.S.t
val inter : GSet.S.t -> GSet.S.t -> GSet.S.t
val disjoint : GSet.S.t -> GSet.S.t -> bool
val iter : (GSet.S.element -> unit) -> GSet.S.t -> unit
val fold : (GSet.S.element -> 'b -> 'b) -> GSet.S.t -> 'b -> 'b
val elements : GSet.S.t -> GSet.S.element list
val compare : GSet.S.t -> GSet.S.t -> int
val equal : GSet.S.t -> GSet.S.t -> bool
val subset : GSet.S.t -> GSet.S.t -> bool
end
end