module Create:
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 = {
}
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 = {
}
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
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 =
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