Map_lattice.Make_MapSet_LatticeBuilds a lattice mixing maps and sets, provided that each one has a lattice structure.
module Key : Hptmap.Id_Datatypemodule KSet : Lattice_type.Lattice_Set with type O.elt = Key.tinclude MapSet_Lattice
with type set := KSet.t
and type map := KVMap.t
and type key := Key.t
and type v := Value.tinclude Datatype.S_with_collections with type t := tinclude Datatype.S with type t := tinclude Datatype.S_no_copy with type t := tinclude Datatype.Ty with type t := tmodule Set : Datatype.Set with type elt = tmodule Map : Datatype.Map with type key = tmodule Hashtbl : Datatype.Hashtbl with type key = tinclude Lattice with type t := tinclude Lattice_type.Bounded_Join_Semi_Lattice with type t := tinclude Lattice_type.Join_Semi_Lattice with type t := tdatatype of element of the lattice
include Datatype.S with type t := tinclude Datatype.S_no_copy with type t := tinclude Datatype.Ty with type t := tval packed_descr : Structural_descr.packPacked version of the descriptor.
val reprs : t listList of representants of the descriptor.
val hash : t -> intHash function: same spec than Hashtbl.hash.
val pretty : Stdlib.Format.formatter -> t -> unitPretty print each value in an user-friendly way.
val mem_project : (Project_skeleton.t -> bool) -> t -> boolmem_project f x must return true iff there is a value p of type Project.t in x such that f p returns true.
include Lattice_type.With_Intersects with type t := tval bottom : tval top : tadd key v t binds the value v to key in t. If t is a set, it adds key to the set. If v is bottom, then it removes the key from t instead.
find key t returns the value bound to key in t. It returns Value.top if t is a set that contains key. It returns Value.bottom if key does not belong to t.
If t is a singleton map binding k to v, then returns the pair (k,v).
for_all p t checks if all binding of t satisfy p . Always false if t is top.
exists p t checks if one binding of t satisfies p. Always true if t is top.
val pretty_debug : Stdlib.Format.formatter -> t -> unit