package frama-c
Module Wp.MemorySource
Common Types and Signatures
General Definitions
type equation = | Set of Lang.F.term * Lang.F.term(*
*)Set(a,b)isa := b.| Assert of Lang.F.pred
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 option
Contiguous set of locations
type 'a sloc = | Sloc of 'a| Sarray of 'a * Ctypes.c_object * int(*full 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.pred
Structured set of locations
Typed set of locations
type 'a logic = | Vexp of Lang.F.term| Vloc of 'a| Vset of Wp__.Vset.vset list| Lset of 'a sloc list
Logical values, locations, or sets of
Scope management for locals and formals
Container for the returned value of a function
Polarity of predicate compilation
Reversing Models
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.varinfo(*Variable
*)| Mmem of Lang.F.term(*Pointed value
*)| Mval of s_lval(*Pointed value of another abstract left-value
*)
type mval = | Maddr of s_lval(*The value is the address of an l-value in current memory
*)| Mlval of s_lval(*The value is the value of an l-value in current memory
*)| Minit of s_lval(*The value is the init state of an l-value in current memory
*)| Mchunk of Sigma.Chunk.t(*The value is an abstract memory chunk (description)
*)
Reversed abstract value
type update = | Mstore of s_lval * Lang.F.term(*An update of the ACSL left-value with the given value
*)
Reversed update
Memory Models
C and ACSL Compilers
Compiler for C expressions
Compiler for ACSL expressions
Compiler for Performing Assigns