module Create: functor (
D
:
Mdata.S
) ->
functor (
A
:
Mint.S
with module D = D
) ->
functor (
R
:
Mfloat.S
with module D = D
) ->
sig
.. end
val unsupported : ?model:string -> ('a, Format.formatter, unit, 'b) Pervasives.format4 -> 'a
module F: D.F
type
m_memory
val t_memory : Formula.tau
type
store = m_memory F.term
type
m_alloc
val t_alloc : Formula.tau
type
tbl_alloc = m_alloc F.term
type
mem = {
}
type
m_dzone
type
dzone = m_dzone F.term
val addr_format : D.format
val model_addr : D.integer -> D.integer -> D.integer
val model_base : D.integer -> D.integer
val model_offset : D.integer -> D.integer
val model_addr_shift : D.integer -> D.integer -> D.integer
val model_addr_of_pointer : Model.D.pointer -> D.integer
val model_offset_of_pointer : D.pointer -> D.integer
val model_pointer_of_addr : D.integer -> D.pointer
val model_valid : tbl_alloc ->
D.integer -> D.integer -> F.pred
val model_isfresh : store ->
tbl_alloc -> D.integer -> F.pred
val model_alloc : tbl_alloc ->
D.integer -> D.integer -> tbl_alloc
val model_free : tbl_alloc -> D.integer -> tbl_alloc
val model_block : tbl_alloc -> D.integer -> D.integer
val model_access : store -> D.integer -> D.abstract
val model_update : store -> D.integer -> D.abstract -> store
val model_zempty : dzone
val model_zunion : dzone -> dzone -> dzone
val model_included : dzone -> dzone -> F.pred
val model_zrange : D.integer -> D.integer -> D.integer -> dzone
val model_zrange_of_addr_range : D.integer -> D.integer -> D.integer -> dzone
val model_separated : dzone -> dzone -> F.pred
val model_update_range : store ->
dzone -> D.abstract -> store
val model_access_range : store -> dzone -> D.abstract
val model_ishavoc : tbl_alloc ->
store ->
dzone -> store -> F.pred
module Z: Region.Create
(
D
)
(
sig
end
)
val zero : Formula.integer F.term
val one : Formula.integer F.term
val sub : Formula.integer F.term ->
Formula.integer F.term ->
Formula.integer F.term
val add : Formula.integer F.term ->
Formula.integer F.term ->
Formula.integer F.term
val mul : Formula.integer F.term ->
Formula.integer F.term ->
Formula.integer F.term
val sizeof : Ctypes.c_object -> Formula.integer F.term
val n_size : Formula.integer F.term ->
Ctypes.c_object -> Formula.integer F.term
val add_offset : Formula.integer F.term ->
Ctypes.c_object ->
Formula.integer F.term ->
Formula.integer F.term
val cardinal : Formula.integer F.term ->
Formula.integer F.term ->
Formula.integer F.term
val offset_of_field : Cil_datatype.Fieldinfo.t -> Formula.integer F.term
module Model: sig
.. end
module Globals: D.Register
(
sig
end
)
module Data: sig
.. end
module DF: Data_mem.Create
(
Data
)
include Data
val startof : Model.loc -> 'a -> Model.loc
val base_address : 'a -> Model.loc -> Model.loc
val block_length : mem -> Model.loc -> D.integer
val cast_loc_to_loc : 'a -> 'b -> 'c -> 'd
val zrange : Model.loc -> D.integer -> dzone
val load_with : D.format ->
store -> Model.loc -> 'a D.F.term
val load_mem : store ->
Ctypes.c_object -> Model.loc -> value
val store_with : store ->
Model.loc ->
D.format -> 'a D.F.term -> store
val store_mem : store ->
Ctypes.c_object ->
Model.loc -> value -> store
val load : mem ->
Ctypes.c_object -> Model.loc -> value
val tau_of_dzone : Formula.tau
type
assignable =
| |
Avar of Cil_types.varinfo * D.integer |
| |
Aaddr of D.integer |
| |
Arange of D.integer * D.integer * D.integer |
val addr_of_assignable : assignable -> D.integer
val zone_of_assignable : assignable -> dzone
val assignable_loc : 'a -> Model.loc -> assignable
val assignable_range : Ctypes.c_object ->
Model.loc -> D.interval -> assignable
val assignable : Model.loc D.assigned -> assignable
val dzone_assigned : Model.loc D.assigned -> dzone
val dzone_subset : dzone -> dzone -> F.pred
val dzone_union : dzone -> dzone -> dzone
val dzone_empty : unit -> dzone
val effect_supported : bool
val assignable_sizeof : 'a D.assigned -> Formula.integer F.term
val valid : mem ->
Model.loc D.assigned -> F.pred
val separated : Model.loc D.assigned ->
Model.loc D.assigned -> F.pred
type
region = Z.region
val pp_region : Format.formatter -> Z.region -> unit
val region_of_loc : Ctypes.c_object -> Model.loc -> Z.region
val region_range : Ctypes.c_object ->
Model.loc -> D.interval -> Z.region
val region_assigned : Model.loc D.assigned -> Z.region
val region_empty : unit -> Z.region
val region_union : Z.region ->
Z.region -> Z.region
val region_included : Z.region -> Z.region -> D.F.pred
val region_separated : Z.region -> Z.region -> D.F.pred
val region_fingerprint : D.F.pool ->
Z.region ->
D.F.var list * D.F.pred * Z.region
val region_supported : bool
type
frame = {
}
val new_frame : Kernel_function.t ->
m_here:mem option ->
m_pre:mem option ->
m_post:mem option ->
F.var option -> frame
val get_result : frame -> F.var * Cil_types.typ
val get_exit : frame -> F.var
val set_exit_status : frame -> F.var -> frame
val varmem_at : frame ->
Clabels.c_label -> F.var * F.var
val mem_at : frame -> Clabels.c_label -> mem
val result : frame -> F.var * Cil_types.typ
val exit_status : frame -> F.var
val get_exit_status : frame -> F.var option
val update_at_label : frame -> Clabels.c_label -> D.F.pred -> D.F.pred
val quantify_at_label : frame -> Clabels.c_label -> 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 -> D.F.pred -> D.F.pred
val alloc_vars : frame -> D.Xindex.t list -> D.F.pred -> D.F.pred
val free_vars : frame -> D.Xindex.t list -> D.F.pred -> D.F.pred
val fresh_vars : frame ->
D.Xindex.t list -> F.pred -> F.pred
val notexists_vars : frame ->
D.Xindex.t list -> F.pred -> F.pred
val local_scope : frame ->
D.Xindex.t list ->
Mcfg.scope -> F.pred -> F.pred
val subst_havoc : frame ->
Model.loc D.assigned -> D.havoc list
val region : Model.loc D.assigned list -> dzone
val assigns_goal : frame ->
Clabels.c_label ->
Model.loc D.assigned list ->
Clabels.c_label -> F.pred
val assigns_supported : bool
type
closure =
| |
Mem of string |
| |
Alloc of string |
val pp_closure : Format.formatter -> closure -> unit
val userdef_frame : unit -> frame
val userdef_signature : frame ->
'a -> 'b -> F.var list * closure list
val userdef_closure : mem ->
closure -> Formula.abstract F.term
val label_at_closure : closure -> string