DisjointDomain.ProjectiveSetSet of elements E.t grouped into buckets by R, where each bucket is described by the set B.
Common choices for B are SetDomain.Joined and HoareDomain.SetEM.
Handles Lattice.BotValue from B.
module E : Printable.Smodule B : SetDomain.S with type elt = E.tmodule R : Representative with type elt = E.tinclude SetDomain.S with type elt = E.tinclude Lattice.Sinclude Lattice.POwiden x y assumes leq x y. Solvers guarantee this by calling widen old (join old new).
type elt = E.tval empty : unit -> tval is_empty : t -> boolSee Set.S.remove.
NB! On set abstractions this is a strong removal, i.e. all subsumed elements are also removed.
See Set.S.diff.
NB! On set abstractions this is a strong removal, i.e. all subsumed elements are also removed.
See Set.S.iter.
On set abstractions this iterates only over canonical elements, not all subsumed elements.
See Set.S.map.
On set abstractions this maps only canonical elements, not all subsumed elements.
See Set.S.fold.
On set abstractions this folds only over canonical elements, not all subsumed elements.
See Set.S.for_all.
On set abstractions this checks only canonical elements, not all subsumed elements.
See Set.S.exists.
On set abstractions this checks only canonical elements, not all subsumed elements.
See Set.S.filter.
On set abstractions this filters only canonical elements, not all subsumed elements.
See Set.S.partition.
On set abstractions this partitions only canonical elements, not all subsumed elements.
val cardinal : t -> intSee Set.S.cardinal.
On set abstractions this counts only canonical elements, not all subsumed elements.
See Set.S.elements.
On set abstractions this lists only canonical elements, not all subsumed elements.
See Set.S.to_seq.
On set abstractions this lists only canonical elements, not all subsumed elements.
See Set.S.min_elt.
On set abstractions this chooses only a canonical element, not any subsumed element.
See Set.S.max_elt.
On set abstractions this chooses only a canonical element, not any subsumed element.