module type JOIN_SEMILATTICE =sig..end
type t
val join : t ->
t -> tval bottom : tval join_and_is_included : t ->
t -> t * boolsmaller and larger are actually correct only if there
is an inclusion.
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