sig
  module Make :
    functor (Ord : Set.OrderedType->
      sig
        type elt = Ord.t
        type t
        val empty : t
        val is_empty : t -> bool
        val mem : t -> elt -> bool
        val add : t -> elt -> t
        val singleton : elt -> t
        val remove : t -> elt -> t
        val cardinal : t -> int
        val union : t -> t -> t
        val intersectp : t -> t -> bool
        val iter : (elt -> unit) -> t -> unit
        val mem_filt : t -> elt list -> elt list
        val fst_mem_filt : t -> (elt * 'a) list -> (elt * 'a) list
        val not_mem_filt : t -> elt list -> elt list
        val of_sorted_list : elt list -> t
        val of_list : elt list -> t
        val to_list : t -> elt list
        val elements : t -> elt list
      end
end