Symbolic Counter Abstraction for Concurrent Software

The trend towards multi-core computing has made concurrent software an important target of computer-aided verification. Unfortunately, Model Checkers for such software suffer tremendously from combinatorial state space explosion. We show how to apply counter abstraction to real-world concurrent programs to factor out redundancy due to thread replication. The traditional global state representation as a vector of local states is replaced by a vector of thread counters, one per local state. In practice, straightforward implementations of this idea are unfavorably sensitive to the number of local states. We present a novel symbolic exploration algorithm that avoids this problem by carefully scheduling which counters to track at any moment during the search. Our experiments are carried out on Boolean programs, an abstraction promoted by the Slam project. To our knowledge, this marks the first application of counter abstraction to programs with non-trivial local state spaces, and results in the first scalable Model Checker for concurrent Boolean programs.

[1]  Javier Esparza,et al.  Symbolic Context-Bounded Analysis of Multithreaded Java Programs , 2008, SPIN.

[2]  Daniel Kroening,et al.  Symbolic Model Checking for Asynchronous Boolean Programs , 2005, SPIN.

[3]  Daniel Kroening,et al.  Scoot: A Tool for the Analysis of SystemC Models , 2008, TACAS.

[4]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[5]  Boris D. Lubachevsky,et al.  An approach to automating the verification of compact parallel coordination programs. I , 2018, Acta Informatica.

[6]  Thomas A. Henzinger,et al.  Race checking by context inference , 2004, PLDI '04.

[7]  Somesh Jha,et al.  Exploiting Symmetry In Temporal Logic Model Checking , 1993, CAV.

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

[9]  Daniel Kroening,et al.  Model checking concurrent linux device drivers , 2007, ASE.

[10]  Jakob Rehof,et al.  Zing: A Model Checker for Concurrent Software , 2004, CAV.

[11]  Robert P. Kurshan,et al.  Computer-Aided Verification of Coordinating Processes: The Automata-Theoretic Approach , 2014 .

[12]  Thomas Wahl,et al.  SVISS: Symbolic Verification of Symmetric Systems , 2008, TACAS.

[13]  Amir Pnueli,et al.  Liveness with (0, 1, infty)-Counter Abstraction , 2002, CAV.

[14]  A. Prasad Sistla,et al.  Symmetry and model checking , 1993, Formal Methods Syst. Des..

[15]  Thomas Wahl,et al.  Efficient Reduction Techniques for Systems with Many Components , 2005, Electron. Notes Theor. Comput. Sci..

[16]  E. Allen Emerson,et al.  From Asymmetry to Full Symmetry: New Techniques for Symmetry Reduction in Model Checking , 1999, CHARME.

[17]  E. Allen Emerson,et al.  Virtual symmetry reduction , 2000, Proceedings Fifteenth Annual IEEE Symposium on Logic in Computer Science (Cat. No.99CB36332).

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

[19]  Sagar Chaki,et al.  Parameterized Verification of Multithreaded Software Libraries , 2001, TACAS.

[20]  Shuvendu K. Lahiri,et al.  A Symbolic Approach to Predicate Abstraction , 2003, CAV.

[21]  Alastair F. Donaldson,et al.  Symmetry Reduction for Probabilistic Model Checking Using Generic Representatives , 2006, ATVA.

[22]  Orna Grumberg,et al.  Combining Symmetry Reduction and Under-Approximation for Symbolic Model Checking , 2002, Formal Methods Syst. Des..

[23]  Daniel Kroening,et al.  SATABS: SAT-Based Predicate Abstraction for ANSI-C , 2005, TACAS.

[24]  Daniel Kroening,et al.  Verification of Boolean programs with unbounded thread creation , 2007, Theor. Comput. Sci..

[25]  Amir Pnueli,et al.  Liveness with (0, 1, ∞)-counter abstraction , 2002 .

[26]  Sriram K. Rajamani,et al.  Thorough static analysis of device drivers , 2006, EuroSys.

[27]  Daniel Kroening,et al.  Over-Approximating Boolean Programs with Unbounded Thread Creation , 2006, 2006 Formal Methods in Computer Aided Design.

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

[29]  George J. Milne,et al.  Correct Hardware Design and Verification Methods , 2003, Lecture Notes in Computer Science.

[30]  Marsha Chechik,et al.  Identification and Counter Abstraction for Full Virtual Symmetry , 2005, CHARME.

[31]  Patrice Godefroid,et al.  Dynamic partial-order reduction for model checking software , 2005, POPL '05.