Module Model1


module Model1: sig .. end
Model1 is a memory model that is close to caveat's one, but it should add guards to check is the are no problem with aliases.

val abort : string -> 'a

type data1 =
| E1addr of Cil_types.logic_var
| E1proj of exp1 * exp1 WpFol.epath
| E1depl of exp1 * exp1 WpFol.epath
| E1indir of exp1
| E1shift of exp1 * exp1
| E1mu of exp1 * exp1 WpFol.epath * exp1
| E1muI of exp1 * exp1
type exp1 = data1 Fol.d_term 
val pp_epath : bool -> Format.formatter -> exp1 WpFol.epath -> unit
val pp_data1 : Format.formatter -> data1 -> unit
val pp_exp1 : Format.formatter -> exp1 -> unit
module M: sig .. end
module MV: Mvar.MV(M)
module MT: MV.MT
exception UnknownGuard of M.t_exp * string
val get_read_addr : bool -> data1 Fol.d_pred -> M.t_exp list
with_direct : says if we have to include base addresses (@X).
val guard_counter : int Pervasives.ref
val build_guard : Cil_types.varinfo ->
exp1 ->
data1 Fol.d_pred ->
Fol.variable * exp1 Fol.t_pred * data1 Fol.d_pred
val build_mu : (Cil_types.exp -> M.t_exp option) ->
Cil_types.lval ->
M.t_exp option -> Cil_types.varinfo * M.t_exp option
val assign_exp : (Cil_types.exp -> M.t_exp option) ->
Cil_types.lval ->
M.t_exp option -> M.t_data Fol.d_pred -> exp1 Fol.t_pred
val assign_old_exp : 'a -> 'b -> 'c -> 'd -> 'e
val why_prelude : string list