package mopsa
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=9f673f79708b44a7effb3b6bb3618d2c
sha512=cb91cb428e43a22f1abbcb8219710d0c10a5b3756d0da392d4084b3b3a6157350776c596983e63def344f617d39964e91f244f60c07958695ee5c8c809a9f0f4
doc/abstraction/Abstraction/Domain/module-type-DOMAIN/index.html
Module type Domain.DOMAINSource
Domain header
*****************
val id : t Core.All.idDomain identifier
val checks : Core.All.check listList of checks performed by the domain
val bottom : tLeast abstract element of the lattice.
val top : tGreatest abstract element of the lattice.
val is_bottom : t -> boolis_bottom a tests whether a is bottom or not.
Lattice operators
*********************
Partial order relation. subset a1 a2 tests whether a1 is related to (or included in) a2.
val widen : 'a Core.All.ctx -> t -> t -> twiden ctx a1 a2 computes an upper bound of a1 and a2 that ensures stabilization of ascending chains.
val merge : t -> (t * Core.All.effect) -> (t * Core.All.effect) -> tmerge pre (post1, effect1) (post2, effect2) synchronizes two divergent post-conditions post1 and post2 using a common pre-condition pre.
Diverging post-conditions emerge after a fork-join trajectory in the abstraction DAG (e.g., a reduced product).
The effects effect1 and effect2 represent a journal of internal statements executed during the the computation of the post-conditions over the two trajectories.
Transfer functions
**********************
val init :
Core.All.program ->
('a, t) Core.All.man ->
'a Core.All.flow ->
'a Core.All.flowInitialization function
val exec :
Core.All.stmt ->
('a, t) Core.All.man ->
'a Core.All.flow ->
'a Core.All.post optionPost-state of statements
val eval :
Core.All.expr ->
('a, t) Core.All.man ->
'a Core.All.flow ->
'a Core.All.eval optionEvaluation of expressions
val ask :
('a, 'r) Core.All.query ->
('a, t) Core.All.man ->
'a Core.All.flow ->
('a, 'r) Core.All.cases optionHandler of queries
Printing
************
val print_state : Core.All.printer -> t -> unitPrinter of an abstract element.
val print_expr :
('a, t) Core.All.man ->
'a Core.All.flow ->
Core.All.printer ->
Core.All.expr ->
unitPrinter of an expression's value