skip to main content
10.1145/1926385.1926424acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
research-article

Predicate abstraction and refinement for verifying multi-threaded programs

Published: 26 January 2011 Publication History

Abstract

Automated verification of multi-threaded programs requires explicit identification of the interplay between interacting threads, so-called environment transitions, to enable scalable, compositional reasoning. Once the environment transitions are identified, we can prove program properties by considering each program thread in isolation, as the environment transitions keep track of the interleaving with other threads. Finding adequate environment transitions that are sufficiently precise to yield conclusive results and yet do not overwhelm the verifier with unnecessary details about the interleaving with other threads is a major challenge. In this paper we propose a method for safety verification of multi-threaded programs that applies (transition) predicate abstraction-based discovery of environment transitions, exposing a minimal amount of information about the thread interleaving. The crux of our method is an abstraction refinement procedure that uses recursion-free Horn clauses to declaratively state abstraction refinement queries. Then, the queries are resolved by a corresponding constraint solving algorithm. We present preliminary experimental results for mutual exclusion protocols and multi-threaded device drivers.

Supplementary Material

MP4 File (31-mpeg-4.mp4)

References

[1]
Y. Bar-David and G. Taubenfeld. Automatic discovery of mutual exclusion algorithms. In DISC, pages 136--150, 2003.
[2]
G. Basler, M. Mazzucchi, T. Wahl, and D. Kroening. Symbolic counter abstraction for concurrent software. In CAV, pages 64--78, 2009.
[3]
G. Basler, M. Hague, D. Kroening, C.-H. L. Ong, T. Wahl, and H. Zhao. Boom: Taking boolean program model checking one step further. In TACAS, pages 145--149, 2010.
[4]
E. M. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample-guided abstraction refinement. In CAV, pages 154--169, 2000.
[5]
A. Cohen and K. S. Namjoshi. Local proofs for global safety properties. FMSD, 34 (2): 104--125, 2009.
[6]
J. Corbet, A. Rubini, and G. Kroah-Hartman. Linux Device Drivers, 3rd Edition. O'Reilly Media, Inc., 2005.
[7]
P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In POPL, pages 238--252, 1977.
[8]
C. Flanagan and P. Godefroid. Dynamic partial-order reduction for model checking software. In POPL, pages 110--121, 2005.
[9]
C. Flanagan and S. Qadeer. Thread-modular model checking. In SPIN, pages 213--224, 2003.
[10]
C. Flanagan, S. N. Freund, and S. Qadeer. Thread-modular verification for shared-memory programs. In ESOP, pages 262--277, 2002.
[11]
P. Godefroid. Partial-Order Methods for the Verification of Concurrent Systems - An Approach to the State-Explosion Problem. PhD thesis, University of Liege, Computer Science Department, 1994.
[12]
S. Graf and H. Saıdi. Construction of abstract state graphs with PVS. In CAV, pages 72--83, 1997.
[13]
A. Gupta, C. Popeea, and A. Rybalchenko. Non-monotonic refinement of control abstraction for concurrent programs. In phATVA, pages 188--202, 2010.
[14]
T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In POPL, pages 58--70, 2002.
[15]
T. A. Henzinger, R. Jhala, and R. Majumdar. Race checking by context inference. In PLDI, pages 1--13, 2004.
[16]
C. B. Jones. Tentative steps toward a development method for interfering programs. ACM Trans. Program. Lang. Syst., 5 (4): 596--619, 1983.
[17]
C. B. Jones. Specification and design of (parallel) programs. In IFIP Congress, pages 321--332, 1983.
[18]
L. Lamport. A new solution of Dijkstra's concurrent programming problem. Commun. ACM, 17 (8): 453--455, 1974.
[19]
L. Lamport. A fast mutual exclusion algorithm. ACM Trans. Comput. Syst., 5 (1): 1--11, 1987.
[20]
S. Lu, S. Park, E. Seo, and Y. Zhou. Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. In ASPLOS, pages 329--339, 2008.
[21]
A. Malkis, A. Podelski, and A. Rybalchenko. Thread-modular verification is cartesian abstract interpretation. In ICTAC, pages 183--197, 2006.
[22]
Z. Manna and A. Pnueli. Temporal verification of reactive systems: safety. Springer-Verlag, 1995.
[23]
P. McKenney. Using Promela and Spin to verify parallel algorithms. LWN.net weekly edition, 2007.
[24]
M. Musuvathi, S. Qadeer, T. Ball, G. Basler, P. A. Nainar, and I. Neamtiu. Finding and reproducing Heisenbugs in concurrent programs. In OSDI, pages 267--280, 2008.
[25]
G. C. Necula, S. McPeak, S. P. Rahul, and W. Weimer. CIL: Intermediate language and tools for analysis and transformation of C programs. In CC, pages 213--228, 2002.
[26]
S. S. Owicki and D. Gries. An axiomatic proof technique for parallel programs I. Acta Inf., 6: 319--340, 1976.
[27]
A. Pnueli, J. Xu, and L. D. Zuck. Liveness with (0, 1, infty)-counter abstraction. In CAV, pages 107--122, 2002.
[28]
A. Podelski and A. Rybalchenko. Transition predicate abstraction and fair termination. In POPL, pages 132--144, 2005.
[29]
A. Podelski and A. Rybalchenko. Armc: The logical choice for software model checking with abstraction refinement. In PADL, pages 245--259, 2007.
[30]
S. Qadeer and D. Wu. KISS: keep it simple and sequential. In PLDI, pages 14--24, 2004.
[31]
A. Rybalchenko. The ARMC tool. Available from http://www7.in.tum.de/ rybal/armc/.
[32]
B. K. Szymanski. A simple solution to Lamport's concurrent programming problem with linear wait. In ICS, pages 621--626, 1988.
[33]
The Intelligent Systems Laboratory. SICStus Prolog User's Manual. Swedish Institute of Computer Science, 2001. Release 3.8.7.
[34]
C. Wang, Z. Yang, V. Kahlon, and A. Gupta. Peephole partial order reduction. In TACAS, pages 382--396, 2008.

Cited By

View all
  • (2023)Satisfiability Modulo Ordering Consistency Theory for SC, TSO, and PSO Memory ModelsACM Transactions on Programming Languages and Systems10.1145/357983545:1(1-37)Online publication date: 3-Mar-2023
  • (2022)Interference relation-guided SMT solving for multi-threaded program verificationProceedings of the 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming10.1145/3503221.3508424(163-176)Online publication date: 2-Apr-2022
  • (2021)Satisfiability modulo ordering consistency theory for multi-threaded program verificationProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454108(1264-1279)Online publication date: 19-Jun-2021
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '11: Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
January 2011
652 pages
ISBN:9781450304900
DOI:10.1145/1926385
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 46, Issue 1
    POPL '11
    January 2011
    624 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1925844
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 26 January 2011

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. (transition) predicate abstraction
  2. abstraction refinement
  3. environment transitions
  4. horn clauses.
  5. modular reasoning
  6. multi-threaded programs
  7. proof rule
  8. safety

Qualifiers

  • Research-article

Conference

POPL '11
Sponsor:

Acceptance Rates

Overall Acceptance Rate 860 of 4,328 submissions, 20%

Upcoming Conference

POPL '26

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)50
  • Downloads (Last 6 weeks)7
Reflects downloads up to 05 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2023)Satisfiability Modulo Ordering Consistency Theory for SC, TSO, and PSO Memory ModelsACM Transactions on Programming Languages and Systems10.1145/357983545:1(1-37)Online publication date: 3-Mar-2023
  • (2022)Interference relation-guided SMT solving for multi-threaded program verificationProceedings of the 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming10.1145/3503221.3508424(163-176)Online publication date: 2-Apr-2022
  • (2021)Satisfiability modulo ordering consistency theory for multi-threaded program verificationProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454108(1264-1279)Online publication date: 19-Jun-2021
  • (2021)Verification of Concurrent Programs Using Petri Net UnfoldingsVerification, Model Checking, and Abstract Interpretation10.1007/978-3-030-67067-2_9(174-195)Online publication date: 12-Jan-2021
  • (2020)On Scheduling Constraint Abstraction for Multi-Threaded Program VerificationIEEE Transactions on Software Engineering10.1109/TSE.2018.286412246:5(549-565)Online publication date: 1-May-2020
  • (2019)Deductive Verification Method of Real-Time Safety Properties for Embedded Assembly ProgramsElectronics10.3390/electronics81011638:10(1163)Online publication date: 14-Oct-2019
  • (2018)Scheduling constraint based abstraction refinement for weak memory modelsProceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering10.1145/3238147.3238223(645-655)Online publication date: 3-Sep-2018
  • (2018)Compositional Reasoning for Shared-Variable Concurrent ProgramsFormal Methods10.1007/978-3-319-95582-7_31(523-541)Online publication date: 12-Jul-2018
  • (2017)Effective Verification for Low-Level Software with Competing InterruptsACM Transactions on Embedded Computing Systems10.1145/314743217:2(1-26)Online publication date: 7-Dec-2017
  • (2017)Evaluating the Use of Sound in Static Program ComprehensionACM Transactions on Applied Perception10.1145/312945615:1(1-20)Online publication date: 6-Oct-2017
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media