Frama_c_kernel.Abstract_interpFunctors for generic lattices implementations.
Used by other modules e.g. Fval.subdiv_float_interval.
module Comp : sig ... endSignatures for comparison operators ==, !=, <, >, <=, >=.
module Int : sig ... endmodule Rel : sig ... end"Relative" integers. They are subtraction between two absolute integers
module Bool : sig ... endmodule Make_Lattice_Base
(V : Lattice_type.Lattice_Value) :
Lattice_type.Lattice_Base with type l = V.tmodule Make_Lattice_Set
(V : Datatype.S)
(Set : Lattice_type.Hptset with type elt = V.t) :
Lattice_type.Lattice_Set with module O = Setmodule Make_Hashconsed_Lattice_Set
(V : Hptmap.Id_Datatype)
(Set : Hptset.S with type elt = V.t) :
Lattice_type.Lattice_Set with module O = SetSee e.g. base.ml and locations.ml to see how this functor should be applied. The O module passed as argument is the same as O in the result. It is passed here to avoid having multiple modules calling Hptset.Make on the same argument (which is forbidden by the datatype library, and would cause hashconsing problems)
module type Collapse = sig ... endmodule Make_Lattice_Product
(L1 : Lattice_type.AI_Lattice_with_cardinal_one)
(L2 : Lattice_type.AI_Lattice_with_cardinal_one)
(_ : Collapse) :
Lattice_type.Lattice_Product with type t1 = L1.t and type t2 = L2.tIf C.collapse then L1.bottom,_ = _,L2.bottom = bottom
module Make_Lattice_UProduct
(L1 : Lattice_type.AI_Lattice_with_cardinal_one)
(L2 : Lattice_type.AI_Lattice_with_cardinal_one) :
Lattice_type.Lattice_UProduct with type t1 = L1.t and type t2 = L2.tUncollapsed product. Literally the set of (e1, e2) ordered pairs equipped with the order (e1, e2) < (d1, d2) <==> e1 < d1 && e2 < d2.
module Make_Lattice_Sum
(L1 : Lattice_type.AI_Lattice_with_cardinal_one)
(L2 : Lattice_type.AI_Lattice_with_cardinal_one) :
Lattice_type.Lattice_Sum with type t1 = L1.t and type t2 = L2.t