Local reasoning for global invariants, Part I: Region logic

Anindya Banerjee, David A. Naumann, Stan Rosenberg

Research output: Contribution to journalArticlepeer-review

18 Scopus citations

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 languageEnglish
Article number18
JournalJournal of the ACM (JACM)
Volume60
Issue number3
DOIs
StatePublished - 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