functor (Set : SMALLSET->
  sig
    type elm = Set.t
    type t =
        [ `Lower of elm
        | `LowerNeg of elm * elm
        | `LowerUpper of elm * elm
        | `Neg of elm
        | `Upper of elm ]
    val create_lower : elm -> t
    val create_upper : elm -> t
    val create_neg : elm -> t
    val create_lowerupper : elm -> elm -> t
    val create_lowerneg : elm -> elm -> t
    val compare : t -> t -> int
    val merge : t -> t -> t
    val get_exact : t -> elm option
    val string_of : t -> string
  end