Module type Toprop.T_for_Cfg


module type T_for_Cfg = sig .. end
This is what is really needed to propagate something through the CFG. Usually, the propagated thing should be a predicate, but it can be more sophisticated like lists of predicates, or maybe a structure to keep hypotheses and goals separated. Moreover, proof obligations may also need to be handeled.

val model_name : string
type t_prop 
val pretty : Format.formatter -> t_prop -> unit
val ptrue : t_prop
type t_env 
val new_env : unit -> t_env
val process_at_vars : t_env ->
Cil_types.logic_label -> t_prop -> t_prop
val quantify_at_vars : t_env ->
Cil_types.logic_label -> t_prop -> t_prop
val add_hyp : Db_types.kernel_function ->
t_env ->
WpAnnot.prop_kind ->
Cil_types.predicate Cil_types.named ->
t_prop -> t_prop
val add_goal : Db_types.kernel_function ->
t_env ->
WpAnnot.prop_kind ->
Cil_types.predicate Cil_types.named ->
t_prop -> t_prop
val assign : Cil_types.lval ->
Cil_types.exp -> t_prop -> t_prop
val return : Db_types.kernel_function ->
Cil_types.exp option -> t_prop -> t_prop
val test : Cil_types.exp ->
t_prop -> t_prop -> t_prop
val call : (Db_types.kernel_function ->
Cil_types.predicate Cil_types.named list *
Cil_types.predicate Cil_types.named list *
Cil_types.identified_term Cil_types.assigns list) ->
Cil_types.lval option ->
Cil_types.exp ->
Cil_types.exp list -> t_prop -> t_prop
val wp_loop : string ->
Cil_types.identified_term Cil_types.assigns list ->
t_prop -> t_prop
val quantif_locals : Db_types.kernel_function ->
t_prop -> t_prop
val close : Db_types.kernel_function ->
t_env -> t_prop -> t_prop
val add_goals : string -> Fol.decl list -> t_prop -> Fol.decl list
val add_glob_decls : Fol.decl list -> Fol.decl list