package goblint
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=20d5b7332a9f6072ab9ba86c4a53b898eaf681286c56a8805c41850bbf3ddf41
sha512=7c7685cfcd9aa866bc40e813df2bfcb3c79b3d40e615d8d6d0939c5798b9d70dd7f2ba87a741f5ba0ce891e9d254627207fb28057f1f2f6611e4e0d128fd6a71
doc/goblint.solver/Goblint_solver/SideWPointSelect/Cycle/index.html
Module SideWPointSelect.Cycle
Source
Destabilized a called or start var. Problem: two partial context calls will be precise, but third call will widen the state. If this side destabilized some of the initial unknowns vs, there may be a side-cycle between vs and we should make y a wpoint
Parameters
module HM : Batteries.Hashtbl.S with type key = S.v
module VS : Batteries.Set.S with type elt = S.v
Signature
Create data required by this widening point selection strategy. The parameters are not necessarily used by all strategies.
Notifies this strategy that a side-effect has occurred. This allows the strategy to adapt its internal data structure.
Whether the destabilization of the side-effected var should record the destabilization of called variables and start variables. This information should be passed to should_mark_wpoint
by the solver.
This strategy can decide to prevent widening. Note that, if this strategy does not veto, this does not mean that widening will necessarily be performed. Nor does a call to this function imply that the value of the leaf has grown.
val should_mark_wpoint :
data ->
unit HM.t ->
VS.t ->
S.v option ->
S.v ->
bool option ->
bool
The value of the leaf has grown. Should it be marked a widening point? Widening points are widened when their value grows, unless vetoed. Even if this function is called, leaf y might already be a widening point from an earlier side-effect.