Frama-C API - UnrollUnnatural
Control 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.t
module Version : Datatype.S_with_collections with type t = Vertex.t * Vertex.Set.t
include 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 edge
include 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 edge
module E : sig ... end
type edge = E.t
val is_empty : t -> bool
val nb_vertex : t -> int
val nb_edges : t -> int
val create : ?size:int -> unit -> t
val clear : t -> unit
type wto = vertex Wto.partition
val pretty : t Pretty_utils.formatter
Build 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 -> unit
Output the automaton in dot format
val exit_strategy : t -> V.t Wto.component -> wto
Extract an exit strategy from a component, i.e. a sub-wto where all vertices lead outside the wto without passing through the head.
val build : automaton -> G.vertex Wto.partition -> WTOIndex.Table.t -> t