Summaries for While Programs with Recursion

Procedure summaries are an approximation of the effect of a procedure call. They have been used to prove partial correctness and safety properties. In this paper, we introduce a generalized notion of procedure summaries and present a framework to verify total correctness and liveness properties of a general class of while programs with recursion. We provide a fixpoint system for computing summaries, and a proof rule for total correctness of a program given a summary. With suitable abstraction methods and algorithms for efficient summary computation, the results presented here can be used for the automatic verification of termination and liveness properties for while programs with recursion.

[1]  Somesh Jha,et al.  Weighted pushdown systems and their application to interprocedural dataflow analysis , 2003, Sci. Comput. Program..

[2]  Ashish Tiwari,et al.  Termination of Linear Programs , 2004, CAV.

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

[4]  Michael Benedikt,et al.  Model Checking of Unrestricted Hierarchical State Machines , 2001, ICALP.

[5]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

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

[7]  Jakob Rehof,et al.  Summarizing procedures in concurrent programs , 2004, POPL.

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

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

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

[11]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

[12]  Bertrand Jeannet,et al.  A Relational Approach to Interprocedural Shape Analysis , 2004, SAS.

[13]  Henny B. Sipma,et al.  Synthesis of Linear Ranking Functions , 2001, TACAS.

[14]  David A. McAllester,et al.  Walther Recursion , 1996, CADE.

[15]  Cormac Flanagan,et al.  Thread-Modular Model Checking , 2003, SPIN.

[16]  Rajeev Alur,et al.  Analysis of Recursive State Machines , 2001, CAV.

[17]  Tayssir Touili,et al.  A Generic Approach to the Static Analysis of Concurrent Programs with Procedures , 2003, Int. J. Found. Comput. Sci..

[18]  Pierre Wolper,et al.  An Automata-Theoretic Approach to Automatic Program Verification (Preliminary Report) , 1986, LICS.

[19]  Frank Plumpton Ramsey,et al.  On a Problem of Formal Logic , 1930 .

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