Stacked.CombinerToStackedSourcemodule T : STACKED_COMBINER*****************
type t = T.tType of an abstract elements.
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.
*********************
val subset :
('a, t) Core.All.man ->
'a Core.All.ctx ->
(t * 'a) ->
(t * 'a) ->
bool * 'a * 'aval join :
('a, t) Core.All.man ->
'a Core.All.ctx ->
(t * 'a) ->
(t * 'a) ->
t * 'a * 'aval meet :
('a, t) Core.All.man ->
'a Core.All.ctx ->
(t * 'a) ->
(t * 'a) ->
t * 'a * 'aval widen :
('a, t) Core.All.man ->
'a Core.All.ctx ->
(t * 'a) ->
(t * 'a) ->
t * 'a * 'a * boolmerge pre (post1, change1) (post2, change2) 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 changes change1 and change2 represent a journal of internal statements executed during the the computation of the post-conditions over the two trajectories.
**********************
val init :
Core.All.program ->
('a, t) Core.All.man ->
'a Core.All.flow ->
'a Core.All.post optionInitialization 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
************
Printer 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