Pds_reachability_analysis.MakeSourcemodule Basis : Pds_reachability_basis.Basismodule Dph :
Pds_reachability_types_stack.Dynamic_pop_handler
with module Stack_element = Basis.Stack_element
and module State = Basis.Stateinclude Pds_reachability_types.Types
with module State = Basis.State
with module Stack_element = Basis.Stack_element
with module Targeted_dynamic_pop_action = Dph.Targeted_dynamic_pop_action
with module Untargeted_dynamic_pop_action = Dph.Untargeted_dynamic_pop_actionThe decorated type of states in the PDS.
The decorated type of stack elements in the PDS.
The decorated type of targeted dynamic pop actions in the PDS.
The decorated type of untargeted dynamic pop actions in the PDS.
type stack_action =
(Stack_element.t, Targeted_dynamic_pop_action.t)
Pds_reachability_types_stack.pds_stack_actionStack actions which may be performed in the PDS.
The decorated type of node used for reachability.
The decorated type of edge used in reachability.
The type of edge-generating functions used in this analysis.
type untargeted_dynamic_pop_action_function =
State.t ->
Untargeted_dynamic_pop_action.t Batteries.Enum.tThe type of functions to generate untargeted dynamic pop actions in this analysis.
The type of a reachability analysis in this module.
The type of reachability analysis logging functions. These functions are called whenever the associated analysis is stepped. The two arguments are the analysis before stepping and the analysis after.
The empty analysis. This analysis has no states, edges, or edge functions.
Adds a single edge to a reachability analysis.
Adds a function to generate edges for a reachability analysis. Given a source node, the function generates edges from that source node. The function must be pure; for a given source node, it must generate all edges that it can generate on the first call.
val add_untargeted_dynamic_pop_action :
State.t ->
Untargeted_dynamic_pop_action.t ->
analysis ->
analysisAdds an untargeted pop action to a reachability analysis. Untargeted pop action are similar to targeted pop actions except that they are not created as an edge with a target node; instead, the target is decided in some way by the pushed element that the untargeted dynamic pop is consuming.
val add_untargeted_dynamic_pop_action_function :
untargeted_dynamic_pop_action_function ->
analysis ->
analysisAdds a function to generate untargeted dynamic pop ations for a reachability analysis. Given a source node, the function generates untargeted actions from that source node. The function must be pure; for a given source, it must generate all actions that it can generate on the first call.
Adds a state and initial stack element to the analysis. This permits the state to be used as the source state of a call to get_reachable_states.
Takes a step toward closing a given reachability analysis. If the analysis is already closed, it is returned unchanged.
val get_reachable_states :
State.t ->
stack_action list ->
analysis ->
State.t Batteries.Enum.tDetermines the states which are reachable from a given state and initial stack element. This state must have been added to the analysis previously. If the analysis is not fully closed, then the enumeration of reachable states may be incomplete.
Pretty-printing function for the analysis.
An exception raised when a reachable state query occurs before the state is added as a start state.
Determines the size of the provided analysis in terms of both node and edge count (respectively).
Determines the amount of work done on a particular analysis.
Extracts a subset of information about an analysis state as JSON data. Some parts of the analysis state (such as edge functions) will be elided as they cannot be represented.
Extracts a subset of information about an analysis state as JSON data. This extraction generates a /difference/ between two reachability analyses, giving values appearing in the latter but not the former. This function assumes the latter is a strict superset of the former; any values appearing in the former and not the latter are ignored. The format of this dump is identical to that given by dump_yojson.