sig
  type elm = LSet.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