Invariant Synthesis for Incomplete Verification Engines
This addresses the challenge of invariant synthesis in undecidable theories for verification engineers, though it appears incremental as it builds on existing CEGIS principles.
The paper tackles the problem of synthesizing inductive invariants for incomplete verification engines by proposing a framework that uses non-provability information to guide synthesis, showing it effectively synthesizes invariants and strengthens contracts across a large suite of programs.
We propose a framework for synthesizing inductive invariants for incomplete verification engines, which soundly reduce logical problems in undecidable theories to decidable theories. Our framework is based on the counter-example guided inductive synthesis principle (CEGIS) and allows verification engines to communicate non-provability information to guide invariant synthesis. We show precisely how the verification engine can compute such non-provability information and how to build effective learning algorithms when invariants are expressed as Boolean combinations of a fixed set of predicates. Moreover, we evaluate our framework in two verification settings, one in which verification engines need to handle quantified formulas and one in which verification engines have to reason about heap properties expressed in an expressive but undecidable separation logic. Our experiments show that our invariant synthesis framework based on non-provability information can both effectively synthesize inductive invariants and adequately strengthen contracts across a large suite of programs.