Preserving User Proofs across Specification Changes

In the context of deductive program verification, both the specification and the code evolve as the verification process carries on. For instance, a loop invariant gets strengthened when additional properties are added to the specification. This causes all the related proof obligations to change; thus previous user verifications become invalid. Yet it is often the case that most of previous proof attempts goal transformations, calls to interactive or automated provers are still directly applicable or are easy to adjust. In this paper, we describe a technique to maintain a proof session against modification of verification conditions. This technique is implemented in the Why3 platform. It was successfully used in developing more than a hundred verified programs and in keeping them up to date along the evolution of Why3 and its standard library. It also helps out with changes in the environment, e.g. prover upgrades.

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

[2]  Evelyne Contejean,et al.  Software - The Alt-Ergo theorem prover , 2010 .

[3]  Jean-Christophe Filliâtre,et al.  Why3 - Where Programs Meet Provers , 2013, ESOP.

[4]  François Bobot,et al.  Expressing Polymorphic Types in a Many-Sorted Language , 2011, FroCoS.

[5]  Geoff Sutcliffe The SZS Ontologies for Automated Reasoning Software , 2008, LPAR Workshops.

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

[7]  Natarajan Shankar,et al.  Tool Integration with the Evidential Tool Bus , 2013, VMCAI.

[8]  Kurt Stenzel,et al.  Reuse of Proofs in Software Verification , 1993, FSTTCS.

[9]  Vladimir Klebanov,et al.  Extending the reach and power of deductive program verification , 2009 .

[10]  John M. Rushby An Evidential Tool Bus , 2005, ICFEM.

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

[12]  Dale Miller,et al.  A formal framework for specifying sequent calculus proof systems , 2013, Theor. Comput. Sci..

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

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

[15]  François Bobot,et al.  Why3: Shepherd Your Herd of Provers , 2011 .

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