eVolCheck: Incremental Upgrade Checker for C

Software is not created at once. Rather, it grows incrementally version by version and evolves long after being first released. To be practical for software developers, the software verification tools should be able to cope with changes. In this paper, we present a tool, eVolCheck, that focuses on incremental verification of software as it evolves. During the software evolution the tool maintains abstractions of program functions, function summaries, derived using Craig interpolation. In each check, the function summaries are used to localize verification of an upgrade to analysis of the modified functions. Experimental evaluation on a range of various benchmarks shows substantial speedup of incremental upgrade checking of eVolCheck in contrast to checking each version from scratch.

[1]  William Craig,et al.  Three uses of the Herbrand-Gentzen theorem in relating model theory and proof theory , 1957, Journal of Symbolic Logic.

[2]  Nachum Dershowitz,et al.  Verification: Theory and Practice , 2004, Lecture Notes in Computer Science.

[3]  Thomas A. Henzinger,et al.  Extreme Model Checking , 2003, Verification: Theory and Practice.

[4]  Kousha Etessami,et al.  Analysis of Recursive Game Graphs Using Data Flow Equations , 2004, VMCAI.

[5]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[6]  Kenneth L. McMillan,et al.  Applications of Craig Interpolants in Model Checking , 2005, TACAS.

[7]  Sagar Chaki,et al.  Dynamic Component Substitutability Analysis , 2005, FM.

[8]  Stephen A. Edwards,et al.  Incremental Algorithms for Inter-procedural Analysis of Safety Properties , 2005, CAV.

[9]  Kenneth L. McMillan Applications of Craig Interpolation to Model Checking , 2005, ICATPN.

[10]  Ian J. Hayes,et al.  FM 2005: Formal Methods, International Symposium of Formal Methods Europe, Newcastle, UK, July 18-22, 2005, Proceedings , 2005, FM.

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

[12]  Matthew B. Dwyer,et al.  Differential symbolic execution , 2008, SIGSOFT '08/FSE-16.

[13]  Ofer Strichman,et al.  Regression verification , 2009, 2009 46th ACM/IEEE Design Automation Conference.

[14]  Kenneth L. McMillan Lazy Annotation for Program Testing and Verification , 2010, CAV.

[15]  Jochen Hoenicke,et al.  Nested interpolants , 2010, POPL '10.

[16]  Roberto Bruttomesso,et al.  The OpenSMT Solver , 2010, TACAS.

[17]  Mohamed Nassim Seghir,et al.  A Lightweight Approach for Loop Summarization , 2011, ATVA.

[18]  Shuvendu K. Lahiri,et al.  Statically Validating Must Summaries for Incremental Compositional Dynamic Test Generation , 2011, SAS.

[19]  Grigory Fedyukovich,et al.  Interpolation-Based Function Summaries in Bounded Model Checking , 2011, Haifa Verification Conference.

[20]  Marsha Chechik,et al.  Whale: An Interpolation-Based Algorithm for Inter-procedural Verification , 2012, VMCAI.

[21]  Manu Sridharan,et al.  Alternate and Learn: Finding Witnesses without Looking All over , 2012, CAV.

[22]  Grigory Fedyukovich,et al.  Incremental upgrade checking by means of interpolation-based function summaries , 2012, 2012 Formal Methods in Computer-Aided Design (FMCAD).

[23]  Grigory Fedyukovich,et al.  FunFrog: Bounded Model Checking with Interpolation-Based Function Summarization , 2012, ATVA.

[24]  Shuvendu K. Lahiri,et al.  SYMDIFF: A Language-Agnostic Semantic Diff Tool for Imperative Programs , 2012, CAV.

[25]  Natasha Sharygina,et al.  Leveraging Interpolant Strength in Model Checking , 2012, CAV.