functor (O : Set.OrderedType->   sig     type elt = O.t     type t     val empty : t     val is_empty : t -> bool     val mem : t -> elt -> bool     val count : t -> elt -> int     val singleton : elt -> t     val add : t -> elt -> t     val remove : t -> elt -> t     val add_mult : t -> elt -> int -> t     val remove_mult : t -> elt -> int -> t     val remove_all : t -> elt -> t     val update : t -> elt -> (int -> int) -> t     val min : t -> elt     val max : t -> elt     val union : t -> t -> t     val meet : t -> t -> t     val intersection : t -> t -> t     val diff : t -> t -> t     val contains : t -> t -> bool     val compare : t -> t -> int     val equal : t -> t -> bool     val cardinal : t -> int     val iter : t -> (int -> elt -> unit) -> unit     val fold : t -> '-> ('-> int -> elt -> 'b) -> 'b     val of_list : elt list -> t     val to_list : t -> elt list     val to_seq : t -> elt sequence     val of_seq : elt sequence -> t     val of_list_mult : (elt * int) list -> t     val to_list_mult : t -> (elt * int) list     val to_seq_mult : t -> (elt * int) sequence     val of_seq_mult : (elt * int) sequence -> t   end