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. © ACM 2013.
Author supplied keywords
Cite
CITATION STYLE
Banerjee, A., Naumann, D. A., & Rosenberg, S. (2013). Local reasoning for global invariants, Part I: Region logic. Journal of the ACM, 60(3). https://doi.org/10.1145/2485982
Register to see more suggestions
Mendeley helps you to discover research relevant for your work.