A Relational Program Logic with Data Abstraction and Dynamic Framing
Anindya Banerjee, Ramana Nagasamudram, David A. Naumann and, Mohammad Nikouei

TL;DR
This paper introduces a relational Hoare logic that formalizes data encapsulation, hiding invariants, and simulation for object-oriented programs with dynamic allocation, enabling reasoning about program equivalence and noninterference.
Contribution
It extends Hoare's program logic to include data abstraction and dynamic framing, formalizing encapsulation and simulation in a relational setting with first-order logic assertions.
Findings
Soundness with respect to operational semantics
Expressiveness for relational properties like noninterference
Applicability demonstrated with SMT-based implementation
Abstract
Dedicated to Tony Hoare. In a paper published in 1972 Hoare articulated the fundamental notions of hiding invariants and simulations. Hiding: invariants on encapsulated data representations need not be mentioned in specifications that comprise the API of a module. Simulation: correctness of a new data representation and implementation can be established by proving simulation between the old and new implementations using a coupling relation defined on the encapsulated state. These results were formalized semantically and for a simple model of state, though the paper claimed this could be extended to encompass dynamically allocated objects. In recent years, progress has been made towards formalizing the claim, for simulation, though mainly in semantic developments. In this article, hiding and simulation are combined with the idea in Hoare's 1969 paper: a logic of programs. For an…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsAdvanced Database Systems and Queries · Logic, programming, and type systems · Model-Driven Software Engineering Techniques
