Could We Have Chosen a Better Loop Invariant or Method Contract?

The method contract and loop invariant rules (contract rules ) are an important software verification technique for handling method invocations and loops. However, if a verification condition resulting from using a contract rule turns out to be falsifiable, then the user does not know if she could have chosen a stronger contract to verify the program or if the program is not verifiable due to a software bug. We approach this problem and present a novel technique that unifies verification and software bug detection.

[1]  Muhammad Ali Shah,et al.  Proving Programs Incorrect Using a Sequent Calculus for Java Dynamic Logic , 2007, TAP.

[2]  Claude Marché,et al.  Multi-prover Verification of C Programs , 2004, ICFEM.

[3]  Claude Marché,et al.  The KRAKATOA tool for certificationof JAVA/JAVACARD programs annotated in JML , 2004, J. Log. Algebraic Methods Program..

[4]  Bernhard Beckert,et al.  A Dynamic Logic for the Formal Verification of Java Card Programs , 2000, Java Card Workshop.

[5]  Bernhard Beckert,et al.  Dynamic Logic , 2007, The KeY Approach.

[6]  K. Rustan M. Leino,et al.  The Spec# Programming System: Challenges and Directions , 2005, VSTTE.

[7]  Philipp Rümmer,et al.  Sequential, Parallel, and Quantified Updates of First-Order Structures , 2006, LPAR.

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

[9]  Reiner Hähnle,et al.  Generating Unit Tests from Formal Proofs , 2007, TAP.

[10]  Bernhard Beckert,et al.  The KeY tool , 2005, Software & Systems Modeling.

[11]  Christoph Gladisch,et al.  Verification-Based Test Case Generation for Full Feasible Branch Coverage , 2008, 2008 Sixth IEEE International Conference on Software Engineering and Formal Methods.

[12]  Thomas Jensen,et al.  Java on Smart Cards:Programming and Security , 2001, Lecture Notes in Computer Science.

[13]  Frank Wolter,et al.  Monodic fragments of first-order temporal logics: 2000-2001 A.D , 2001, LPAR.

[14]  D. Gabbay,et al.  Handbook of Philosophical Logic, Volume II. Extensions of Classical Logic , 1986 .

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

[16]  Bernhard Beckert,et al.  White-Box Testing by Combining Deduction-Based Specification Extraction and Black-Box Testing , 2007, TAP.

[17]  Frank Piessens,et al.  A glimpse of a verifying C compiler , 2007 .

[18]  Andreas Podelski,et al.  ACSAR: Software Model Checking with Transfinite Refinement , 2007, SPIN.

[19]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

[20]  Dov M. Gabbay,et al.  Handbook of Philosophical Logic , 2002 .

[21]  Ajitha Rajan,et al.  Requirements Coverage as an Adequacy Measure for Conformance Testing , 2008, ICFEM.

[22]  Bernhard Beckert,et al.  An Improved Rule for While Loops in Deductive Program Verification , 2005, ICFEM.

[23]  Koen Claessen,et al.  Finding Counter Examples in Induction Proofs , 2008, TAP.

[24]  David Lee,et al.  Online minimization of transition systems (extended abstract) , 1992, STOC '92.

[25]  Bernhard Beckert,et al.  Verification of Object-Oriented Software. The KeY Approach - Foreword by K. Rustan M. Leino , 2007, The KeY Approach.

[26]  Jooyong Yi,et al.  Bogor/Kiasan: A k-bounded Symbolic Execution for Checking Strong Heap Properties of Open Systems , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[27]  Vladimir Klebanov,et al.  Integrating Verification and Testing of Object-Oriented Software , 2008, TAP.

[28]  K. Rustan M. Leino,et al.  Loop Invariants on Demand , 2005, APLAS.

[29]  Sriram K. Rajamani,et al.  Automatically validating temporal safety properties of interfaces , 2001, SPIN '01.