Module Register.Cfg2


module Cfg2: Calculus.Cfg(M2)

module HE: Cil2cfg.HE(sig
type t = W.t_prop 
end)
to store de results of the computations
val get_wp_edge : HE.t -> Cil2cfg.CFG.E.t -> HE.ti
val do_labels : W.t_env -> Calculus.CFG.E.t -> W.t_prop -> W.t_prop
val set_wp_edge : Db_types.kernel_function ->
WpAnnot.t ->
W.t_env -> HE.t -> Calculus.CFG.E.t -> W.t_prop -> W.t_prop
store the result p for the computation of the edge e. if we have some hyps H about this edge, store H => p if we have some goal G about this edge, store G /\ p Notice that if we have both, we can use H for G so we build : H => G /\ p
val wp_call : WpAnnot.t ->
Cil_types.lval option ->
Cil_types.exp -> Cil_types.exp list -> W.t_prop -> W.t_prop
val wp_stmt : Db_types.kernel_function ->
WpAnnot.t -> Cil_types.stmt -> W.t_prop -> W.t_prop
val get_loop_assigns : WpAnnot.t ->
Cil2cfg.CFG.E.t -> Cil_types.identified_term Cil_types.assigns list
val get_only_succ : Db_types.kernel_function * Calculus.CFG.t * WpAnnot.t * HE.t *
W.t_env -> Calculus.CFG.t -> Calculus.CFG.vertex -> HE.ti
val compute_edge : Db_types.kernel_function * Calculus.CFG.t * WpAnnot.t * HE.t *
W.t_env -> Calculus.CFG.edge -> HE.ti
val build_cfg_annots : 'a -> HE.t -> Format.formatter -> Cil2cfg.CFG.E.t -> unit
val get_result : Cil2cfg.t ->
Db_types.kernel_function * Calculus.CFG.t * 'a * HE.t * W.t_env ->
string -> Fol.decl list -> Fol.decl list
val cfg : ?with_bot:bool ->
Fol.decl list ->
Cil2cfg.t ->
WpAnnot.t -> Fol.decl list * (Format.formatter -> Cil2cfg.CFG.E.t -> unit)
val add_glob_decls : Fol.decl list -> Fol.decl list
must be called to get the global definition/declaration after having done computation with cfg. Several cfg computation can be done before calling glob_decl.