Invariant Synthesis for Incomplete Verification Engines [chapter]

Daniel Neider, Pranav Garg, P. Madhusudan, Shambwaditya Saha, Daejun Park
2018 Lecture Notes in Computer Science  
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
more » ... rning 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. Lemma 2. Let J ⊆ P and α be a positive Boolean formula over P. Then, the following holds:(a) c J |= α if and only if B J ⇒ α, and (b) d J |= α if and only if B α ⇒ J.
doi:10.1007/978-3-319-89960-2_13 fatcat:saysfl3slnbn3mktsvtqk7mnlm