Inferring quantified invariants via algorithmic learning, decision procedure, and predicate abstraction

By combining algorithmic learning, decision procedures, predicate abstraction, and templates, we present an automated technique for finding quantified loop invariants. Our technique can find arbitrary first-order invariants in the form of the given template and exploits the flexibility in invariants by a simple randomized mechanism. The proposed technique is able to find quantified invariants for sample loops in Linux source code and benchmarks in previous work.

[1]  Thomas A. Henzinger,et al.  Invariant and Type Inference for Matrices , 2010, VMCAI.

[2]  Sriram K. Rajamani,et al.  Refining Approximations in Software Predicate Abstraction , 2004, TACAS.

[3]  Sumit Gulwani,et al.  Control-flow refinement and progress invariants for bound analysis , 2009, PLDI '09.

[4]  Thomas A. Henzinger,et al.  Invariant Synthesis for Combined Theories , 2007, VMCAI.

[5]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[6]  Nader H. Bshouty,et al.  Exact learning via the Monotone theory , 1993, Proceedings of 1993 IEEE 34th Annual Foundations of Computer Science.

[7]  Tobias Nipkow,et al.  A Proof Assistant for Higher-Order Logic , 2002 .

[8]  Sumit Gulwani,et al.  Program verification using templates over predicate abstraction , 2009, PLDI '09.

[9]  Yih-Kuen Tsay,et al.  Learning Minimal Separating DFA's for Compositional Verification , 2009, TACAS.

[10]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[11]  Nebojsa Jojic,et al.  Program verification as probabilistic inference , 2007, POPL '07.

[12]  Yves Bertot,et al.  Interactive Theorem Proving and Program Development: Coq'Art The Calculus of Inductive Constructions , 2010 .

[13]  Ranjit Jhala,et al.  Array Abstractions from Proofs , 2007, CAV.

[14]  Edmund M. Clarke,et al.  Counterexample-guided abstraction refinement , 2003, 10th International Symposium on Temporal Representation and Reasoning, 2003 and Fourth International Conference on Temporal Logic. Proceedings..

[15]  Kenneth L. McMillan,et al.  Quantified Invariant Generation Using an Interpolating Saturation Prover , 2008, TACAS.

[16]  Corina S. Pasareanu,et al.  Learning Assumptions for Compositional Verification , 2003, TACAS.

[17]  L. D. Moura,et al.  The YICES SMT Solver , 2006 .

[18]  Amir Pnueli,et al.  Shape Analysis by Predicate Abstraction , 2005, VMCAI.

[19]  Shuvendu K. Lahiri,et al.  Constructing Quantified Invariants via Predicate Abstraction , 2004, VMCAI.

[20]  Daniel Kroening,et al.  Decision Procedures - An Algorithmic Point of View , 2008, Texts in Theoretical Computer Science. An EATCS Series.

[21]  Kwangkeun Yi,et al.  Deriving Invariants in Propositional Logic by Algorithmic Learning, Decision Procedure, and Predicate Abstraction , 2009 .

[22]  Kenneth L. McMillan,et al.  Automated assumption generation for compositional verification , 2008, Formal Methods Syst. Des..

[23]  Ashutosh Gupta,et al.  InvGen: An Efficient Invariant Generator , 2009, CAV.

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

[25]  Sumit Gulwani,et al.  Lifting abstract interpreters to quantified logical domains , 2008, POPL '08.

[26]  Rajeev Alur,et al.  Symbolic Compositional Verification by Learning Assumptions , 2005, CAV.

[27]  Pierre Castéran,et al.  Interactive Theorem Proving and Program Development , 2004, Texts in Theoretical Computer Science An EATCS Series.

[28]  Cormac Flanagan,et al.  Predicate abstraction for software verification , 2002, POPL '02.

[29]  Sumit Gulwani,et al.  Constraint-Based Invariant Inference over Predicate Abstraction , 2008, VMCAI.

[30]  Pavol Cerný,et al.  Synthesis of interface specifications for Java classes , 2005, POPL '05.

[31]  Dana Angluin,et al.  Learning Regular Sets from Queries and Counterexamples , 1987, Inf. Comput..

[32]  Andrei Voronkov,et al.  Finding Loop Invariants for Programs over Arrays Using a Theorem Prover , 2009, 2009 11th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing.

[33]  Sumit Gulwani,et al.  VS3: SMT Solvers for Program Verification , 2009, CAV.

[34]  Shuvendu K. Lahiri,et al.  A Symbolic Approach to Predicate Abstraction , 2003, CAV.

[35]  Nicolas Halbwachs,et al.  Discovering properties about arrays in simple programs , 2008, PLDI '08.