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