Bounded Quantifier Instantiation for Checking Inductive Invariants

We consider the problem of checking whether a proposed invariant \(\varphi \) expressed in first-order logic with quantifier alternation is inductive, i.e. preserved by a piece of code. While the problem is undecidable, modern SMT solvers can sometimes solve it automatically. However they employ powerful quantifier instantiation methods that may diverge, especially when \(\varphi \) is not preserved. A notable difficulty arises due to counterexamples of infinite size.

[1]  David Detlefs,et al.  Simplify: a theorem prover for program checking , 2005, JACM.

[2]  Cesare Tinelli,et al.  Solving quantified verification conditions using satisfiability modulo theories , 2007, Annals of Mathematics and Artificial Intelligence.

[3]  Lauretta O. Osho,et al.  Axiomatic Basis for Computer Programming , 2013 .

[4]  Nikolaj Bjørner,et al.  Property-Directed Shape Analysis , 2014, CAV.

[5]  Martín Abadi,et al.  The Power of Temporal Proofs , 1989, Theor. Comput. Sci..

[6]  Thomas W. Reps,et al.  Finite differencing of logical formulas for static analysis , 2010, TOPL.

[7]  Andrei Voronkov,et al.  First-Order Theorem Proving and Vampire , 2013, CAV.

[8]  Leonardo Mendonça de Moura,et al.  Complete Instantiation for Quantified Formulas in Satisfiabiliby Modulo Theories , 2009, CAV.

[9]  Mikolás Janota,et al.  Digital Object Identifier (DOI): , 2000 .

[10]  Carsten Ihlemann,et al.  On Local Reasoning in Verification , 2008, TACAS.

[11]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[12]  Ian M. Hodkinson,et al.  Loosely Guarded Fragment of First-Order Logic has the Finite Model Property , 2002, Stud Logica.

[13]  Frank Plumpton Ramsey,et al.  On a Problem of Formal Logic , 1930 .

[14]  K. Rustan M. Leino,et al.  Dafny: An Automatic Program Verifier for Functional Correctness , 2010, LPAR.

[15]  Shmuel Sagiv,et al.  Paxos made EPR: decidable reasoning about distributed protocols , 2017, Proc. ACM Program. Lang..

[16]  Parosh Aziz Abdulla,et al.  Parameterized verification through view abstraction , 2015, International Journal on Software Tools for Technology Transfer.

[17]  Kenneth L. McMillan,et al.  Deductive Verification in Decidable Fragments with Ivy , 2018, SAS.

[18]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 1999, POPL '99.

[19]  Neil Immerman,et al.  The Boundary Between Decidability and Undecidability for Transitive-Closure Logics , 2004, CSL.

[20]  Parosh Aziz Abdulla,et al.  All for the Price of Few , 2013, VMCAI.

[21]  Thomas Wies,et al.  Deciding Local Theory Extensions via E-matching , 2015, CAV.

[22]  Shuvendu K. Lahiri,et al.  Back to the future: revisiting precise program verification using SMT solvers , 2008, POPL '08.

[23]  Nils Klarlund,et al.  Mona: Monadic Second-Order Logic in Practice , 1995, TACAS.

[24]  Parosh Aziz Abdulla,et al.  Block Me If You Can! - Context-Sensitive Parameterized Verification , 2014, SAS.

[25]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[26]  Greg Nelson,et al.  A generalization of Dijkstra's calculus , 1989, ACM Trans. Program. Lang. Syst..

[27]  Oded Padon,et al.  Deductive Verification of Distributed Protocols in First-Order Logic , 2018, 2018 Formal Methods in Computer Aided Design (FMCAD).

[28]  Cesare Tinelli,et al.  Quantifier Instantiation Techniques for Finite Model Finding in SMT , 2013, CADE.

[29]  Christoph Weidenbach,et al.  Combining Superposition, Sorts and Splitting , 2001, Handbook of Automated Reasoning.

[30]  Kenneth L. McMillan,et al.  Ivy: safety verification by interactive generalization , 2016, PLDI.

[31]  Jens Palsberg,et al.  Verification, Model Checking, and Abstract Interpretation , 2018, Lecture Notes in Computer Science.

[32]  Srinath T. V. Setty,et al.  IronFleet: proving practical distributed systems correct , 2015, SOSP.

[33]  Yuri Gurevich,et al.  The Classical Decision Problem , 1997, Perspectives in Mathematical Logic.

[34]  Xiaokang Qiu,et al.  Natural proofs for structure, data, and separation , 2013, PLDI.

[35]  Viorica Sofronie-Stokkermans,et al.  Hierarchic Reasoning in Local Theory Extensions , 2005, CADE.

[36]  Neil Immerman,et al.  Effectively-Propositional Reasoning about Reachability in Linked Data Structures , 2013, CAV.

[37]  Shuvendu K. Lahiri,et al.  Verifying properties of well-founded linked lists , 2006, POPL '06.

[38]  Cesare Tinelli,et al.  Finite Model Finding in SMT , 2013, CAV.

[39]  Nikolaj Bjørner,et al.  Property-Directed Inference of Universal Invariants or Proving Their Absence , 2015, CAV.

[40]  Shmuel Sagiv,et al.  TVLA: A System for Implementing Static Analyses , 2000, SAS.

[41]  Greg Nelson,et al.  Extended static checking for Java , 2002, PLDI '02.

[42]  K. Rustan M. Leino,et al.  Trigger Selection Strategies to Stabilize Program Verifiers , 2016, CAV.

[43]  Ernest J. H. Chang,et al.  An improved algorithm for decentralized extrema-finding in circular configurations of processes , 1979, CACM.

[44]  Michael Schapira,et al.  VeriCon: towards verifying controller programs in software-defined networks , 2014, PLDI.