package mopsa
Install
Dune Dependency
Authors
Maintainers
Sources
md5=fdee20e988343751de440b4f6b67c0f4
sha512=f5cbf1328785d3f5ce40155dada2d95e5de5cce4f084ea30cfb04d1ab10cc9403a26cfb3fa55d0f9da72244482130fdb89c286a9aed0d640bba46b7c00e09500
doc/core/Core/Flow/index.html
Module Core.Flow
Source
Abstraction of control flows.
Flows represent a trace partitioning the collect environments depending on the kind of the control flow. Not only reaching environments are concerned, but also environments of traces suspended at previous control points are kept in the flow map. In addition, flow insensitive contexts are also maintained in the flow abstraction.
A flow is a flow map augmented with an context
Empty set of flows
Set of all possible flows
singleton ctx tk e
returns a flow with a context ctx
and a map with a single binding tk
to environment e
Emptiness test
top test
Inclusion test
Abstraction union operator.
Union over a list of flows
Abstract intersection operator
Intersection over a list of flows.
Widening operator.
get tk lat flow
returns the abstract element associated to token tk
in flow
. Returns lat.bottom
if the binding is not found.
set tk a lat flow
overwrites the binding of token tk
in flow
with the abstract element a
.
set_bottom tk lat flow
overwrites the binding of token tk
in flow
with a ⊥ environment.
copy tk1 tk2 lat flow1 flow2
copies the environment at token tk1
in flow1
into token tk2
in flow2
add tk a lat flow
appends (by union) a
to the existing binding of tk
in flow
. It is equivalent to set tk (lat.join a (get tk lat flow)) flow
rename tki tko flow
appends (by union) the environment of tki to the existing binding of tka
in flow
. It is equivalent to add tko (get tki flow) flow
remove tk flow
removes token tk
from the map of flow
filter f flow
keeps in flow
all tokens tk
verifying f tk = true
val map2zo :
(Token.token -> 'a -> 'a) ->
(Token.token -> 'a -> 'a) ->
(Token.token -> 'a -> 'a -> 'a) ->
(Alarm.report -> Alarm.report -> Alarm.report) ->
'a flow ->
'a flow ->
'a flow
val merge :
'a Lattice.lattice ->
merge_report:(Alarm.report -> Alarm.report -> Alarm.report) ->
'a flow ->
('a flow * Change.change_map) ->
('a flow * Change.change_map) ->
'a flow
get_all_ctx flow
retrieves the context pool from flow
set_all_ctx ctx flow
set the context pool of flow
to ctx
map_all_ctx f flow
set the context of flow
to be the image of the initial context of flow
by f
val add_alarm :
?force:bool ->
?warning:bool ->
Alarm.alarm ->
'a Lattice.lattice ->
'a flow ->
'a flow
val raise_alarm :
?force:bool ->
?bottom:bool ->
?warning:bool ->
Alarm.alarm ->
'a Lattice.lattice ->
'a flow ->
'a flow
val add_local_assumption :
Alarm.assumption_kind ->
Mopsa_utils.Location.range ->
'a flow ->
'a flow
val push_callstack :
string ->
?uniq:string ->
Mopsa_utils.Location.range ->
'a flow ->
'a flow