package mopsa
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=fdee20e988343751de440b4f6b67c0f4
sha512=f5cbf1328785d3f5ce40155dada2d95e5de5cce4f084ea30cfb04d1ab10cc9403a26cfb3fa55d0f9da72244482130fdb89c286a9aed0d640bba46b7c00e09500
doc/core/Core/Flow/index.html
Module Core.FlowSource
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 flowval 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 flowget_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 flowval raise_alarm :
?force:bool ->
?bottom:bool ->
?warning:bool ->
Alarm.alarm ->
'a Lattice.lattice ->
'a flow ->
'a flowval add_local_assumption :
Alarm.assumption_kind ->
Mopsa_utils.Location.range ->
'a flow ->
'a flowval push_callstack :
string ->
?uniq:string ->
Mopsa_utils.Location.range ->
'a flow ->
'a flow