sig
module Graph : SHGraph.S
type ('a, 'b) manager = {
mutable bottom : Graph.vertex -> 'a;
mutable canonical : Graph.vertex -> 'a -> unit;
mutable is_bottom : Graph.vertex -> 'a -> bool;
mutable is_leq : Graph.vertex -> 'a -> 'a -> bool;
mutable join : Graph.vertex -> 'a -> 'a -> 'a;
mutable join_list : Graph.vertex -> 'a list -> 'a;
mutable widening : Graph.vertex -> 'a -> 'a -> 'a;
mutable apply : Graph.hedge -> 'a array -> 'b * 'a;
mutable arc_init : Graph.hedge -> 'b;
mutable get_init : Graph.vertex -> 'a;
mutable print_abstract : Format.formatter -> 'a -> unit;
mutable print_arc : Format.formatter -> 'b -> unit;
mutable print_vertex : Format.formatter -> Graph.vertex -> unit;
mutable print_hedge : Format.formatter -> Graph.hedge -> unit;
mutable widening_first : bool;
mutable widening_start : int;
mutable widening_freq : int;
mutable widening_descend : int;
mutable print_analysis : bool;
mutable print_step : bool;
mutable print_state : bool;
mutable print_postpre : bool;
}
type strategy_vertex = {
mutable vertex : Graph.vertex;
mutable hedges : Graph.hedge list;
mutable widen : bool;
}
type strategy = MkFixpoint.S.strategy_vertex Ilist.t
type stat = { time : float; iterations : int; descendings : int; }
type ('a, 'b) output = ('a, 'b, MkFixpoint.S.stat) Graph.t
type ('a, 'b) graph
val print_strategy_vertex :
('a, 'b) MkFixpoint.S.manager ->
Format.formatter -> MkFixpoint.S.strategy_vertex -> unit
val print_strategy :
('a, 'b) MkFixpoint.S.manager ->
Format.formatter -> MkFixpoint.S.strategy -> unit
val print_graph :
('a, 'b) MkFixpoint.S.manager ->
Format.formatter -> ('a, 'b) MkFixpoint.S.graph -> unit
val print_stat : Format.formatter -> MkFixpoint.S.stat -> unit
val print_output :
('a, 'b) MkFixpoint.S.manager ->
Format.formatter -> ('a, 'b) MkFixpoint.S.output -> unit
val init :
('a, 'b) MkFixpoint.S.manager ->
('c, 'd, 'e) Graph.t -> Graph.SetV.t -> ('a, 'b) MkFixpoint.S.graph
val fixpoint :
('a, 'b) MkFixpoint.S.manager ->
('a, 'b) MkFixpoint.S.graph -> MkFixpoint.S.strategy -> unit
val descend :
('a, 'b) MkFixpoint.S.manager ->
('a, 'b) MkFixpoint.S.graph -> MkFixpoint.S.strategy -> bool
val analysis :
('a, 'b) MkFixpoint.S.manager ->
('c, 'd, 'e) Graph.t ->
Graph.SetV.t -> MkFixpoint.S.strategy -> ('a, 'b) MkFixpoint.S.graph
val analysis_guided :
?depth:int ->
?priority:(Graph.hedge -> int) ->
?modify_strategy:(MkFixpoint.S.strategy -> MkFixpoint.S.strategy) ->
('a, 'b) MkFixpoint.S.manager ->
('c, 'd, 'e) Graph.t -> Graph.SetV.t -> ('a, 'b) MkFixpoint.S.graph
val output_of_graph :
('a, 'b) MkFixpoint.S.graph -> ('a, 'b) MkFixpoint.S.output
val strategy_default :
?depth:int ->
?priority:(Graph.hedge -> int) ->
('a, 'b, 'c) Graph.t -> Graph.SetV.t -> MkFixpoint.S.strategy
end