Module type LowerUpper.SS_WO_ME


module type SS_WO_ME = sig .. end

type t 
val is_empty : t -> bool
is_empty t should returns true if t is the empty set, otherwise it returns false.
val subset : t -> t -> bool option
subset t1 t2 should return Some true if t1 is a subset of t2. If t1 is no subtype of t2, then it should returns Some false. If the result of the subtype relation is unsure (for example t1 is a type variable that is not assigned to a type, and t2 is a type), then the function should return None.
val inter : t -> t -> t
If inter t1 t2 is called please compute a value t such that subset t t1 and subset t t2 holds.
val union : t -> t -> t
If union t1 t2 is called please compute a value t such that subset t1 t and subset t2 t holds.
val compare : t -> t -> int
val string_of : t -> string
val normalize : t -> t