Tai.Wto
This modules implements functions to compute a graph's weak topological ordering (WTO). And use these to find a valid set of widening edges. It also contains the Fixpoint
module, which performs the main analysis (iterate until fixpoint is reached)
val pp : Stdlib.Format.formatter -> t -> unit
val partition :
init:Ast.Program.Loc.t ->
succs:(Ast.Program.Loc.t -> ('label * Ast.Program.Loc.t) list) ->
t
Compute the WTO on the given LTS, ~succs
maps each node to a list of labelled outgoing edges
val widening_edges_preds :
preds:(Ast.Program.Loc.t -> ('label * Ast.Program.Loc.t) list) ->
t ->
(Ast.Program.Loc.t * 'label * Ast.Program.Loc.t) list
Compute widening edges from preds function
val widening_edges_succs :
succs:(Ast.Program.Loc.t -> ('label * Ast.Program.Loc.t) list) ->
t ->
(Ast.Program.Loc.t * 'label * Ast.Program.Loc.t) list
Compute widening edges from succs function
Change the WTO so that the fixpoint on it gives the iterative strategy Compute widening edges BEFORE calling this
module Fixpoint (L : Domains.Sig.Classical_Domain) : sig ... end
Calculate the abstract program state (a function Loc.t -> L.State.t
represented as a map)