sig
module type SS_WO_ME =
sig
type t
val is_empty : LowerUpper.SS_WO_ME.t -> bool
val subset :
LowerUpper.SS_WO_ME.t -> LowerUpper.SS_WO_ME.t -> bool option
val inter :
LowerUpper.SS_WO_ME.t ->
LowerUpper.SS_WO_ME.t -> LowerUpper.SS_WO_ME.t
val union :
LowerUpper.SS_WO_ME.t ->
LowerUpper.SS_WO_ME.t -> LowerUpper.SS_WO_ME.t
val compare : LowerUpper.SS_WO_ME.t -> LowerUpper.SS_WO_ME.t -> int
val string_of : LowerUpper.SS_WO_ME.t -> string
val normalize : LowerUpper.SS_WO_ME.t -> LowerUpper.SS_WO_ME.t
end
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 make_eq_lower : t -> t -> bool * t
val make_eq_upper : t -> t -> bool * t
val make_eq_eq : t -> t -> bool * t
end
module type S =
sig
type 'a d =
[ `Eq of 'a | `Lower of 'a | `LowerUpper of 'a * 'a | `Upper of 'a ]
type elm
type t = LowerUpper.S.elm LowerUpper.S.d
val create_lower : LowerUpper.S.elm -> LowerUpper.S.t
val create_upper : LowerUpper.S.elm -> LowerUpper.S.t
val create_lowerupper :
LowerUpper.S.elm -> LowerUpper.S.elm -> LowerUpper.S.t
val compare : LowerUpper.S.t -> LowerUpper.S.t -> int
val merge : LowerUpper.S.t -> LowerUpper.S.t -> LowerUpper.S.t
val get_exact : LowerUpper.S.t -> LowerUpper.S.elm option
val string_of : LowerUpper.S.t -> string
val normalize : LowerUpper.S.t -> LowerUpper.S.t
end
module Make :
functor (Set : SMALLSET) ->
sig
type 'a d =
[ `Eq of 'a
| `Lower of 'a
| `LowerUpper of 'a * 'a
| `Upper of 'a ]
type elm = Set.t
type t = elm d
val create_lower : elm -> t
val create_upper : elm -> t
val create_lowerupper : elm -> elm -> t
val compare : t -> t -> int
val merge : t -> t -> t
val get_exact : t -> elm option
val string_of : t -> string
val normalize : t -> t
end
end