Module Lowlevel_model.M


module M: sig .. end

val model_name : string
type t_data = Lowlevel_model.data3 
type t_exp = t_data Fol.d_term 
type t_pred = t_exp Fol.t_pred 
val eq_data : Lowlevel_model.data3 -> Lowlevel_model.data3 -> bool
val prop_in_data : 'a -> 'b -> 'b Fol.d_term
val cur_mem_var : Fol.variable lazy_t
val cur_mem : 'a Fol.d_term lazy_t
val fresh_mem : unit -> Fol.variable
val fol_ctype_sizeof : Cil_types.typ -> 'a Fol.d_term
val fol_ltype_sizeof : Cil_types.logic_type -> 'a Fol.d_term
val field_offset : Cil_types.fieldinfo -> 'a Fol.d_term
Calculate the address offset of a given field.
Returns The offset in bytes at which field's value is stored.
field : a field description
val access : Cil_types.logic_type ->
Lowlevel_model.data3 Fol.d_term -> Lowlevel_model.data3 Fol.d_term
Access a stored value given a memory state.
Returns A logical statement encoding access to the value of type t at address (b, o).
ty : the type of the required value
val mem_update : Lowlevel_model.data3 Fol.d_term ->
Cil_types.logic_type ->
Lowlevel_model.data3 Fol.d_term ->
Lowlevel_model.data3 Fol.d_term -> Lowlevel_model.data3 Fol.d_term
Update a stored value given a memory state.
Returns A logical statement encoding updating of the value of type t at address (b, o) with value v.
ty : the type of the given value
v : the value to be stored at the given address
val mk_lvar_addr : Cil_types.logic_var -> Lowlevel_model.data3 Fol.d_term
val mk_cvar_addr : Cil_types.varinfo -> Lowlevel_model.data3 Fol.d_term
val mk_cvar : Cil_types.varinfo -> Lowlevel_model.data3 Fol.d_term
val mk_lvar : Cil_types.logic_var -> Lowlevel_model.data3 Fol.d_term
val mk_shift_pointer : 'a Fol.d_term -> Cil_types.logic_type -> 'a Fol.d_term -> 'a Fol.d_term
val mk_index_shift : 'a Fol.d_term -> Cil_types.logic_type -> 'a Fol.d_term -> 'a Fol.d_term
because we don't care of term type, mk_index_shift and mk_shift_pointer are the same
val mk_field_shift : 'a Fol.d_term -> Cil_types.fieldinfo -> 'a Fol.d_term
val mk_minus_pointer : 'a Fol.d_term -> 'a Fol.d_term -> 'a Fol.d_term
val mk_field_access : Lowlevel_model.data3 Fol.d_term ->
Cil_types.fieldinfo -> Lowlevel_model.data3 Fol.d_term
val mk_index_access : Lowlevel_model.data3 Fol.d_term ->
Cil_types.logic_type ->
Lowlevel_model.data3 Fol.d_term -> Lowlevel_model.data3 Fol.d_term
val mk_access_pointer : Lowlevel_model.data3 Fol.d_term ->
Cil_types.logic_type -> Lowlevel_model.data3 Fol.d_term
val mk_field_update : 'a -> 'b -> 'c -> 'd
val mk_index_update : 'a -> 'b -> 'c -> 'd
val expr_cast : 'a -> 'b -> 'c
val subst_res_var : Cil_types.logic_var ->
Cil_types.logic_var ->
Lowlevel_model.data3 Fol.d_pred -> Lowlevel_model.data3 Fol.d_pred
val pp_data : Format.formatter -> Lowlevel_model.data3 -> unit
val memory_type_ltype : Cil_types.logic_type
val memory_type_name : Fol.pure_type
val mk_memory_type_var : string -> 'a Fol.d_term
val mk_memory_int_ctype : Cil_types.ikind -> 'a Fol.d_term
val mk_memory_float_ctype : Cil_types.fkind -> 'a Fol.d_term
val mk_memory_ctype : Cil_types.typ -> 'a Fol.d_term
val mk_memory_ltype : Cil_types.logic_type -> 'a Fol.d_term
val fol : Lowlevel_model.data3 Fol.d_pred -> 'a Fol.d_pred