Differences
This shows you the differences between two versions of the page.
sav08:semantics_of_field_reads_and_writes [2009/03/18 10:02] vkuncak |
sav08:semantics_of_field_reads_and_writes [2015/04/21 17:30] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Semantics of Field Reads and Writes ====== | ||
- | How to model $x.f$ ? ++|term $f(x)$++ | ||
- | |||
- | How to model field assignment $x.f=y$ ? | ||
- | ++++| | ||
- | Use function update construct: | ||
- | \[ | ||
- | f = f(x:=y) | ||
- | \] | ||
- | State variable $f$, which denotes a function, is assigned an updated version of this function. | ||
- | ++++ | ||
- | |||
- | What about null pointer checks? | ||
- | |||
- | Examples: | ||
- | y = x.next.next | ||
- | x.next.next.prev = y | ||
- | (x = null | x.next == y) | ||
- | |||
- | Statement simplification. | ||
- | |||
- | Short-circuit evaluation. | ||
- | |||
- | Compiler intermediate representation is sometimes more convenient than source code | ||
- | * or verification system can repeat the compilation process from source to relations (guarded commands) | ||
- | * [[:compilation:top]] |