Ast.Program
Abstract syntax for our programs: a control flow graph with edges annotated by relation
, which are either Guard
or Assign
. This also contains SSA program variable and expressions, as well as get_graph
, the function which translated frama-c's Cil representation to our graph
representation.
module Loc : Std_extra.Types.TYPE
module LocSet : Std_extra.PatriciaTree.Set_S with type elt = Loc.t
module LocMap : Std_extra.PatriciaTree.Map_S with type key = Loc.t
val pgrm_start : Loc.t
val pgrm_end : Loc.t
module Var : Std_extra.Types.TYPE
module VarMap : Std_extra.PatriciaTree.Map_S with type key = Var.t
module VarSet : Std_extra.PatriciaTree.Set_S with type elt = Var.t
val tmp_var : int -> Var.t
module SSAVar : Std_extra.Types.TYPE
module SSAVarMap : Std_extra.PatriciaTree.Map_S with type key = SSAVar.t
module Bindings : Std_extra.Types.TYPE with type t = SSAExpr.t SSAVarMap.t
module MkBindings
(T : Std_extra.Types.TYPE) :
Std_extra.Types.TYPE with type t = T.t * Bindings.t
module Relation : Std_extra.Types.TYPE with type t = relation
val graph_pp : Stdlib.Format.formatter -> graph -> unit
Flip the edges of the given graph
Counts assertion in given graph. An assertion is simply a node with no a single guarded child (or two children whose guards aren't "c" and "!c")
val get_graph : unit -> graph
Get the graph from frama-c's parser
val graph_dotty_printer : Stdlib.Format.formatter -> graph -> unit
Print the graph in dotty format
val guard_arrow_style : unit Std_extra.Types.pp
val assign_arrow_style : unit Std_extra.Types.pp
val relation_arrow_style : relation Std_extra.Types.pp