module FixpointStd:Fixpoint analysis of an equation system: standard methodsig..end
val is_tvertex : ('vertex, 'hedge, 'abstract, 'arc) FixpointType.graph ->
'vertex array -> boolval treach_of_tvertex : descend:bool ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
'vertex array -> 'attr arrayval update_workingsets : ('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
hedge:bool -> 'vertex -> unithedge=true, then also consider the working set
associated to hyperhedges.val init : ('vertex, 'hedge, 'attr, 'arc) FixpointType.manager ->
('vertex, 'hedge, 'e, 'f, 'g) PSHGraph.t ->
'vertex PSette.t -> ('vertex, 'hedge, 'attr, 'arc) FixpointType.graphinit manager input sinit creates the internal graph
structure (from the equation graph input) and initialize the
working sets (from the set of initial points sinit) (stored
in the info field of the internal graph).val accumulate_vertex : ('vertex, 'hedge, 'attr, 'arc) FixpointType.manager ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
('vertex, 'hedge) FixpointType.strategy_vertex ->
'attr FixpointType.attr -> booltrue if
the value is strictly increasing.val propagate_vertex : ('vertex, 'hedge, 'attr, 'arc) FixpointType.manager ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
descend:bool ->
('vertex, 'hedge) FixpointType.strategy_vertex ->
'attr FixpointType.attr -> boolval process_vertex : ('vertex, 'hedge, 'attr, 'arc) FixpointType.manager ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
widening:bool -> ('vertex, 'hedge) FixpointType.strategy_vertex -> boolval process_strategy : ('vertex, 'hedge, 'attr, 'arc) FixpointType.manager ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
depth:int -> ('vertex, 'hedge) FixpointType.strategy -> boolval descend_strategy : ('vertex, 'hedge, 'attr, 'arc) FixpointType.manager ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
('vertex, 'hedge) FixpointType.strategy -> boolval descend : ('vertex, 'hedge, 'attr, 'arc) FixpointType.manager ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
('vertex, 'hedge) FixpointType.strategy -> bool
descend manager graph strategy performs descending
iterations on the part of the graph represented by the
strategy
val process_toplevel_strategy : ('vertex, 'hedge, 'attr, 'arc) FixpointType.manager ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
('vertex, 'hedge) FixpointType.strategy -> bool * bool
process_toplevel_strategy manager graph strategy:
assuming that graph has been created with the function
FixpointStd.init, this function solves iteratively the fixpoint
equation, using manager for interpreting the equation
system graph, and the strategy strategy for the
iteration order and the application of widening.
Descending iterations are applied separately to each upper-level component of the strategy, before processing the next such component in the strategy.
The first returned Boolean indicates if some growth has
been observed (before descending iteration), and the
second one indicates if some reduction has been observed
after descending iteration.
val output_of_graph : ('vertex, 'hedge, 'abstract, 'arc) FixpointType.graph ->
('vertex, 'hedge, 'abstract, 'arc) FixpointType.output
Getting the result of the analysis from the internal
representation.
val analysis : ('vertex, 'hedge, 'attr, 'arc) FixpointType.manager ->
('vertex, 'hedge, 'e, 'f, 'g) PSHGraph.t ->
'vertex PSette.t ->
('vertex, 'hedge) FixpointType.strategy ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.outputanalysis manager equation_graph sinit
strategy takes a graph giving the structure of the equation
system, a manager indicating how to interpret the equation
system, a (super)set of the variables to be initialized to a
non-empty value, and an iteration strategy. It returns the
result of the full analysis with an object of type
Fixpoint.output.