Functor Funvar_mem.Create


module Create: 
functor (Crit : Criteria) ->
functor (M : Mwp.S) -> sig .. end
Parameters:
Crit : Criteria
M : Mwp.S

val make_array : Cil_types.typ -> Cil_types.typ
val array_of : Cil_types.typ -> Cil_types.typ
val pointed_of_arity : int -> Cil_types.typ -> Cil_types.typ
val brackets_and_stars_typ : Cil_types.typ -> int * int
val brackets_and_stars_lv_typ : Cil_types.logic_type -> int * int
module Lookup: sig .. end
module Model: sig .. end
include struct ... end
module L: M.L
type decl = M.F.decl 
val value_of_mvalue : M.value -> value
val mvalue_of_value : value -> M.value
module Xmap: Cil_datatype.Varinfo.Map

type var_info = {
   v_var : F.var;
   v_arity : int;
   v_is_array : bool;
   v_type : Ctypes.c_object;
}
type vars = var_info Xmap.t 
module Lmap: Cil_datatype.Logic_var.Map

type formal =
| Fpref of int
| Faref of int

type byrefparam = {
   bref_var : F.var;
   bref_formal : formal;
}
type mem = {
   mem : M.mem;
   mutable vars : vars;
   mutable formals : byrefparam Lmap.t;
}
val mem : unit -> mem
val global_scope : 'a -> 'b -> 'b
val global : 'a -> unit
val get_logic_funvar : mem -> int -> Lmap.key -> bool -> F.var
val get_c_funvar : mem -> int -> Xmap.key -> bool -> F.var
val get_funvar : mem ->
int -> Lookup.root -> bool -> F.var
val mk_path : Lookup.root -> M.mem -> Lookup.path
val mk_pref : Lookup.root ->
M.mem ->
int -> Lookup.F.var option -> Lookup.path
val mk_aref : Lookup.root ->
M.mem ->
int -> Lookup.F.var option -> Lookup.path
val cvar : mem -> Cil_types.varinfo -> Model.loc
val lvar : mem ->
Cil_types.logic_var ->
Lookup.F.var -> Model.loc
val inner_loc : Model.loc -> M.F.abstract
val add_index : Lookup.path ->
Lookup.F.integer ->
Ctypes.c_object -> Lookup.path
val shift : Model.loc ->
Ctypes.c_object -> M.F.integer -> Model.loc
val index : Model.loc ->
Ctypes.c_object -> M.F.integer -> Model.loc
val add_field : Lookup.path ->
Cil_types.fieldinfo -> Lookup.path
val field : Model.loc ->
Cil_types.fieldinfo -> Model.loc
val startof : Model.loc -> Ctypes.c_object -> Model.loc
val cast_loc_to_loc : Cil_types.typ ->
Cil_types.typ -> Model.loc -> Model.loc
val fun_load : mem -> Lookup.path -> bool -> value
val load : mem ->
Ctypes.c_object -> Model.loc -> value
val massigned : loc F.assigned -> M.loc F.assigned
type m_dzone = M.m_dzone 
type dzone = M.dzone 
val tau_of_dzone : Formula.tau
val dzone_assigned : mem -> loc F.assigned -> M.dzone
val dzone_subset : M.dzone -> M.dzone -> M.F.pred
val dzone_union : M.dzone -> M.dzone -> M.dzone
val dzone_empty : unit -> M.dzone
val effect_supported : bool
val base_address : mem ->
Model.loc -> Model.loc
val block_length : mem -> Model.loc -> M.F.integer
val valid : mem -> loc F.assigned -> M.F.pred
val separated : mem -> loc F.assigned -> loc F.assigned -> M.F.pred
val pp_formal_simple : Format.formatter -> formal -> unit
val pp_formal : Format.formatter -> formal * Cil_types.logic_var -> unit
val userdef_ref_has_cvar : Cil_types.logic_var -> bool
val userdef_is_ref_param : Cil_types.logic_var -> bool
val userdef_ref_signature : mem ->
(F.var * Lmap.key * formal) list
val userdef_ref_apply : mem -> formal -> loc -> value

type closure =
| Fclos of int * bool * Cil_types.varinfo
| Mclos of M.closure
val pp_closure : Format.formatter -> closure -> unit
val userdef_mem_signature : mem -> (F.var * closure) list
val userdef_mem_apply : mem ->
closure -> Formula.m_abstract F.term
val update : at:mem ->
here:mem -> M.F.pred -> L.F.pred
val quantify : mem -> M.F.pred -> L.F.pred
val update_offset : (Lookup.F.abstract -> F.abstract) ->
Lookup.F.abstract ->
Lookup.poffset list -> F.abstract
val store : mem ->
Lookup.path ->
value -> bool -> L.F.pred -> L.F.pred
val subst_lval : mem ->
Ctypes.c_object ->
Model.loc ->
value -> L.F.pred -> L.F.pred
val subst_havoc : mem ->
Model.loc F.assigned -> F.havoc list
val assigns_goal : mem ->
Model.loc F.assigned list ->
mem -> M.F.pred
val assigns_supported : bool
val local_scope : mem ->
Cil_types.varinfo list -> Mcfg.scope -> M.F.pred -> M.F.pred