sig
module type SMALLSET =
sig
type t
val is_empty : t -> bool
val subset : t -> t -> bool option
val inter : t -> t -> t
val union : t -> t -> t
val compare : t -> t -> int
val string_of : t -> string
val normalize : t -> t
val diff : t -> t -> t
end
module type S =
sig
type elm
type t =
[ `Lower of LowerUpperNeg.S.elm
| `LowerNeg of LowerUpperNeg.S.elm * LowerUpperNeg.S.elm
| `LowerUpper of LowerUpperNeg.S.elm * LowerUpperNeg.S.elm
| `Neg of LowerUpperNeg.S.elm
| `Upper of LowerUpperNeg.S.elm ]
val create_lower : LowerUpperNeg.S.elm -> LowerUpperNeg.S.t
val create_upper : LowerUpperNeg.S.elm -> LowerUpperNeg.S.t
val create_neg : LowerUpperNeg.S.elm -> LowerUpperNeg.S.t
val create_lowerupper :
LowerUpperNeg.S.elm -> LowerUpperNeg.S.elm -> LowerUpperNeg.S.t
val create_lowerneg :
LowerUpperNeg.S.elm -> LowerUpperNeg.S.elm -> LowerUpperNeg.S.t
val compare : LowerUpperNeg.S.t -> LowerUpperNeg.S.t -> int
val merge : LowerUpperNeg.S.t -> LowerUpperNeg.S.t -> LowerUpperNeg.S.t
val get_exact : LowerUpperNeg.S.t -> LowerUpperNeg.S.elm option
val string_of : LowerUpperNeg.S.t -> string
end
module Make :
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
end