Abstract
Shared mutable objects pose grave challenges in reasoning, especially for information hiding and modularity. This article presents a novel technique for reasoning about error-avoiding partial correctness of programs featuring shared mutable objects, and investigates the technique by formalizing a logic. Using a first-order assertion language, the logic provides heap-local reasoning about mutation and separation, via ghost fields and variables of type "region" (finite sets of object references). A new form of frame condition specifies write, read, and allocation effects using region expressions; this supports a frame rule that allows a command to read state on which the framed predicate depends. Soundness is proved using a standard program semantics. The logic facilitates heap-local reasoning about object invariants, as shown here by examples. Part II of this article extends the logic with second-order framing which formalizes the hiding of data invariants.
| Original language | English |
|---|---|
| Article number | 18 |
| Journal | Journal of the ACM (JACM) |
| Volume | 60 |
| Issue number | 3 |
| DOIs | |
| State | Published - Jun 2013 |
Keywords
- Data abstraction
- Data invariants
- Heap separation
- Information hiding
- Modularity
- Resource protection
Fingerprint
Dive into the research topics of 'Local reasoning for global invariants, Part I: Region logic'. Together they form a unique fingerprint.Cite this
- APA
- Author
- BIBTEX
- Harvard
- Standard
- RIS
- Vancouver