module Cfg:
module HE: Cil2cfg.HE
(
sig
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
.