module MM:
module MV: Mmem.MT
(
M
)
module T: Translate.ToGfol
(
MV
)
type
t = M.t_pred
type
t_exp = M.t_exp
type
t_pred = M.t_pred
type
t_env = MV.t_env
val new_env : unit -> ('a, 'b) Hashtbl.t
val pretty : Format.formatter -> M.t_data Fol.d_term Fol.t_pred -> unit
val pretty_pred : Format.formatter -> M.t_data Fol.d_term Fol.t_pred -> unit
val ptrue : 'a Fol.t_pred
val add_hyp : 'a Fol.t_pred -> 'a Fol.t_pred -> 'a Fol.t_pred
val add_goal : 'a Fol.t_pred -> 'a Fol.t_pred -> 'a Fol.t_pred
val pbot : 'a Fol.t_pred
val translate : Kernel_function.t ->
MV.t_env -> Cil_types.predicate Cil_types.named -> MV.t_pred
val tcond : Cil_types.exp -> MV.t_exp
val texpr : Cil_types.exp -> MV.t_exp
val lval_addr : Cil_types.lhost * Cil_types.offset -> M.t_exp
val assign_exp : Cil_types.lval -> M.t_exp -> M.t_data Fol.d_pred -> M.t_data Fol.d_pred
val assign : Cil_types.lval -> Cil_types.exp -> M.t_data Fol.d_pred -> M.t_data Fol.d_pred
val return : Kernel_function.t ->
Cil_types.exp option ->
MV.t_data Fol.d_pred -> MV.t_data Fol.d_pred
val test : Cil_types.exp ->
MV.t_data Fol.d_pred ->
MV.t_data Fol.d_pred -> MV.t_data Fol.d_pred
val replace_at_vars : (string, Fol.variable) Hashtbl.t ->
Cil_types.logic_label -> M.t_data Fol.d_pred -> M.t_data Fol.d_pred
val quantify_at_vars : (string, Fol.variable) Hashtbl.t ->
Cil_types.logic_label -> M.t_data Fol.d_pred -> M.t_data Fol.d_pred
val quantify_assigns : Cil_types.identified_term Cil_types.assigns list ->
M.t_data Fol.d_pred -> M.t_data Fol.d_pred
the property p
is related to a program point Lo
and we want to move
it to a program point Li
. We know that the only modified data between
the two states are assigns
.
The idea is to build a new memory mem_i that differs from mem_o only
for the assigns. We must be carreful because the assigns are expressed
interms of Li
memory.
val quantify_loop_assigns : Cil_types.identified_term Cil_types.assigns list ->
M.t_data Fol.d_pred -> M.t_data Fol.d_pred option
exception CallNeedFctAssigns
exception CallArgsVsParamNb
exception CallFctPtr
val call_do_body : Cil_types.identified_term Cil_types.assigns list ->
M.t_data Fol.d_pred -> M.t_data Fol.d_pred
val call_add_pre_and_do_args : Cil_types.exp list ->
Cil_types.varinfo list ->
M.t_data Fol.d_term Fol.t_pred list ->
M.t_data Fol.d_term Fol.t_pred -> M.t_data Fol.d_pred
val call_res_and_add_post : Kernel_function.t ->
(string, Fol.variable) Hashtbl.t ->
Cil_types.lval option ->
M.t_data Fol.d_pred list -> M.t_data Fol.d_pred -> M.t_data Fol.d_pred
val quantif_locals : Kernel_function.t -> M.t_data Fol.d_pred -> M.t_data Fol.d_pred
val post_at_end : 'a -> 'b -> 'c -> 'c
val close : 'a -> Kernel_function.t -> M.t_data Fol.d_pred -> M.t_data Fol.d_pred
val add_glob_decls : Fol.decl list -> Fol.decl list