Symbolic Counter Abstraction for Concurrent Software

  • Gérard Basler
  • Michele Mazzucchi
  • Thomas Wahl
  • Daniel Kroening
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5643)


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.


Model Check Symmetry Reduction Kripke Structure Symbolic Model Check Predicate Abstraction 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Graf, S., Saïdi, H.: Construction of abstract state graphs with PVS. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  2. 2.
    Lahiri, S.K., Bryant, R., Cook, B.: A symbolic approach to predicate abstraction. In: Hunt Jr., W.A., Somenzi, F. (eds.) CAV 2003. LNCS, vol. 2725, pp. 141–153. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  3. 3.
    Ball, T., Rajamani, S.: Bebop: A symbolic model checker for Boolean programs. In: Model Checking of Software (SPIN) (2000)Google Scholar
  4. 4.
    Kurshan, R.: Computer-Aided Verification of Coordinating Processes. Princeton University Press, Princeton (1995)CrossRefzbMATHGoogle Scholar
  5. 5.
    Ball, T., Bounimova, E., Cook, B., Levin, V., Lichtenberg, J., McGarvey, C., Ondrusek, B., Rajamani, S., Ustuner, A.: Thorough static analysis of device drivers. In: EuroSys. (2006)Google Scholar
  6. 6.
    Witkowski, T., Blanc, N., Kroening, D., Weissenbacher, G.: Model checking concurrent Linux device drivers. In: Automated Software Engineering (ASE) (2007)Google Scholar
  7. 7.
    Emerson, A., Trefler, R.: From asymmetry to full symmetry: New techniques for symmetry reduction in model checking. In: Pierre, L., Kropf, T. (eds.) CHARME 1999. LNCS, vol. 1703, pp. 142–157. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  8. 8.
    Donaldson, A., Miller, A.: Symmetry reduction for probabilistic model checking using generic representatives. In: Graf, S., Zhang, W. (eds.) ATVA 2006. LNCS, vol. 4218, pp. 9–23. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  9. 9.
    Clarke, E., Kroening, D., Sharygina, N., Yorav, K.: SATABS: SAT-based predicate abstraction for ANSI-C. In: Halbwachs, N., Zuck, L.D. (eds.) TACAS 2005. LNCS, vol. 3440, pp. 570–574. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  10. 10.
    Melton, R., Dill, D.: Murφ Annotated Reference Manual, rel. 3.1,
  11. 11.
    Lubachevsky, B.: An approach to automating the verification of compact parallel coordination programs. Acta Informatica (1984)Google Scholar
  12. 12.
    Pnueli, A., Xu, J., Zuck, L.: Liveness with (0,1, ∞ )-counter abstraction. In: Brinksma, E., Larsen, K.G. (eds.) CAV 2002. LNCS, vol. 2404, p. 107. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  13. 13.
    Emerson, A., Wahl, T.: Efficient reduction techniques for systems with many components. In: Brazilian Symposium on Formal Methods (SBMF) (2004)Google Scholar
  14. 14.
    Wei, O., Gurfinkel, A., Chechik, M.: Identification and counter abstraction for full virtual symmetry. In: Borrione, D., Paul, W. (eds.) CHARME 2005. LNCS, vol. 3725, pp. 285–300. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  15. 15.
    Emerson, A., Havlicek, J., Trefler, R.: Virtual symmetry reduction. In: Logic in Computer Science (LICS) (2000)Google Scholar
  16. 16.
    Ball, T., Chaki, S., Rajamani, S.: Parameterized verification of multithreaded software libraries. In: Margaria, T., Yi, W. (eds.) TACAS 2001. LNCS, vol. 2031, p. 158. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  17. 17.
    Henzinger, T., Jhala, R., Majumdar, R.: Race checking by context inference. In: Programming Language Design and Implementation (PLDI) (2004)Google Scholar
  18. 18.
    Andrews, T., Qadeer, S., Rajamani, S., Rehof, J., Xie, Y.: Zing: A model checker for concurrent software. In: Alur, R., Peled, D.A. (eds.) CAV 2004. LNCS, vol. 3114, pp. 484–487. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  19. 19.
    Blanc, N., Emerson, A., Wahl, T.: Sviss: Symbolic verification of symmetric systems. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 459–462. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  20. 20.
    Barner, S., Grumberg, O.: Combining symmetry reduction and under-approximation for symbolic model checking. In: Formal Methods in System Design (FMSD) (2005)Google Scholar
  21. 21.
    Cook, B., Kroening, D., Sharygina, N.: Symbolic model checking for asynchronous Boolean programs. In: Godefroid, P. (ed.) SPIN 2005. LNCS, vol. 3639, pp. 75–90. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  22. 22.
    Suwimonteerabuth, D., Esparza, J., Schwoon, S.: Symbolic Context-Bounded Analysis of Multithreaded Java Programs. In: Havelund, K., Majumdar, R., Palsberg, J. (eds.) SPIN 2008. LNCS, vol. 5156, pp. 270–287. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  23. 23.
    Flanagan, C., Godefroid, P.: Dynamic partial-order reduction for model checking software. In: Principles of Programming Languages (POPL)(2005)Google Scholar
  24. 24.
    Cook, B., Kroening, D., Sharygina, N.: Verification of Boolean programs with unbounded thread creation. Theoretical Computer Science (TCS) (2007)Google Scholar
  25. 25.
    Clarke, E., Enders, R., Filkorn, T., Jha, S.: Exploiting symmetry in temporal logic model checking. In: Formal Methods in System Design (FMSD) (1996)Google Scholar
  26. 26.
    Emerson, A., Sistla, P.: Symmetry and model checking. In: Formal Methods in System Design (FMSD) (1996)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Gérard Basler
    • 1
  • Michele Mazzucchi
    • 1
  • Thomas Wahl
    • 1
    • 2
  • Daniel Kroening
    • 1
    • 2
  1. 1.Computer Systems InstituteETH ZurichSwitzerland
  2. 2.Computing LaboratoryOxford UniversityUnited Kingdom

Personalised recommendations