Interpreted_automata.UnrollUnnaturalControl flow graphs where unnatural loops are modified such that all paths entering a loop enters it by its head.
module Vertex_Set : Datatype.S_with_collections with type t = Vertex.Set.tmodule Version :
Datatype.S_with_collections with type t = Vertex.t * Vertex.Set.tinclude Graph
with type V.t = Version.t
and type E.t = Version.t * Version.t edge * Version.t
and type V.label = Version.t
and type E.label = Version.t edgeinclude Graph.Sig.I
with type V.t = Version.t
with type E.t = Version.t * Version.t edge * Version.t
with type V.label = Version.t
with type E.label = Version.t edgemodule E : sig ... endtype edge = E.tval is_empty : t -> boolval nb_vertex : t -> intval nb_edges : t -> intval create : ?size:int -> unit -> tval clear : t -> unittype wto = vertex Wto.partitionval pretty : t Pretty_utils.formatterBuild a wto for the given automaton. The pref function is a comparison function used to determine what is the best vertex to use as a Wto component head. See Wto.Make for more details.
val output_to_dot :
?pp_vertex:V.t Pretty_utils.formatter ->
?pp_edge:E.label Pretty_utils.formatter ->
?wto:wto ->
Stdlib.out_channel ->
t ->
unitOutput the automaton in dot format
val exit_strategy : t -> V.t Wto.component -> wtoExtract an exit strategy from a component, i.e. a sub-wto where all vertices lead outside the wto without passing through the head.
module type Domain = sig ... endAbstract domains
module ForwardAnalysis (D : Domain) : sig ... endForward dataflow analysis
module BackwardAnalysis (D : Domain) : sig ... endForward dataflow analysis
val build : automaton -> G.vertex Wto.partition -> WTOIndex.Table.t -> t