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 language | English (US) |
---|---|
Article number | 106 |
Journal | Proceedings of the ACM on Programming Languages |
Volume | 9 |
Issue number | OOPSLA1 |
Early online date | Apr 9 2025 |
DOIs | |
State | Published - 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