|
|
|
@ -71,8 +71,8 @@ module FiniteSet (Element : PrettyPrintable.PrintableOrderedType) : sig
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
(** Lift a set to a powerset domain ordered by superset, so the join operator is intersection *)
|
|
|
|
|
module InvertedSet (Set : PrettyPrintable.PPSet) : sig
|
|
|
|
|
include PrettyPrintable.PPSet with type t = Set.t and type elt = Set.elt
|
|
|
|
|
module InvertedSet (Element : PrettyPrintable.PrintableOrderedType) : sig
|
|
|
|
|
include module type of PrettyPrintable.MakePPSet (Element)
|
|
|
|
|
|
|
|
|
|
include S with type astate = t
|
|
|
|
|
end
|
|
|
|
@ -87,13 +87,10 @@ end
|
|
|
|
|
|
|
|
|
|
(** Map domain ordered by intersection over the set of bindings, so the top element is the empty
|
|
|
|
|
map. Every element implictly maps to top unless it is explicitly bound to something else *)
|
|
|
|
|
module InvertedMap (Map : PrettyPrintable.PPMap) (ValueDomain : S) : sig
|
|
|
|
|
include PrettyPrintable.PPMap with type 'a t = 'a Map.t and type key = Map.key
|
|
|
|
|
|
|
|
|
|
include S with type astate = ValueDomain.astate Map.t
|
|
|
|
|
module InvertedMap (Key : PrettyPrintable.PrintableOrderedType) (ValueDomain : S) : sig
|
|
|
|
|
include module type of PrettyPrintable.MakePPMap (Key)
|
|
|
|
|
|
|
|
|
|
val empty : [`This_domain_is_not_pointed]
|
|
|
|
|
(** this domain doesn't have a natural bottom element *)
|
|
|
|
|
include S with type astate = ValueDomain.astate t
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
(** Boolean domain ordered by p || ~q. Useful when you want a boolean that's true only when it's
|
|
|
|
|