Graph Based Reduction of Program Verification Conditions

Increasing the automaticity of proofs in deductive verification of C programs is a challenging task. When applied to industrial C programs known heuristics to generate simpler verification conditions are not efficient enough. This is mainly due to their size and a high number of irrelevant hypotheses. This work presents a strategy to reduce program verification conditions by selecting their relevant hypotheses. The relevance of a hypothesis is determined by the combination of a syntactic analysis and two graph traversals. The first graph is labeled by constants and the second one by the predicates in the axioms. The approach is applied on a benchmark arising in industrial program verification.

[1]  Jean-François Couchot,et al.  A Graph-based Strategy for the Selection of Hypotheses ⋆ , 2007 .

[2]  Julien Groslambert,et al.  Vérification de propriétés LTL sur des programmes C par génération d'annotations , 2011 .

[3]  Natarajan Shankar,et al.  A Tutorial on Satisfiability Modulo Theories , 2007, CAV.

[4]  K. Rustan M. Leino,et al.  Efficient weakest preconditions , 2005, Inf. Process. Lett..

[5]  Silvio Ranise,et al.  Light-weight theorem proving for debugging and verifying units of code , 2003, First International Conference onSoftware Engineering and Formal Methods, 2003.Proceedings..

[6]  Larry Wos,et al.  The Hot List Strategy , 2004, Journal of Automated Reasoning.

[7]  Silvio Ranise,et al.  Satisfiability solving for software verification , 2009, International Journal on Software Tools for Technology Transfer.

[8]  Johann Schumann,et al.  An Empirical Evaluation of Automated Theorem Provers in Software Certification , 2013, Int. J. Artif. Intell. Tools.

[9]  Larry Wos Conquering the Meredith Single Axiom , 2004, Journal of Automated Reasoning.

[10]  Claude Marché,et al.  The Why/Krakatoa/Caduceus Platform for Deductive Program Verification , 2007, CAV.

[11]  Alain Giorgetti,et al.  JAG: JML Annotation Generation for Verifying Temporal Properties , 2006, FASE.

[12]  Sergey Berezin,et al.  CVC Lite: A New Implementation of the Cooperating Validity Checker Category B , 2004, CAV.

[13]  Petr Pudlak Semantic Selection of Premisses for Automated Theorem Proving , 2007, ESARLT.

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

[15]  Christine Paulin-Mohring,et al.  The coq proof assistant reference manual , 2000 .

[16]  E. Pascal Gribomont Simplification of boolean verification conditions , 2000, Theor. Comput. Sci..

[17]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[18]  Christoph Weidenbach,et al.  Computing Small Clause Normal Forms , 2001, Handbook of Automated Reasoning.

[19]  Lawrence C. Paulson,et al.  Lightweight relevance filtering for machine-generated resolution problems , 2009, J. Appl. Log..

[20]  K. Rustan M. Leino,et al.  Extended static checking , 1998, PROCOMET.

[21]  David Detlefs,et al.  Simplify: a theorem prover for program checking , 2005, JACM.

[22]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

[23]  W. Reif,et al.  Theorem Proving in Large Theories , 1998 .

[24]  Richard Bornat,et al.  Proving Pointer Programs in Hoare Logic , 2000, MPC.

[25]  Geoff Sutcliffe,et al.  SRASS - A Semantic Relevance Axiom Selection System , 2007, CADE.

[26]  Bernhard Kauer OSLO: Improving the Security of Trusted Computing , 2007, USENIX Security Symposium.

[27]  Michael D. Ernst,et al.  An overview of JML tools and applications , 2003, International Journal on Software Tools for Technology Transfer.

[28]  Larry Wos,et al.  Efficiency and Completeness of the Set of Support Strategy in Theorem Proving , 1965, JACM.

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

[30]  David A. Plaisted,et al.  A relevance restriction strategy for automated deduction , 2003, Artif. Intell..