FO-Complete Program Verification for Heap Logics
By: Adithya Murali , Hrishikesh Balakrishnan , Aaron Councilman and more
Potential Business Impact:
Proves computer programs are correct, even complex ones.
We develop the first two heap logics that have implicit heaplets and that admit FO-complete program verification. The notion of 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. The logics we develop are a frame logic ($\textit{FL}$) and a separation logic ($\textit{SL-FL}$) that has an alternate semantics inspired by frame logic. We show verification condition generation for FL that is amenable to FO-complete reasoning using quantifier instantiation and SMT solvers. We show $\textit{SL-FL}$ can be translated to FL in order to obtain FO-complete reasoning. 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.
Similar Papers
Separating the Wheat from the Chaff: Understanding (In-)Completeness of Proof Mechanisms for Separation Logic with Inductive Definitions
Logic in Computer Science
Finds bugs in computer programs automatically.
Separating the Wheat from the Chaff: Understanding (In-)Completeness of Proof Mechanisms for Separation Logic with Inductive Definitions
Logic in Computer Science
Finds bugs in computer programs automatically.
CoLF Logic Programming as Infinitary Proof Exploration
Logic in Computer Science
Lets computers build complex proofs with infinite parts.