Skip to main content
Erschienen in: Formal Methods in System Design 1/2012

01.08.2012

Counterexample-guided abstraction refinement for symmetric concurrent programs

verfasst von: Alastair F. Donaldson, Alexander Kaiser, Daniel Kroening, Michael Tautschnig, Thomas Wahl

Erschienen in: Formal Methods in System Design | Ausgabe 1/2012

Einloggen

Aktivieren Sie unsere intelligente Suche, um passende Fachinhalte oder Patente zu finden.

search-config
loading …

Abstract

Predicate abstraction and counterexample-guided abstraction refinement (CEGAR) have enabled finite-state model checking of software written in mainstream programming languages. This combination of techniques has been successful in analysing system-level sequential C code. In contrast, there is little evidence of fruitful applications of CEGAR to shared-variable concurrent software. We attribute this gap to the lack of abstraction strategies that permit a scalable analysis of the resulting multi-threaded Boolean programs. The goal of this paper is to close this gap. We have developed a symmetry-aware CEGAR technique: it takes into account the replicated structure of programs that consist of many threads executing the same procedure, and generates a Boolean program template whose multi-threaded execution soundly overapproximates the original concurrent program. State explosion during model checking parallel instantiations of this template can now be absorbed by exploiting symmetry. We have implemented our method in a tool, SymmPa, and demonstrate its superior performance over alternative approaches on a range of synchronisation programs.

Sie haben noch keine Lizenz? Dann Informieren Sie sich jetzt über unsere Produkte:

Springer Professional "Wirtschaft+Technik"

Online-Abonnement

Mit Springer Professional "Wirtschaft+Technik" erhalten Sie Zugriff auf:

  • über 102.000 Bücher
  • über 537 Zeitschriften

aus folgenden Fachgebieten:

  • Automobil + Motoren
  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Elektrotechnik + Elektronik
  • Energie + Nachhaltigkeit
  • Finance + Banking
  • Management + Führung
  • Marketing + Vertrieb
  • Maschinenbau + Werkstoffe
  • Versicherung + Risiko

Jetzt Wissensvorsprung sichern!

Springer Professional "Wirtschaft"

Online-Abonnement

Mit Springer Professional "Wirtschaft" erhalten Sie Zugriff auf:

  • über 67.000 Bücher
  • über 340 Zeitschriften

aus folgenden Fachgebieten:

  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Finance + Banking
  • Management + Führung
  • Marketing + Vertrieb
  • Versicherung + Risiko




Jetzt Wissensvorsprung sichern!

Springer Professional "Technik"

Online-Abonnement

Mit Springer Professional "Technik" erhalten Sie Zugriff auf:

  • über 67.000 Bücher
  • über 390 Zeitschriften

aus folgenden Fachgebieten:

  • Automobil + Motoren
  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Elektrotechnik + Elektronik
  • Energie + Nachhaltigkeit
  • Maschinenbau + Werkstoffe




 

Jetzt Wissensvorsprung sichern!

Fußnoten
1
It is easy to generalise what follows to handle the case where tJ. Because in practice it usually makes sense to refine transitions with respect to a set of threads that includes the active thread (indeed often the set J will simply be {t}) we do not present this generalisation, which would add tests on tJ in several occurrences of J.
 
2
Exceptions are 2/Inc-C and 17/Readers-wr., which is due to different counterexamples reported by the model checker.
 
3
A notable difference is that Threader relies on natural integers for representing numeric C types, whereas SymmPauses machine integers, hence is “bit-precise”. For comparability we skipped three benchmarks from [17] where this difference affects the verification outcome.
 
Literatur
1.
Zurück zum Zitat Ball T, Cook B, Das S, Rajamani SK (2004) Refining approximations in software predicate abstraction. In: TACAS. Lecture notes in computer science, vol 2988. Springer, Berlin, pp 388–403 Ball T, Cook B, Das S, Rajamani SK (2004) Refining approximations in software predicate abstraction. In: TACAS. Lecture notes in computer science, vol 2988. Springer, Berlin, pp 388–403
2.
Zurück zum Zitat Ball T, Majumdar R, Millstein TD, Rajamani SK (2001) Automatic predicate abstraction of C programs. In: Programming language design and implementation (PLDI), pp 203–213 Ball T, Majumdar R, Millstein TD, Rajamani SK (2001) Automatic predicate abstraction of C programs. In: Programming language design and implementation (PLDI), pp 203–213
3.
Zurück zum Zitat Ball T, Rajamani S (2002) The SLAM project: debugging system software via static analysis. In: Principles of programming languages (POPL), pp 1–3 Ball T, Rajamani S (2002) The SLAM project: debugging system software via static analysis. In: Principles of programming languages (POPL), pp 1–3
4.
Zurück zum Zitat Basler G, Mazzucchi M, Wahl T, Kroening D (2010) Context-aware counter abstraction. Form Methods Syst Des 36(3):223–245 CrossRefMATH Basler G, Mazzucchi M, Wahl T, Kroening D (2010) Context-aware counter abstraction. Form Methods Syst Des 36(3):223–245 CrossRefMATH
5.
Zurück zum Zitat Chaki S, Clarke EM, Kidd N, Reps T, Touili T (2006) Verifying concurrent message-passing C programs with recursive calls. In: Tools and algorithms for the construction and analysis of systems (TACAS). Lecture notes in computer science. Springer, Berlin, pp 334–349 CrossRef Chaki S, Clarke EM, Kidd N, Reps T, Touili T (2006) Verifying concurrent message-passing C programs with recursive calls. In: Tools and algorithms for the construction and analysis of systems (TACAS). Lecture notes in computer science. Springer, Berlin, pp 334–349 CrossRef
6.
Zurück zum Zitat Cimatti A, Micheli A, Narasamdya I, Roveri M (2010) Verifying SystemC: a software model checking approach. In: Formal methods in computer-aided design (FMCAD) Cimatti A, Micheli A, Narasamdya I, Roveri M (2010) Verifying SystemC: a software model checking approach. In: Formal methods in computer-aided design (FMCAD)
7.
Zurück zum Zitat Clarke E, Grumberg O, Jha S, Lu Y, Veith H (2003) Counterexample-guided abstraction refinement for symbolic model checking. J ACM 50(5):752–794 MathSciNetCrossRef Clarke E, Grumberg O, Jha S, Lu Y, Veith H (2003) Counterexample-guided abstraction refinement for symbolic model checking. J ACM 50(5):752–794 MathSciNetCrossRef
8.
Zurück zum Zitat Cook B, Kroening D, Sharygina N (2007) Verification of Boolean programs with unbounded thread creation. Theor Comput Sci 388(1–3):227–242 MathSciNetCrossRefMATH Cook B, Kroening D, Sharygina N (2007) Verification of Boolean programs with unbounded thread creation. Theor Comput Sci 388(1–3):227–242 MathSciNetCrossRefMATH
9.
Zurück zum Zitat Corbet J, Rubini A, Kroah-Hartman G (2005) Linux device drivers, 3rd edn. O’Reilly Media, Sebastopol Corbet J, Rubini A, Kroah-Hartman G (2005) Linux device drivers, 3rd edn. O’Reilly Media, Sebastopol
10.
Zurück zum Zitat Das S, Dill DL (2001) Successive approximation of abstract transition relations. In: Logic in computer science (LICS) Das S, Dill DL (2001) Successive approximation of abstract transition relations. In: Logic in computer science (LICS)
11.
Zurück zum Zitat Donaldson AF, Kaiser A, Kroening D, Wahl T (2011) Symmetry-aware predicate abstraction for shared-variable concurrent programs. In: CAV. Lecture notes in computer science, vol 6806. Springer, Berlin, pp 356–371 Donaldson AF, Kaiser A, Kroening D, Wahl T (2011) Symmetry-aware predicate abstraction for shared-variable concurrent programs. In: CAV. Lecture notes in computer science, vol 6806. Springer, Berlin, pp 356–371
12.
Zurück zum Zitat Donaldson AF, Kaiser A, Kroening D, Wahl T (2011) Symmetry-aware predicate abstraction for shared-variable concurrent programs (extended technical report). CoRR. arXiv:1102.2330 Donaldson AF, Kaiser A, Kroening D, Wahl T (2011) Symmetry-aware predicate abstraction for shared-variable concurrent programs (extended technical report). CoRR. arXiv:​1102.​2330
13.
Zurück zum Zitat Donaldson AF, Miller A (2008) Automatic symmetry detection for Promela. J Autom Reason 41(3–4):251–293 CrossRefMATH Donaldson AF, Miller A (2008) Automatic symmetry detection for Promela. J Autom Reason 41(3–4):251–293 CrossRefMATH
14.
Zurück zum Zitat Flanagan C, Qadeer S (2003) Thread-modular model checking. In: Model checking of software (SPIN) Flanagan C, Qadeer S (2003) Thread-modular model checking. In: Model checking of software (SPIN)
15.
Zurück zum Zitat Graf S, Saïdi H (1997) Construction of abstract state graphs with PVS. In: Computer-aided verification (CAV). Lecture notes in computer science. Springer, Berlin, pp 72–83 CrossRef Graf S, Saïdi H (1997) Construction of abstract state graphs with PVS. In: Computer-aided verification (CAV). Lecture notes in computer science. Springer, Berlin, pp 72–83 CrossRef
16.
Zurück zum Zitat Gupta A, Popeea C, Rybalchenko A (2011) Predicate abstraction and refinement for verifying multi-threaded programs. In: POPL. ACM, New York, pp 331–344 Gupta A, Popeea C, Rybalchenko A (2011) Predicate abstraction and refinement for verifying multi-threaded programs. In: POPL. ACM, New York, pp 331–344
17.
Zurück zum Zitat Gupta A, Popeea C, Rybalchenko A (2011) Threader: a constraint-based verifier for multi-threaded programs. In: Computer-aided verification (CAV) Gupta A, Popeea C, Rybalchenko A (2011) Threader: a constraint-based verifier for multi-threaded programs. In: Computer-aided verification (CAV)
18.
Zurück zum Zitat Henzinger T, Jhala R, Majumdar R, Qadeer S (2003) Thread-modular abstraction refinement. In: CAV. Lecture notes in computer science. Springer, Berlin, pp 262–274 Henzinger T, Jhala R, Majumdar R, Qadeer S (2003) Thread-modular abstraction refinement. In: CAV. Lecture notes in computer science. Springer, Berlin, pp 262–274
19.
Zurück zum Zitat Henzinger T, Jhala R, Majumdar R (2004) Race checking by context inference. In: Programming language design and implementation (PLDI), pp 1–13 Henzinger T, Jhala R, Majumdar R (2004) Race checking by context inference. In: Programming language design and implementation (PLDI), pp 1–13
20.
Zurück zum Zitat Jones CB (1983) Tentative steps toward a development method for interfering programs. ACM Trans Program Lang Syst 5(4):596–619 CrossRefMATH Jones CB (1983) Tentative steps toward a development method for interfering programs. ACM Trans Program Lang Syst 5(4):596–619 CrossRefMATH
21.
Zurück zum Zitat Kaiser A, Kroening D, Wahl T (2010) Dynamic cutoff detection in parameterized concurrent programs. In: Computer-aided verification (CAV) Kaiser A, Kroening D, Wahl T (2010) Dynamic cutoff detection in parameterized concurrent programs. In: Computer-aided verification (CAV)
22.
Zurück zum Zitat Lu S, Park S, Seo E, Zhou Y (2008) Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. In: Architectural support for programming languages and operating systems (ASPLOS) Lu S, Park S, Seo E, Zhou Y (2008) Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. In: Architectural support for programming languages and operating systems (ASPLOS)
23.
Zurück zum Zitat McKenney P (2007) Using Promela and Spin to verify parallel algorithms. LWN.net, weekly edition McKenney P (2007) Using Promela and Spin to verify parallel algorithms. LWN.net, weekly edition
24.
Zurück zum Zitat Mellor-Crummey J, Scott M (1991) Algorithms for scalable synchronization on shared-memory multiprocessors. ACM Trans Comput Syst 9(1):21–65 CrossRef Mellor-Crummey J, Scott M (1991) Algorithms for scalable synchronization on shared-memory multiprocessors. ACM Trans Comput Syst 9(1):21–65 CrossRef
25.
Zurück zum Zitat Miller A, Donaldson A, Calder M (2006) Symmetry in temporal logic model checking. ACM Comput. Surv. 38(3) Miller A, Donaldson A, Calder M (2006) Symmetry in temporal logic model checking. ACM Comput. Surv. 38(3)
26.
Zurück zum Zitat Speer Owicki S (1975) Axiomatic proof techniques for parallel programs. PhD thesis, Cornell University Speer Owicki S (1975) Axiomatic proof techniques for parallel programs. PhD thesis, Cornell University
27.
Zurück zum Zitat Peierls T, Goetz B, Bloch J, Bowbeer J, Lea D, Holmes D (2005) Java concurrency in practice. Addison-Wesley, Reading Peierls T, Goetz B, Bloch J, Bowbeer J, Lea D, Holmes D (2005) Java concurrency in practice. Addison-Wesley, Reading
28.
Zurück zum Zitat Timm N, Wehrheim H (2010) On symmetries and spotlights—verifying parameterised systems. In: ICFEM. Lecture notes in computer science. Springer, Berlin, pp 534–548 Timm N, Wehrheim H (2010) On symmetries and spotlights—verifying parameterised systems. In: ICFEM. Lecture notes in computer science. Springer, Berlin, pp 534–548
29.
Zurück zum Zitat La Torre S, Madhusudan P, Parlato G (2010) Model-checking parameterized concurrent programs using linear interfaces. In: Computer-aided verification (CAV) La Torre S, Madhusudan P, Parlato G (2010) Model-checking parameterized concurrent programs using linear interfaces. In: Computer-aided verification (CAV)
30.
Zurück zum Zitat Wahl T, Donaldson A (2010) Replication and abstraction: symmetry in automated formal verification. Symmetry 2(2):799–847 MathSciNetCrossRef Wahl T, Donaldson A (2010) Replication and abstraction: symmetry in automated formal verification. Symmetry 2(2):799–847 MathSciNetCrossRef
31.
Zurück zum Zitat Yang Y, Chen X, Gopalakrishnan G, Wang C (2009) Automatic discovery of transition symmetry in multithreaded programs using dynamic analysis. In: SPIN Yang Y, Chen X, Gopalakrishnan G, Wang C (2009) Automatic discovery of transition symmetry in multithreaded programs using dynamic analysis. In: SPIN
Metadaten
Titel
Counterexample-guided abstraction refinement for symmetric concurrent programs
verfasst von
Alastair F. Donaldson
Alexander Kaiser
Daniel Kroening
Michael Tautschnig
Thomas Wahl
Publikationsdatum
01.08.2012
Verlag
Springer US
Erschienen in
Formal Methods in System Design / Ausgabe 1/2012
Print ISSN: 0925-9856
Elektronische ISSN: 1572-8102
DOI
https://doi.org/10.1007/s10703-012-0155-3

Weitere Artikel der Ausgabe 1/2012

Formal Methods in System Design 1/2012 Zur Ausgabe

EditorialNotes

Preface

Premium Partner