Tai.Domain_builder
Builds the domain used for the analysis, as specified by the expression given to -tai-domain
.
Simple syntax tree used to represent the domain used. Useful to specify the analysis from the command line via the -tai-domain argument. See parser.mly for the parser that creates this tree.
The three types of product, matching the products in Domains.Product
type ssa_domain =
| SSA_Domain of domain_id
| SSA_Functor of domain_id * ssa_domain
| SSA_Product of ssa_domain * ssa_domain
| SSA_Numeric of domain_id * domain_id
Syntax tree for an SSA domain (i.e. a domain that appears under the Domains.Lift
functor
type classical_domain =
| Classical_Domain of domain_id
| Classical_Functor of domain_id * classical_domain
| Classical_Product of classical_domain * classical_domain
| Classical_Numeric of domain_id * domain_id
| Lift of bool * ssa_domain
Syntax tree for a classical/IMP (top-level) domain.
val svas :
(string * (module Single_value_abstraction.Sig.SingleValueAbstraction)) list
All single value abstractions from the Single_value_abstraction
library
type ('state, 'sva) numeric = {
numeric_state : 'state -> 'sva Ast.Program.VarMap.t;
expr_forwards : 'state -> Ast.Program.VarExpr.t -> 'sva;
}
Used to cast to a contained IMP Numeric domain
type ('state, 'sva) ssa_numeric = {
ssa_numeric_state : 'state -> 'sva Ast.Program.SSAExpr.Map.t;
ssa_expr_forwards : 'state -> Ast.Program.SSAExpr.t -> 'sva;
ssa_bind : 'state -> Ast.Program.VarExpr.t -> Ast.Program.SSAExpr.t;
var_store : 'state -> Ast.Program.SSAExpr.t Ast.Program.VarMap.t;
}
Used to cast to a contained SSA Numeric domain from an IMP Domain
module type GRAPH_WITH_CAST = sig ... end
Used to cast to a contained free algebra to generate the graph
module Builder
(Zs : Single_value_abstraction.Sig.SingleValueAbstraction) :
sig ... end
The builder is parameterized by the default single value abstraction, used when unspecified in numeric domains. This default is the only one usable for numeric comparisons.