Abstract
We give foundational results that explain the efficacy of heuristics used for dealing with quantified formulas and recursive definitions. We develop a framework for first order logic (FOL) over an uninterpreted combination of background theories. Our central technical result is that systematic term instantiation is complete for a fragment of FOL that we call safe. Coupled with the fact that unfolding recursive definitions is essentially term instantiation and with the observation that heap verification engines generate verification conditions in the safe fragment explains the efficacy of verification engines like natural proofs that resort to such heuristics. Furthermore, we study recursive definitions with least fixpoint semantics and show that though they are not amenable to complete procedures, we can systematically introduce induction principles that in practice bridge the divide between FOL and FOL with recursive definitions.
Original language | English (US) |
---|---|
Article number | 10 |
Journal | Proceedings of the ACM on Programming Languages |
Volume | 2 |
Issue number | POPL |
DOIs | |
State | Published - Jan 2018 |
Keywords
- Completeness
- Natural proofs
- Program analysis
- Program logics
- Quantifier instantiation
- Verification
ASJC Scopus subject areas
- Software
- Safety, Risk, Reliability and Quality