Functor Funvar_mem.Create


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

module Lookup: sig .. end
module Model: sig .. end
include struct ... end
type env = (Cil_types.varinfo * (Model.F.var * Ctypes.c_object)) list
Pervasives.ref

type mem = {
   mem : M.mem;
   env : env;
}
type fun_frame = (Clabels.c_label * env) list Pervasives.ref 
val new_fun_frame : 'a option ->
'a option -> 'a option -> (Clabels.c_label * 'a) list Pervasives.ref
val create : unit -> 'a list Pervasives.ref
val env_at : ('a * 'b list Pervasives.ref) list Pervasives.ref ->
'a -> 'b list Pervasives.ref

type frame = {
   mframe : M.frame;
   fframe : fun_frame;
}
val opt_mem : mem option -> M.mem option
val opt_env : mem option -> env option
val new_frame : Kernel_function.t ->
m_here:mem option ->
m_pre:mem option ->
m_post:mem option ->
M.D.F.var option -> frame
val mem_at : frame -> Clabels.c_label -> mem
val get_funvar : (Cil_datatype.Varinfo.t * (D.F.var * Ctypes.c_object)) list Pervasives.ref ->
Cil_datatype.Varinfo.t -> D.F.var
val cvar : mem -> Cil_types.varinfo -> Model.loc
val shift : Model.loc ->
Ctypes.c_object -> M.D.integer -> Model.loc
val index : Model.loc ->
Ctypes.c_object -> M.D.integer -> Model.loc
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 : (Cil_datatype.Varinfo.t * (D.F.var * Ctypes.c_object)) list Pervasives.ref ->
'a * Cil_datatype.Varinfo.t * Lookup.poffset list *
Ctypes.c_object -> value
val loc_of_path : mem ->
'a * Cil_datatype.Varinfo.t * Lookup.poffset list *
Ctypes.c_object -> M.loc
val array_of_path : (Cil_datatype.Varinfo.t * (D.F.var * Ctypes.c_object)) list Pervasives.ref ->
'a * Cil_datatype.Varinfo.t * Lookup.poffset list *
Ctypes.c_object -> D.array
val value_of_mvalue : M.value -> value
val mvalue_of_value : value -> M.value
val load : mem ->
Ctypes.c_object -> Model.loc -> value
val mloc_of_loc : Model.loc -> M.loc
val massigned : Model.loc D.assigned -> M.loc D.assigned
type m_dzone = M.m_dzone 
type dzone = M.dzone 
val tau_of_dzone : Formula.tau
val dzone_assigned : Model.loc D.assigned -> M.dzone
val dzone_subset : M.dzone -> M.dzone -> M.D.F.pred
val dzone_union : M.dzone -> M.dzone -> M.dzone
val dzone_empty : unit -> M.dzone
val effect_supported : bool
module Z: Region.Create(D)(sig
module F: Funvar_mem.Create.Model.F
type addr = D.integer 
val pp_addr : Format.formatter -> 'a F.term -> unit
val closed : 'a F.term -> bool
val equal : 'a F.term ->
'a F.term -> F.pred
val fresh : F.pool ->
F.var * 'a F.term
end)
type region = Z.region * M.region 
val pp_region : Format.formatter -> Z.region * M.region -> unit
val funvar_offset : atomic:bool ->
Z.base ->
Z.path ->
Lookup.poffset list ->
(Ctypes.c_object * D.interval) option -> Z.region
val funvar_path : D.Xindex.t ->
Lookup.poffset list ->
(Ctypes.c_object * D.interval) option -> Z.region
val region_assigned : Model.loc D.assigned ->
Z.region * M.region
val region_empty : unit -> Z.region * M.region
val region_union : Z.region * M.region ->
Z.region * M.region ->
Z.region * M.region
val region_included : Z.region * M.region ->
Z.region * M.region -> Model.F.pred
val region_separated : Z.region * M.region ->
Z.region * M.region -> Model.F.pred
val region_fingerprint : D.F.pool ->
Z.region * M.region ->
D.F.var list * Model.F.pred *
(Z.region * M.region)
val region_supported : bool
val result : frame -> M.D.F.var * Cil_types.typ
val exit_status : frame -> M.D.F.var
val get_exit_status : frame -> M.D.F.var option
val set_exit_status : frame -> M.D.F.var -> frame
val loc_of_funloc : Model.loc -> M.loc
val base_address : mem ->
Model.loc -> Model.loc
val block_length : mem ->
Model.loc -> Formula.integer M.D.F.term
val valid : mem -> Model.loc D.assigned -> M.D.F.pred
val separated : Model.loc D.assigned ->
Model.loc D.assigned -> M.D.F.pred
type fun_closure = Cil_types.varinfo * string 

type closure =
| Fclos of fun_closure
| Mclos of M.closure
val pp_closure : Format.formatter -> closure -> unit
val collect_signature : string ->
Cil_types.varinfo ->
'a ->
'a list * closure list ->
'a list * closure list
val userdef_fun_signature : (Clabels.c_label * (Cil_types.varinfo * ('a * 'b)) list Pervasives.ref) list
Pervasives.ref -> 'a list * closure list
val userdef_fun_closure : (Cil_datatype.Varinfo.t * (D.F.var * Ctypes.c_object)) list Pervasives.ref ->
Cil_datatype.Varinfo.t * 'a -> 'b Model.F.term
val userdef_frame : unit -> frame
val userdef_signature : frame ->
Formula.abstract M.D.F.term list ->
M.D.F.pred list ->
Model.F.var list * closure list
val label_at_closure : closure -> string
val userdef_closure : mem ->
closure -> Formula.abstract Model.F.term
val fupdate_at_label : (Clabels.c_label *
(Cil_datatype.Varinfo.t * (D.F.var * Ctypes.c_object)) list Pervasives.ref)
list Pervasives.ref -> Clabels.c_label -> D.F.pred -> D.F.pred
val update_at_label : frame -> Clabels.c_label -> D.F.pred -> M.D.F.pred
val close_env : ('a * (D.F.var * 'b)) list Pervasives.ref -> D.F.pred -> D.F.pred
val fquantify_at_label : ('a * ('b * (D.F.var * 'c)) list Pervasives.ref) list Pervasives.ref ->
'a -> D.F.pred -> D.F.pred
val quantify_at_label : frame -> Clabels.c_label -> D.F.pred -> M.D.F.pred
val update : (Formula.abstract Lookup.D.F.term ->
Formula.abstract Model.F.term) ->
Formula.abstract Lookup.D.F.term ->
Lookup.poffset list -> D.abstract
val store : (Clabels.c_label *
(Cil_datatype.Varinfo.t * (D.F.var * Ctypes.c_object)) list Pervasives.ref)
list Pervasives.ref ->
'a * Cil_datatype.Varinfo.t * Lookup.poffset list * 'b ->
value -> D.F.pred -> D.F.pred
val subst_lval : frame ->
Ctypes.c_object ->
Model.loc -> value -> D.F.pred -> D.F.pred
val subst_result : frame -> value option -> M.D.F.pred -> M.D.F.pred
val subst_havoc : frame ->
Model.loc D.assigned -> D.havoc list
val assigns_goal : frame ->
Clabels.c_label ->
Model.loc D.assigned list -> Clabels.c_label -> M.D.F.pred
val assigns_supported : bool
val local_scope : frame ->
Cil_types.varinfo list -> Mcfg.scope -> M.D.F.pred -> M.D.F.pred