Wp.MemoryCommon Types and Signatures
Oriented equality or arbitrary relation
Access conditions
Abstract location or concrete value
type 'a rloc = | Rloc of Ctypes.c_object * 'a| Rrange of 'a * Ctypes.c_object * Lang.F.term option * Lang.F.term optionContiguous set of locations
type 'a sloc = | Sloc of 'a| Sarray of 'a * Ctypes.c_object * intfull sized range (optimized assigns)
*)| Srange of 'a * Ctypes.c_object * Lang.F.term option * Lang.F.term option| Sdescr of Lang.F.var list * 'a * Lang.F.predStructured set of locations
type 'a region = (Ctypes.c_object * 'a sloc) listTyped set of locations
Logical values, locations, or sets of
Container for the returned value of a function
It is sometimes possible to reverse memory models abstractions into ACSL left-values via the definitions below.
and s_host = | Mvar of Frama_c_kernel.Cil_types.varinfoVariable
*)| Mmem of Lang.F.termPointed value
*)| Mval of s_lvalPointed value of another abstract left-value
*)type mval = | Maddr of s_lvalThe value is the address of an l-value in current memory
*)| Mlval of s_lvalThe value is the value of an l-value in current memory
*)| Minit of s_lvalThe value is the init state of an l-value in current memory
*)| Mchunk of Sigma.Chunk.tThe value is an abstract memory chunk (description)
*)Reversed abstract value
type update = | Mstore of s_lval * Lang.F.termAn update of the ACSL left-value with the given value
*)Reversed update
module type Model = sig ... endMemory Models.
module type CodeSemantics = sig ... endCompiler for C expressions
module type LogicSemantics = sig ... endCompiler for ACSL expressions
module type LogicAssigns = sig ... endCompiler for Performing Assigns
module type Compiler = sig ... endAll Compilers Together