skip to main content
research-article

Thread modularity at many levels: a pearl in compositional verification

Published:01 January 2017Publication History
Skip Abstract Section

Abstract

A thread-modular proof for the correctness of a concurrent program is based on an inductive and interference-free annotation of each thread. It is well-known that the corresponding proof system is not complete (unless one adds auxiliary variables). We describe a hierarchy of proof systems where each level k corresponds to a generalized notion of thread modularity (level 1 corresponds to the original notion). Each level is strictly more expressive than the previous. Further, each level precisely captures programs that can be proved using uniform Ashcroft invariants with k universal quantifiers. We demonstrate the usefulness of the hierarchy by giving a compositional proof of the Mach shootdown algorithm for TLB consistency. We show a proof at level 2 that shows the algorithm is correct for an arbitrary number of CPUs. However, there is no proof for the algorithm at level 1 which does not involve auxiliary state.

References

  1. Mart´ın Abadi and Leslie Lamport. Conjoining specifications. Transactions on Programming Languages and Systems, 17(3), 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. P. A. Abdulla, K. ˇ Cerans, B. Jonsson, and Y.-K. Tsay. Algorithmic analysis of programs with well quasi-ordered domains. Information and Computation, 160(1–2), 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Parosh Aziz Abdulla, Yu-Fang Chen, Giorgio Delzanno, Frédéric Haziza, Chih-Duo Hong, and Ahmed Rezine. Constrained monotonic abstraction: A CEGAR for parameterized verification. In CONCUR, 2010.Google ScholarGoogle ScholarCross RefCross Ref
  4. Parosh Aziz Abdulla, Frédéric Haziza, and Lukás Hol´ık. All for the price of few. In VMCAI, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Parosh Aziz Abdulla, Frédéric Haziza, and Lukás Hol´ık. Parameterized verification through view abstraction. STTT, 18(5), 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Krzysztof R. Apt, Frank S. de Boer, and Ernst-Rüdiger Olderog. Verification of Sequential and Concurrent Programs. Springer, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Tamarah Arons, Amir Pnueli, Sitvanit Ruah, Jiazhao Xu, and Lenore D. Zuck. Parameterized verification with automatically computed inductive assertions. In CAV, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Edward A. Ashcroft. Proving assertions about parallel programs. J. Comput. Syst. Sci., 10(1), 1975. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Thomas Ball, Andreas Podelski, and Sriram K. Rajamani. Boolean and cartesian abstraction for model checking C programs. STTT, 5(1), 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Josh Berdine, Tal Lev-Ami, Roman Manevich, G. Ramalingam, and Shmuel Sagiv. Thread quantification for concurrent shape analysis. In CAV, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Josh Berdine, Tal Lev-Ami, Roman Manevich, G. Ramalingam, and Shmuel Sagiv. Thread quantification for concurrent shape analysis. In CAV, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. David L. Black. Personal communication., 2016.Google ScholarGoogle Scholar
  13. David L. Black, Richard F. Rashid, David B. Golub, Charles R. Hill, and Robert V. Baron. Translation lookaside buffer consistency: A software approach. In ASPLOS-III, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Ariel Cohen and Kedar S. Namjoshi. Local proofs for global safety properties. Formal Methods in System Design, 34(2), 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Patrick Cousot and Radhia Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In POPL, 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Patrick Cousot and Radhia Cousot. Reasoning about program invariance proof methods. Res. rep. CRIN-80-P050, Centre de Recherche en Informatique de Nancy (CRIN), Institut National Polytechnique de Lorraine, Nancy, France, July 1980.Google ScholarGoogle Scholar
  17. Patrick Cousot and Radhia Cousot. Invariance proof methods and analysis techniques for parallel programs. In Automatic program construction techniques. Macmillan, 1984.Google ScholarGoogle Scholar
  18. Alastair Donaldson, Alexander Kaiser, Daniel Kroening, and Thomas Wahl. Symmetry-aware predicate abstraction for shared-variable concurrent programs. In CAV, volume 6806, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Alastair F. Donaldson, Alexander Kaiser, Daniel Kroening, Michael Tautschnig, and Thomas Wahl. Counterexample-guided abstraction refinement for symmetric concurrent programs. Formal Methods in System Design, 41(1), 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Klaus Dräger, Andrey Kupriyanov, Bernd Finkbeiner, and Heike Wehrheim. SLAB: A certifying model checker for infinite-state concurrent systems. In TACAS, 2010.Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Michael Emmi, Rupak Majumdar, and Roman Manevich. Parameterized verification of transactional memories. In PLDI, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Azadeh Farzan and Zachary Kincaid. Verification of parameterized concurrent programs by modular reasoning about data and control. In POPL, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Azadeh Farzan, Zachary Kincaid, and Andreas Podelski. Inductive data flow graphs. In POPL, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Azadeh Farzan, Zachary Kincaid, and Andreas Podelski. Proofs that count. In POPL, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Azadeh Farzan, Zachary Kincaid, and Andreas Podelski. Proof spaces for unbounded parallelism. In POPL, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Azadeh Farzan, Zachary Kincaid, and Andreas Podelski. Proving liveness of parameterized programs. In LICS, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Cormac Flanagan, Stephen N. Freund, and Shaz Qadeer. Threadmodular verification for shared-memory programs. In ESOP, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Cormac Flanagan, Stephen N. Freund, Shaz Qadeer, and Sanjit A. Seshia. Modular verification of multithreaded programs. Theoretical Computer Science, 338(1-3), 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Silvio Ghilardi and Silvio Ranise. Backward reachability of arraybased systems by SMT solving: Termination and invariant synthesis. Logical Methods in Computer Science, 6(4), 2010.Google ScholarGoogle Scholar
  30. Sergey Grebenshchikov, Nuno P. Lopes, Corneliu Popeea, and Andrey Rybalchenko. Synthesizing software verifiers from proof rules. In PLDI, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Ashutosh Gupta, Corneliu Popeea, and Andrey Rybalchenko. Threader: A constraint-based verifier for multi-threaded programs. In CAV, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Arie Gurfinkel, Sharon Shoham, and Yuri Meshman. SMT-based verification of parameterized systems. In FSE, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Thomas A. Henzinger, Ranjit Jhala, and Rupak Majumdar. Race checking by context inference. In PLDI, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar, and Shaz Qadeer. Thread-modular abstraction refinement. In CAV, 2003.Google ScholarGoogle Scholar
  35. Hossein Hojjat, Philipp Rümmer, Pavle Subotic, and Wang Yi. Horn clauses for communicating timed systems. In Workshop on Horn Clauses for Verification and Synthesis, 2014.Google ScholarGoogle ScholarCross RefCross Ref
  36. Joxan Jaffar and Andrew E. Santosa. Recursive abstractions for parameterized systems. In FM, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Cliff B. Jones. Tentative steps toward a development method for interfering programs. Transactions on Programming Languages and Systems, 5(4), 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Alexander Kaiser, Daniel Kroening, and Thomas Wahl. Lost in abstraction: Monotonicity in multi-threaded programs. In CONCUR, 2014.Google ScholarGoogle ScholarCross RefCross Ref
  39. Shuvendu K. Lahiri, Alexander Malkis, and Shaz Qadeer. Abstract threads. In VMCAI, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Leslie Lamport. Proving the correctness of multiprocess programs. Transactions on Software Engineering, 3(2), 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. R. Lipton. The reachability problem is exponential-space hard. Technical Report 62, Department of Computer Science, Yale University, 1976.Google ScholarGoogle Scholar
  42. Alexander Malkis, Andreas Podelski, and Andrey Rybalchenko. Thread-modular verification is Cartesian abstract interpretation. In ICTAC, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Alexander Malkis, Andreas Podelski, and Andrey Rybalchenko. Precise thread-modular verification. In SAS, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. David Monniaux and Laure Gonnord. Cell morphing: From array programs to array-free horn clauses. In SAS, 2016.Google ScholarGoogle Scholar
  45. Kedar S. Namjoshi. Symmetry and completeness in the analysis of parameterized systems. In VMCAI, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Leonor Prensa Nieto. Completeness of the Owicki-Gries system for parameterized parallel programs. In IPDPS, 2001.Google ScholarGoogle Scholar
  47. Susan S. Owicki. Axiomatic proof techniques for parallel programs. PhD thesis, Cornell University, 1975. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Amir Pnueli, Sitvanit Ruah, and Lenore D. Zuck. Automatic deductive verification with invisible invariants. In TACAS, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Hartley Rogers, Jr. Theory of recursive functions and effective computability. MIT Press, 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Alejandro Sánchez and César Sánchez. Parametrized invariance for infinite state processes. Acta Inf., 52(6), 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Alejandro Sánchez, Sriram Sankaranarayanan, César Sánchez, and Bor-Yuh Evan Chang. Invariant generation for parametrized systems using self-reflection. In SAS, 2012.Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Michal Segalov, Tal Lev-Ami, Roman Manevich, Ganesan Ramalingam, and Mooly Sagiv. Abstract transformers for thread correlation analysis. In APLAS, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Natarajan Shankar. Combining theorem proving and model checking through symbolic analysis. In CONCUR, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Thread modularity at many levels: a pearl in compositional verification

              Recommendations

              Comments

              Login options

              Check if you have access through your login credentials or your institution to get full access on this article.

              Sign in

              Full Access

              • Published in

                cover image ACM SIGPLAN Notices
                ACM SIGPLAN Notices  Volume 52, Issue 1
                POPL '17
                January 2017
                901 pages
                ISSN:0362-1340
                EISSN:1558-1160
                DOI:10.1145/3093333
                Issue’s Table of Contents
                • cover image ACM Conferences
                  POPL '17: Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages
                  January 2017
                  901 pages
                  ISBN:9781450346603
                  DOI:10.1145/3009837

                Copyright © 2017 ACM

                Publisher

                Association for Computing Machinery

                New York, NY, United States

                Publication History

                • Published: 1 January 2017

                Check for updates

                Qualifiers

                • research-article

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader
              About Cookies On This Site

              We use cookies to ensure that we give you the best experience on our website.

              Learn more

              Got it!