module type Domain = sig
.. end
Module type for relational domains.
type
t
Type of abstract values.
val fprint : Format.formatter -> t -> unit
Prints an abstract value.
Lattice Structure
val order : t -> t -> bool
Order on type t
. t
with this order must be a lattice.
val top : Name.Set.t -> t
val bottom : Name.Set.t -> t
Infimums of the lattice (when the relational domain focuses on given set
of variables).
val join : t -> t -> t
val meet : t -> t -> t
Least upper bound and greatest lower bound of the lattice.
val widening : t -> t -> t
Widening to ensure termination of the analyses.
Abstract Operators
Abstract semantics of assignments and guards.
val assignment : Name.t -> Ast.expr -> t -> t
assignment n e t
returns a
t'
such that:
[|n = e;|](\gamma(t)) \subseteq \gamma(t').
val guard : Ast.expr -> t -> t
guard e t
returns a
t'
such that:
[|e > 0|](\gamma(t)) \subseteq \gamma(t').