sig
type 'a t
val empty : 'a t
val is_empty : 'a t -> bool
val mem : 'a t -> 'a -> bool
val add : 'a t -> 'a -> 'a t
val singleton : 'a -> 'a t
val remove : 'a t -> 'a t
val union : 'a t -> 'a t -> 'a t
val inter : 'a t -> 'a t -> 'a t
val diff : 'a t -> 'a t -> 'a t
val compare : 'a t -> 'a t -> int
val equal : 'a t -> 'a t -> bool
val subset : 'a t -> 'a t -> bool
val iter : (key -> 'a -> unit)