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