sig
type scope =
SC_Global
| SC_Function_in
| SC_Function_frame
| SC_Function_out
| SC_Block_in
| SC_Block_out
type assigns_method =
NoAssigns
| NormalAssigns
| EffectAssigns
| RegionAssigns
module type Export =
sig
type pred
val export_goal :
Format.formatter -> string -> Mcfg.Export.pred -> unit
val export_decl :
Format.formatter -> Mcfg.Export.pred Formula.declaration -> unit
end
module type Splitter =
sig
type pred
val split :
Mcfg.assigns_method -> Mcfg.Splitter.pred -> Mcfg.Splitter.pred Bag.t
end
module type S =
sig
type t_prop
val pretty : Format.formatter -> Mcfg.S.t_prop -> unit
val merge : Mcfg.S.t_prop -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val empty : Mcfg.S.t_prop
type t_env
val new_env : Db_types.kernel_function -> Mcfg.S.t_env
val add_axiom :
WpAnnot.prop_id ->
string ->
Cil_types.logic_label list ->
Cil_types.predicate Cil_types.named -> unit
val add_hyp :
Mcfg.S.t_env ->
WpAnnot.prop_id ->
Cil_types.predicate Cil_types.named -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val add_goal :
Mcfg.S.t_env ->
WpAnnot.prop_id ->
Cil_types.predicate Cil_types.named -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val add_as_hyp :
Mcfg.S.t_env -> Mcfg.S.t_prop -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val add_as_goal :
Mcfg.S.t_env -> Mcfg.S.t_prop -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val add_assigns :
Mcfg.S.t_env ->
WpAnnot.prop_id ->
Cil_types.logic_label ->
WpAnnot.a_kind ->
Cil_types.identified_term Cil_types.assigns list ->
Mcfg.S.t_prop -> Mcfg.S.t_prop
val use_assigns :
Mcfg.S.t_env ->
WpAnnot.prop_id ->
WpAnnot.a_kind ->
Cil_types.identified_term Cil_types.assigns list ->
Mcfg.S.t_prop -> Mcfg.S.t_prop
val assigns_method : unit -> Mcfg.assigns_method
val label :
Mcfg.S.t_env ->
Cil_types.logic_label -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val assign :
Mcfg.S.t_env ->
Cil_types.lval -> Cil_types.exp -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val return :
Mcfg.S.t_env ->
Cil_types.exp option -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val test :
Mcfg.S.t_env ->
Cil_types.exp -> Mcfg.S.t_prop -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val switch :
Mcfg.S.t_env ->
Cil_types.exp ->
(Cil_types.exp list * Mcfg.S.t_prop) list ->
Mcfg.S.t_prop -> Mcfg.S.t_prop
val call_normal :
Mcfg.S.t_env ->
get_pre:(Db_types.kernel_function ->
(WpAnnot.prop_id * Cil_types.predicate Cil_types.named) list) ->
get_post:(Db_types.kernel_function ->
(WpAnnot.prop_id * Cil_types.predicate Cil_types.named)
list) ->
get_assigns:(Db_types.kernel_function ->
Cil_types.identified_term Cil_types.assigns list) ->
Cil_types.stmt ->
Cil_types.lval option ->
Cil_types.exp -> Cil_types.exp list -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val call_exit :
Mcfg.S.t_env ->
get_pre:(Db_types.kernel_function ->
(WpAnnot.prop_id * Cil_types.predicate Cil_types.named) list) ->
get_exits:(Db_types.kernel_function ->
(WpAnnot.prop_id * Cil_types.predicate Cil_types.named)
list) ->
get_assigns:(Db_types.kernel_function ->
Cil_types.identified_term Cil_types.assigns list) ->
Cil_types.stmt ->
Cil_types.exp -> Cil_types.exp list -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val scope :
Mcfg.S.t_env ->
Cil_types.varinfo list ->
Mcfg.scope -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val build_prop_of_from :
Mcfg.S.t_env ->
WpAnnot.t_id_pred list -> Mcfg.S.t_prop -> Mcfg.S.t_prop
val close : Mcfg.S.t_env -> Mcfg.S.t_prop -> Mcfg.S.t_prop
end
end