Local Reasoning for Global Invariants, Part I: Region Logic

  • Authors:
  • Anindya Banerjee;David A. Naumann;Stan Rosenberg

  • Affiliations:
  • IMDEA Software Institute and Kansas State University;Stevens Institute of Technology;Stevens Institute of Technology

  • Venue:
  • Journal of the ACM (JACM)
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

Dedicated to the memory of Stephen L. Bloom (1940--2010). 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.