Relational interprocedural verification of concurrent programs

We propose a general analysis method for recursive, concurrent programs that track effectively procedure calls and return in a concurrent context, even in the presence of unbounded recursion and infinite-state variables like integers. This method generalizes the relational interprocedural analysis of sequential programs to the concurrent case, and extends it to backward or coreachability analysis. We implemented it for programs with scalar variables and experimented with several classical synchronization protocols in order to illustrate the precision of our technique and also to analyze the approximations it performs.

[1]  Gadi Taubenfeld Synchronization Algorithms and Concurrent Programming , 2006 .

[2]  Sanjit A. Seshia,et al.  Modular verification of multithreaded programs , 2005, Theor. Comput. Sci..

[3]  Bertrand Jeannet,et al.  Apron: A Library of Numerical Abstract Domains for Static Analysis , 2009, CAV.

[4]  G. Ramalingam,et al.  Context-sensitive synchronization-sensitive analysis is undecidable , 2000, TOPL.

[5]  Nicolas Halbwachs,et al.  Some ways to reduce the space dimension in polyhedra computations , 2006, Formal Methods Syst. Des..

[6]  Andreas Podelski,et al.  Thread-Modular Verification Is Cartesian Abstract Interpretation , 2006, ICTAC.

[7]  Patrick Cousot,et al.  Static determination of dynamic properties of programs , 1976 .

[8]  Bertrand Jeannet Relational Interprocedural Verification of Concurrent Programs , 2009, SEFM.

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

[10]  Stephen N. Freund,et al.  Types for atomicity: Static checking and inference for Java , 2008, TOPL.

[11]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[12]  Andreas Podelski,et al.  Efficient algorithms for pre* and post* on interprocedural parallel flow graphs , 2000, POPL '00.

[13]  Bernhard Steffen,et al.  The Interprocedural Coincidence Theorem , 1992, CC.

[14]  Tayssir Touili,et al.  Spade: Verification of Multithreaded Dynamic and Recursive Programs , 2007, CAV.

[15]  Jens Knoop,et al.  An Automata-Theoretic Approach to Interprocedural Data-Flow Analysis , 1999, FoSSaCS.

[16]  Bertrand Jeannet,et al.  Relational interprocedural analysis for concurrent programs , 2008 .

[17]  Tayssir Touili,et al.  Regular Symbolic Analysis of Dynamic Networks of Pushdown Systems , 2005, CONCUR.

[18]  Thomas W. Reps,et al.  Guided Static Analysis , 2007, SAS.

[19]  Bertrand Jeannet Some Experience on the Software Engineering of Abstract Interpretation Tools , 2010, Electron. Notes Theor. Comput. Sci..

[20]  Shmuel Sagiv,et al.  TVLA: A System for Implementing Static Analyses , 2000, SAS.

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

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

[23]  Didier Caucal,et al.  On the Regular Structure of Prefix Rewriting , 1990, Theor. Comput. Sci..

[24]  Tayssir Touili,et al.  Interprocedural Analysis of Concurrent Programs Under a Context Bound , 2008, TACAS.

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

[26]  Frank Ghenassia,et al.  Transaction Level Modeling with SystemC , 2005 .

[27]  Randal E. Bryant,et al.  Graph-Based Algorithms for Boolean Function Manipulation , 1986, IEEE Transactions on Computers.

[28]  Frank Ghenassia Transaction-Level Modeling with SystemC: TLM Concepts and Applications for Embedded Systems , 2010 .

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

[30]  Bertrand Jeannet,et al.  Abstracting Call-Stacks for Interprocedural Verification of Imperative Programs , 2004, AMAST.

[31]  Patrick Cousot,et al.  Semantic foundations of program analysis , 1981 .

[32]  Patrick Cousot,et al.  Static Determination of Dynamic Properties of Recursive Procedures , 1977, Formal Description of Programming Concepts.

[33]  Eran Yahav,et al.  Cartesian Partial-Order Reduction , 2007, SPIN.

[34]  Patrick Cousot,et al.  Abstract Interpretation and Application to Logic Programs , 1992, J. Log. Program..

[35]  Antoine Miné,et al.  The octagon abstract domain , 2001, High. Order Symb. Comput..

[36]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 1999, POPL '99.