Module type Relational.Domain


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').