FO-Complete Program Verification for Heap Logics

Adithya Murali, Hrishikesh Balakrishnan, Aaron Councilman, P. Madhusudan

Research output: Contribution to journalArticlepeer-review

Abstract

Program verification techniques for expressive heap logics are inevitably incomplete. In this work we argue that algorithmic techniques for reasoning with expressive heap logics can be held up to a different robust theoretical standard for completeness: FO-Completeness. FO-completeness is a theoretical guarantee that all theorems that are valid when recursive definitions are interpreted as fixpoint definitions (instead of least fixpoint) are guaranteed to be eventually proven by the system. We illustrate a set of principles to design such logics and develop the first two heap logics that have implicit heaplets and that admit FO-Complete program verification. The logics we develop are a frame logic (FL) and a separation logic (SL-FL) that has an alternate semantics inspired by frame logic. We show a verification condition generation technique that is amenable to FO-complete reasoning using quantifier instantiation and SMT solvers. We implement tools that realize our technique and show the expressiveness of our logics and the efficacy of the verification technique on a suite of benchmarks that manipulate data structures.

Original languageEnglish (US)
Article number106
JournalProceedings of the ACM on Programming Languages
Volume9
Issue numberOOPSLA1
Early online dateApr 9 2025
DOIs
StatePublished - Apr 9 2025

Keywords

  • FO-Complete Verification
  • Frame Logic
  • Heap Logics
  • Implicit Heaplets
  • Recursive Definitions
  • Separation Logic
  • Verification Condition Generation
  • Verifying Linked Data Structures

ASJC Scopus subject areas

  • Software
  • Safety, Risk, Reliability and Quality

Fingerprint

Dive into the research topics of 'FO-Complete Program Verification for Heap Logics'. Together they form a unique fingerprint.

Cite this