Module CfgProof.Create.CV


module CV: CfgWeakestPrecondition.Create(sig
include WpModel
val model : string
end)

module F: WpModel.D.F
module D: WpModel.D
module E: Translate_expr.Create(WpModel)
module L: Translate_prop.Create(WpModel)
val predicate : L.env ->
Cil_types.predicate Cil_types.named -> WpModel.D.F.pred Wp_error.cc
val expr : WpModel.mem -> Cil_types.exp -> WpModel.value Wp_error.cc
val addr : WpModel.mem -> Cil_types.lval -> WpModel.loc Wp_error.cc
val cond : WpModel.mem -> Cil_types.exp -> WpModel.D.F.pred Wp_error.cc
val cast : Cil_types.typ -> Cil_types.typ -> WpModel.value -> WpModel.value Wp_error.cc
type t_env = F.pool * L.env 
type t_prop = assigns_kind *
property

type property = {
   bindings : D.bindings;
   instances : L.instance list;
   property : F.pred;
}
type assigns_kind =
| NoAssigns
| EffectAssigns of effect_assigns
| RegionAssigns of region_assigns

type effect_assigns = {
   a_pid : WpAnnot.prop_id;
   a_label : Clabels.c_label;
   a_effect : F.var;
   a_locals : F.var;
}
type region_assigns = {
   r_pid : WpAnnot.prop_id;
   r_vars : F.var list;
   r_global : WpModel.region;
   r_label : Clabels.c_label;
   mutable r_effect : int;
   mutable r_locals : (Cil_types.varinfo list * F.var list *
WpModel.region)
list
;
}
val empty : assigns_kind *
property
val zip : 'a * property ->
D.F.pred
val merge_assigns : assigns_kind ->
assigns_kind ->
assigns_kind
val merge_property : (D.F.pred ->
D.F.pred ->
F.pred) ->
property ->
property ->
property
val merge : assigns_kind *
property ->
assigns_kind *
property ->
assigns_kind *
property
val pretty : Format.formatter -> 'a * property -> unit
val new_env : Kernel_function.t ->
F.pool * L.env

type closing =
| Keep_opened
| Apply_hints
| Close_context

type assigns =
| Keep_assigns
| Clear_assigns
| Label_assigns of Clabels.c_label
| Goal_assigns of assigns_kind Pervasives.ref
val pp_vars : Format.formatter -> Cil_types.varinfo list -> unit
val region_assigns : int -> D.F.pred
val region_included : WpModel.region ->
region_assigns ->
F.pred
val close_property : string ->
D.context ->
F.pred ->
closing ->
property
exception Failed
val on_context : D.F.pool * L.env ->
string ->
assigns_kind *
property ->
closing ->
assigns ->
(L.env ->
assigns_kind ->
F.pred -> F.pred) ->
t_prop
val label : D.F.pool * L.env ->
Cil_types.logic_label ->
assigns_kind *
property ->
t_prop
val merge_with : (D.F.pred ->
D.F.pred ->
F.pred) ->
assigns_kind *
property ->
assigns_kind *
property ->
assigns_kind *
property
val add_as_hyp : 'a ->
assigns_kind *
property ->
assigns_kind *
property ->
assigns_kind *
property
val add_as_goal : 'a ->
assigns_kind *
property ->
assigns_kind *
property ->
assigns_kind *
property
val add_hyp : D.F.pool * L.env ->
WpAnnot.prop_id ->
Cil_types.predicate Cil_types.named ->
assigns_kind *
property ->
t_prop
val add_goal : D.F.pool * L.env ->
WpAnnot.prop_id ->
Cil_types.predicate Cil_types.named ->
assigns_kind *
property ->
t_prop
val add_axiom : 'a ->
string ->
Cil_types.logic_label list -> Cil_types.predicate Cil_types.named -> unit
val assign : D.F.pool * L.env ->
Cil_types.lval ->
Cil_types.exp ->
assigns_kind *
property ->
t_prop
val return : D.F.pool * L.env ->
Cil_types.exp option ->
assigns_kind *
property ->
t_prop
val test : D.F.pool * L.env ->
Cil_types.exp ->
assigns_kind *
property ->
assigns_kind *
property ->
t_prop
val case_of_exp : WpModel.mem ->
Cil_types.exp -> Formula.integer F.term
val switch : D.F.pool * L.env ->
Cil_types.exp ->
(Cil_types.exp list *
(assigns_kind *
property))
list ->
assigns_kind *
property ->
t_prop
val scope : D.F.pool * L.env ->
Cil_types.varinfo list ->
Mcfg.scope ->
assigns_kind *
property ->
t_prop
val build_prop_of_from : D.F.pool * L.env ->
(WpAnnot.prop_id * Cil_types.predicate Cil_types.named) list ->
assigns_kind *
property ->
t_prop
val close : D.F.pool * L.env ->
assigns_kind *
property ->
t_prop
val translate_assigned_targets : L.env ->
Cil_types.term list -> WpModel.loc WpModel.D.assigned list Wp_error.cc
val translate_assigned : L.env ->
(Cil_types.identified_term Cil_types.zone * 'a) list ->
WpModel.loc WpModel.D.assigned list Wp_error.cc
val assigned_of_assigns : L.env ->
(Cil_types.identified_term Cil_types.zone * 'a) list ->
WpModel.loc WpModel.D.assigned list option
val assigned_for_assigns_goal : WpAnnot.a_kind ->
Clabels.c_label ->
L.env ->
(Cil_types.identified_term Cil_types.zone * 'a) list ->
WpModel.loc WpModel.D.assigned list
val havoc_region : WpAnnot.a_kind ->
WpModel.frame ->
WpModel.loc WpModel.D.assigned list option ->
D.F.pred ->
D.F.pred
val assigns_method : unit -> Mcfg.assigns_method
val add_normal_assigns : D.F.pool * L.env ->
WpAnnot.prop_id ->
Cil_types.logic_label ->
WpAnnot.a_kind ->
(Cil_types.identified_term Cil_types.zone * 'a) list ->
assigns_kind *
property ->
t_prop
val add_effect_assigns : D.F.pool * L.env ->
WpAnnot.prop_id ->
Cil_types.logic_label ->
WpAnnot.a_kind ->
(Cil_types.identified_term Cil_types.zone * 'a) list ->
assigns_kind *
property ->
t_prop
val add_region_assigns : D.F.pool * L.env ->
WpAnnot.prop_id ->
Cil_types.logic_label ->
WpAnnot.a_kind ->
(Cil_types.identified_term Cil_types.zone * 'a) list ->
assigns_kind *
property ->
t_prop
val add_assigns : D.F.pool * L.env ->
WpAnnot.prop_id ->
Cil_types.logic_label ->
WpAnnot.a_kind ->
(Cil_types.identified_term Cil_types.zone * 'a) list ->
assigns_kind *
property ->
t_prop
val check_assigns : assigns_kind ->
WpModel.loc WpModel.D.assigned list option ->
D.F.pred ->
D.F.pred
val use_assigns : D.F.pool * L.env ->
WpAnnot.prop_id ->
WpAnnot.a_kind ->
(Cil_types.identified_term Cil_types.zone * 'a) list ->
assigns_kind *
property ->
t_prop
val call : L.env ->
get_pre:(Db_types.kernel_function ->
('a * Cil_types.predicate Cil_types.named) list) ->
get_post:(Db_types.kernel_function ->
('b * Cil_types.predicate Cil_types.named) list) ->
get_exits:(Db_types.kernel_function ->
('c * Cil_types.predicate Cil_types.named) list) ->
get_assigns:(Db_types.kernel_function ->
(Cil_types.identified_term Cil_types.zone * 'd) list) ->
Cil_types.stmt ->
Cil_types.lval option ->
Cil_types.exp ->
Cil_types.exp list ->
assigns_kind ->
F.pred ->
F.pred -> WpModel.D.F.pred * WpModel.D.F.pred
val call_normal : D.F.pool * L.env ->
get_pre:(Db_types.kernel_function ->
('a * Cil_types.predicate Cil_types.named) list) ->
get_post:(Db_types.kernel_function ->
('b * Cil_types.predicate Cil_types.named) list) ->
get_assigns:(Db_types.kernel_function ->
(Cil_types.identified_term Cil_types.zone * 'c) list) ->
Cil_types.stmt ->
Cil_types.lval option ->
Cil_types.exp ->
Cil_types.exp list ->
assigns_kind *
property ->
t_prop
val call_exit : D.F.pool * L.env ->
get_pre:(Db_types.kernel_function ->
('a * Cil_types.predicate Cil_types.named) list) ->
get_exits:(Db_types.kernel_function ->
('b * Cil_types.predicate Cil_types.named) list) ->
get_assigns:(Db_types.kernel_function ->
(Cil_types.identified_term Cil_types.zone * 'c) list) ->
Cil_types.stmt ->
Cil_types.exp ->
Cil_types.exp list ->
assigns_kind *
property ->
t_prop