module type JOIN_SEMILATTICE =sig
..end
type
t
val join : t ->
t -> t
val bottom : t
val is_included : t -> t -> bool
val join_and_is_included : t ->
t -> t * bool
Instead of defining it directly, it can be defined from join and
equal, or from is_included, for instance by
if is_included new old then (true,old) else (false, join old new)
or
let j = join old new in (equal j new, j)
.
val pretty : Format.formatter -> t -> unit