๐ค AI Summary
This work addresses the lack of first-order completeness guarantees in heap program verification by introducing two novel logics that support implicit heap fragments: Frame Logic (FL) and its Separation Logic variant (SL-FL). By integrating quantifier instantiation with SMT solving, the proposed framework achieves, for the first time, first-order complete verification of heap-manipulating programs under a non-least fixed-point semantics. The key innovation lies in the development of a heap logic framework endowed with first-order completeness and a translation mechanism from SL-FL to FL that preserves this completeness property. Experimental evaluation using a prototype implementation on benchmark programs involving complex data structures demonstrates the expressiveness and effectiveness of the approach.
๐ 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.