module FixpointStd:Fixpoint analysis of an equation system: standard methodsig
..end
val is_tvertex : ('vertex, 'hedge, 'abstract, 'arc) FixpointType.graph ->
'vertex array -> bool
val treach_of_tvertex : descend:bool ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
'vertex array -> 'attr array
val update_workingsets : ('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
hedge:bool -> 'vertex -> unit
hedge=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.graph
init 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 -> bool
true
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 -> bool
val process_vertex : ('vertex, 'hedge, 'attr, 'arc) FixpointType.manager ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
widening:bool -> ('vertex, 'hedge) FixpointType.strategy_vertex -> bool
val process_strategy : ('vertex, 'hedge, 'attr, 'arc) FixpointType.manager ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
depth:int -> ('vertex, 'hedge) FixpointType.strategy -> bool
val descend_strategy : ('vertex, 'hedge, 'attr, 'arc) FixpointType.manager ->
('vertex, 'hedge, 'attr, 'arc) FixpointType.graph ->
('vertex, 'hedge) FixpointType.strategy -> bool
val 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.output
analysis 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
.