Predicate Abstraction for Program Verification

We present basic principles of algorithms for the verification of safety and termination of programs. The algorithms call procedures on logical formulas in order to construct an abstraction and to refine an abstraction. The two underlying concepts are predicate abstraction and counterexample-guided abstraction refinement.

[1]  Nikolaj Bjørner,et al.  On Solving Universally Quantified Horn Clauses , 2013, SAS.

[2]  Daniel Kroening,et al.  Interpolation-Based Software Verification with Wolverine , 2011, CAV.

[3]  Florian Zuleger,et al.  Ramsey vs. Lexicographic Termination Proving , 2013, TACAS.

[4]  Sumit Gulwani,et al.  Combining Model Checking and Data-Flow Analysis , 2018, Handbook of Model Checking.

[5]  Kenneth L. McMillan,et al.  Lazy Abstraction with Interpolants , 2006, CAV.

[6]  Orna Grumberg,et al.  Abstraction and Abstraction Refinement , 2018, Handbook of Model Checking.

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

[8]  Ashutosh Gupta,et al.  Predicate abstraction and refinement for verifying multi-threaded programs , 2011, POPL '11.

[9]  Thomas A. Henzinger,et al.  SYNERGY: a new algorithm for property checking , 2006, SIGSOFT '06/FSE-14.

[10]  Shuvendu K. Lahiri,et al.  Indexed Predicate Discovery for Unbounded System Verification , 2004, CAV.

[11]  Andreas Podelski,et al.  Boolean Heaps , 2005, SAS.

[12]  Andreas Podelski,et al.  Boolean and Cartesian abstraction for model checking C programs , 2001, International Journal on Software Tools for Technology Transfer.

[13]  Thomas A. Henzinger,et al.  Lazy abstraction , 2002, POPL '02.

[14]  Andreas Podelski,et al.  A Complete Method for the Synthesis of Linear Ranking Functions , 2004, VMCAI.

[15]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .

[16]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[17]  Helmut Veith,et al.  The Localization Reduction and Counterexample-Guided Abstraction Refinement , 2010, Essays in Memory of Amir Pnueli.

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

[19]  Sriram K. Rajamani,et al.  The YogiProject: Software Property Checking via Static Analysis and Testing , 2009, TACAS.

[20]  Ashutosh Gupta,et al.  Threader: A Constraint-Based Verifier for Multi-threaded Programs , 2011, CAV.

[21]  A. Rybalchenko,et al.  Transition invariants , 2004, LICS 2004.

[22]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 2002, TOPL.

[23]  Daniel Kroening,et al.  Termination Analysis with Compositional Transition Invariants , 2010, CAV.

[24]  Andreas Podelski,et al.  Size-Change Termination and Transition Invariants , 2010, SAS.

[25]  Jürgen Giesl,et al.  Automated Termination Proofs for Java Programs with Cyclic Data , 2012, CAV.

[26]  Marc Brockschmidt,et al.  Better Termination Proving through Cooperation , 2013, CAV.

[27]  Chao Wang,et al.  Model checking C programs using F-Soft , 2005, 2005 International Conference on Computer Design.

[28]  Swarat Chaudhuri,et al.  A constraint-based approach to solving games on infinite graphs , 2014, POPL.

[29]  Edmund M. Clarke,et al.  Counterexample-Guided Abstraction Refinement , 2000, CAV.

[30]  Alex Groce,et al.  Modular verification of software components in C , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[31]  Todd Millstein,et al.  Automatic predicate abstraction of C programs , 2001, PLDI '01.

[32]  K. Rustan M. Leino,et al.  Houdini, an Annotation Assistant for ESC/Java , 2001, FME.

[33]  Andrey Rybalchenko,et al.  Synthesizing software verifiers from proof rules , 2012, PLDI.

[34]  Thomas A. Henzinger,et al.  Abstractions from proofs , 2004, SIGP.

[35]  Rupak Majumdar,et al.  Software model checking , 2009, CSUR.

[36]  Andrey Rybalchenko,et al.  Solving Existentially Quantified Horn Clauses , 2013, CAV.

[37]  Dirk Beyer,et al.  CPAchecker: A Tool for Configurable Software Verification , 2009, CAV.

[38]  Patrick Cousot,et al.  An abstract interpretation framework for termination , 2012, POPL '12.

[39]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

[40]  Andreas Podelski,et al.  Counterexample-guided focus , 2010, POPL '10.

[41]  William Craig,et al.  Linear reasoning. A new form of the Herbrand-Gentzen theorem , 1957, Journal of Symbolic Logic.

[42]  Kwangkeun Yi,et al.  Termination Analysis with Algorithmic Learning , 2012, CAV.

[43]  Bernd Finkbeiner,et al.  SLAB: A Certifying Model Checker for Infinite-State Concurrent Systems , 2010, TACAS.

[44]  Dirk Beyer,et al.  Predicate abstraction with adjustable-block encoding , 2010, Formal Methods in Computer Aided Design.

[45]  David L. Dill,et al.  Experience with Predicate Abstraction , 1999, CAV.

[46]  Andreas Podelski,et al.  ARMC: The Logical Choice for Software Model Checking with Abstraction Refinement , 2007, PADL.

[47]  Dirk Beyer,et al.  Software model checking via large-block encoding , 2009, 2009 Formal Methods in Computer-Aided Design.

[48]  Neil D. Jones,et al.  The size-change principle for program termination , 2001, POPL '01.

[49]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[50]  Daniel Kroening,et al.  SATABS: SAT-Based Predicate Abstraction for ANSI-C , 2005, TACAS.

[51]  Andreas Podelski,et al.  Transition predicate abstraction and fair termination , 2005, POPL '05.

[52]  Andreas Podelski,et al.  Terminator: Beyond Safety , 2006, CAV.

[53]  Sriram K. Rajamani,et al.  Bebop: A Symbolic Model Checker for Boolean Programs , 2000, SPIN.

[54]  Marsha Chechik,et al.  Ufo: A Framework for Abstraction- and Interpolation-Based Software Verification , 2012, CAV.

[55]  Panagiotis Manolios,et al.  The ACL2 Sedan Theorem Proving System , 2011, TACAS.

[56]  Andreas Podelski,et al.  Termination proofs for systems code , 2006, PLDI '06.