skip to main content
research-article
Open Access
Artifacts Available / v1.1

Commutativity Simplifies Proofs of Parameterized Programs

Published:05 January 2024Publication History
Skip Abstract Section

Abstract

Commutativity has proven to be a powerful tool in reasoning about concurrent programs. Recent work has shown that a commutativity-based reduction of a program may admit simpler proofs than the program itself. The framework of lexicographical program reductions was introduced to formalize a broad class of reductions which accommodate sequential (thread-local) reasoning as well as synchronous programs. Approaches based on this framework, however, were fundamentally limited to program models with a fixed/bounded number of threads. In this paper, we show that it is possible to define an effective parametric family of program reductions that can be used to find simple proofs for parameterized programs, i.e., for programs with an unbounded number of threads. We show that reductions are indeed useful for the simplification of proofs for parameterized programs, in a sense that can be made precise: A reduction of a parameterized program may admit a proof which uses fewer or less sophisticated ghost variables. The reduction may therefore be within reach of an automated verification technique, even when the original parameterized program is not. As our first technical contribution, we introduce a notion of reductions for parameterized programs such that the reduction R of a parameterized program P is again a parameterized program (the thread template of R is obtained by source-to-source transformation of the thread template of P). Consequently, existing techniques for the verification of parameterized programs can be directly applied to R instead of P. Our second technical contribution is that we define an appropriate family of pairwise preference orders which can be effectively used as a parameter to produce different lexicographical reductions. To determine whether this theoretical foundation amounts to a usable solution in practice, we have implemented the approach, based on a recently proposed framework for parameterized program verification. The results of our preliminary experiments on a representative set of examples are encouraging.

References

  1. Parosh Aziz Abdulla, Stavros Aronis, Bengt Jonsson, and Konstantinos Sagonas. 2014. Optimal dynamic partial order reduction. In The 41st Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL ’14, San Diego, CA, USA, January 20-21, 2014, Suresh Jagannathan and Peter Sewell (Eds.). ACM, 373–384. https://doi.org/10.1145/2535838.2535845 Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Tamarah Arons, Amir Pnueli, Sitvanit Ruah, Jiazhao Xu, and Lenore D. Zuck. 2001. Parameterized Verification with Automatically Computed Inductive Assertions. In Computer Aided Verification, 13th International Conference, CAV 2001, Paris, France, July 18-22, 2001, Proceedings, Gérard Berry, Hubert Comon, and Alain Finkel (Eds.) (Lecture Notes in Computer Science, Vol. 2102). Springer, 221–234. https://doi.org/10.1007/3-540-44585-4_19 Google ScholarGoogle ScholarCross RefCross Ref
  3. Dirk Beyer, Stefan Löwe, and Philipp Wendler. 2019. Reliable benchmarking: requirements and solutions. Int. J. Softw. Tools Technol. Transf., 21, 1 (2019), 1–29. https://doi.org/10.1007/s10009-017-0469-y Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Duc-Hiep Chu and Joxan Jaffar. 2014. A Framework to Synergize Partial Order Reduction with State Interpolation. In Hardware and Software: Verification and Testing - 10th International Haifa Verification Conference, HVC 2014, Haifa, Israel, November 18-20, 2014. Proceedings, Eran Yahav (Ed.) (Lecture Notes in Computer Science, Vol. 8855). Springer, 171–187. https://doi.org/10.1007/978-3-319-13338-6_14 Google ScholarGoogle ScholarCross RefCross Ref
  5. Edmund M. Clarke, E. Allen Emerson, Somesh Jha, and A. Prasad Sistla. 1998. Symmetry Reductions in Model Checking. In Computer Aided Verification, 10th International Conference, CAV ’98, Vancouver, BC, Canada, June 28 - July 2, 1998, Proceedings, Alan J. Hu and Moshe Y. Vardi (Eds.) (Lecture Notes in Computer Science, Vol. 1427). Springer, 147–158. https://doi.org/10.1007/BFb0028741 Google ScholarGoogle ScholarCross RefCross Ref
  6. Tayfun Elmas, Shaz Qadeer, and Serdar Tasiran. 2009. A calculus of atomic actions. In Proceedings of the 36th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2009, Savannah, GA, USA, January 21-23, 2009, Zhong Shao and Benjamin C. Pierce (Eds.). ACM, 2–15. https://doi.org/10.1145/1480881.1480885 Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Michael Emmi, Rupak Majumdar, and Roman Manevich. 2010. Parameterized verification of transactional memories. In Proceedings of the 2010 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2010, Toronto, Ontario, Canada, June 5-10, 2010, Benjamin G. Zorn and Alexander Aiken (Eds.). ACM, 134–145. https://doi.org/10.1145/1806596.1806613 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Azadeh Farzan. 2023. Commutativity in Automated Verification. In LICS. 1–7. https://doi.org/10.1109/LICS56636.2023.10175734 Google ScholarGoogle ScholarCross RefCross Ref
  9. Azadeh Farzan, Zachary Kincaid, and Andreas Podelski. 2014. Proofs that count. In The 41st Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL ’14, San Diego, CA, USA, January 20-21, 2014, Suresh Jagannathan and Peter Sewell (Eds.). ACM, 151–164. https://doi.org/10.1145/2535838.2535885 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Azadeh Farzan, Zachary Kincaid, and Andreas Podelski. 2015. Proof Spaces for Unbounded Parallelism. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2015, Mumbai, India, January 15-17, 2015, Sriram K. Rajamani and David Walker (Eds.). ACM, 407–420. https://doi.org/10.1145/2676726.2677012 Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Azadeh Farzan, Dominik Klumpp, and Andreas Podelski. 2022. Sound sequentialization for concurrent program verification. In PLDI ’22: 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation, San Diego, CA, USA, June 13 - 17, 2022, Ranjit Jhala and Isil Dillig (Eds.). ACM, 506–521. https://doi.org/10.1145/3519939.3523727 Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Azadeh Farzan, Dominik Klumpp, and Andreas Podelski. 2023. Benchmarks for POPL’24 Paper "Commutativity Simplifies Proofs of Parameterized Programs". https://doi.org/10.5281/zenodo.10119773 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Azadeh Farzan, Dominik Klumpp, and Andreas Podelski. 2023. Commutativity Simplifies Proofs of Parameterized Programs (Extended Version). https://dominik-klumpp.net/publications/popl24/extended.pdf Google ScholarGoogle Scholar
  14. Azadeh Farzan and Anthony Vandikas. 2019. Automated Hypersafety Verification. In Computer Aided Verification - 31st International Conference, CAV 2019, New York City, NY, USA, July 15-18, 2019, Proceedings, Part I, Isil Dillig and Serdar Tasiran (Eds.) (Lecture Notes in Computer Science, Vol. 11561). Springer, 200–218. https://doi.org/10.1007/978-3-030-25540-4_11 Google ScholarGoogle ScholarCross RefCross Ref
  15. Azadeh Farzan and Anthony Vandikas. 2020. Reductions for safety proofs. Proc. ACM Program. Lang., 4, POPL (2020), 13:1–13:28. https://doi.org/10.1145/3371081 Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Cormac Flanagan and Stephen N. Freund. 2020. The Anchor verifier for blocking and non-blocking concurrent software. Proc. ACM Program. Lang., 4, OOPSLA (2020), 156:1–156:29. https://doi.org/10.1145/3428224 Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Cormac Flanagan and Patrice Godefroid. 2005. Dynamic partial-order reduction for model checking software. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2005, Long Beach, California, USA, January 12-14, 2005, Jens Palsberg and Martín Abadi (Eds.). ACM, 110–121. https://doi.org/10.1145/1040305.1040315 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Blaise Genest, Dietrich Kuske, and Anca Muscholl. 2007. On Communicating Automata with Bounded Channels. Fundam. Inform., 80, 1-3 (2007), 147–167. Google ScholarGoogle Scholar
  19. Patrice Godefroid. 1996. Partial-Order Methods for the Verification of Concurrent Systems - An Approach to the State-Explosion Problem (Lecture Notes in Computer Science, Vol. 1032). Springer. isbn:3-540-60761-7 https://doi.org/10.1007/3-540-60761-7 Google ScholarGoogle ScholarCross RefCross Ref
  20. Sergey Grebenshchikov, Nuno P. Lopes, Corneliu Popeea, and Andrey Rybalchenko. 2012. Synthesizing software verifiers from proof rules. In ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’12, Beijing, China - June 11 - 16, 2012, Jan Vitek, Haibo Lin, and Frank Tip (Eds.). ACM, 405–416. https://doi.org/10.1145/2254064.2254112 Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Arie Gurfinkel, Sharon Shoham, and Yuri Meshman. 2016. SMT-based verification of parameterized systems. In Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2016, Seattle, WA, USA, November 13-18, 2016, Thomas Zimmermann, Jane Cleland-Huang, and Zhendong Su (Eds.). ACM, 338–348. https://doi.org/10.1145/2950290.2950330 Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Jochen Hoenicke, Rupak Majumdar, and Andreas Podelski. 2017. Thread modularity at many levels: a pearl in compositional verification. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, POPL 2017, Paris, France, January 18-20, 2017, Giuseppe Castagna and Andrew D. Gordon (Eds.). ACM, 473–485. https://doi.org/10.1145/3009837.3009893 Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Hossein Hojjat, Philipp Rümmer, Pavle Subotic, and Wang Yi. 2014. Horn Clauses for Communicating Timed Systems. In Proceedings First Workshop on Horn Clauses for Verification and Synthesis, HCVS 2014, Vienna, Austria, 17 July 2014, Nikolaj S. Bjørner, Fabio Fioravanti, Andrey Rybalchenko, and Valerio Senni (Eds.) (EPTCS, Vol. 169). 39–52. https://doi.org/10.4204/EPTCS.169.6 Google ScholarGoogle ScholarCross RefCross Ref
  24. Vineet Kahlon, Chao Wang, and Aarti Gupta. 2009. Monotonic Partial Order Reduction: An Optimal Symbolic Partial Order Reduction Technique. In Computer Aided Verification, 21st International Conference, CAV 2009, Grenoble, France, June 26 - July 2, 2009. Proceedings, Ahmed Bouajjani and Oded Maler (Eds.) (Lecture Notes in Computer Science, Vol. 5643). Springer, 398–413. https://doi.org/10.1007/978-3-642-02658-4_31 Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Alexander Kaiser, Daniel Kroening, and Thomas Wahl. 2014. Lost in Abstraction: Monotonicity in Multi-threaded Programs. In CONCUR 2014 - Concurrency Theory - 25th International Conference, CONCUR 2014, Rome, Italy, September 2-5, 2014. Proceedings, Paolo Baldan and Daniele Gorla (Eds.) (Lecture Notes in Computer Science, Vol. 8704). Springer, 141–155. https://doi.org/10.1007/978-3-662-44584-6_11 Google ScholarGoogle ScholarCross RefCross Ref
  26. Bernhard Kragl, Constantin Enea, Thomas A. Henzinger, Suha Orhun Mutluergil, and Shaz Qadeer. 2020. Inductive sequentialization of asynchronous programs. In Proceedings of the 41st ACM SIGPLAN International Conference on Programming Language Design and Implementation, PLDI 2020, London, UK, June 15-20, 2020, Alastair F. Donaldson and Emina Torlak (Eds.). ACM, 227–242. https://doi.org/10.1145/3385412.3385980 Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Bernhard Kragl and Shaz Qadeer. 2018. Layered Concurrent Programs. In Computer Aided Verification - 30th International Conference, CAV 2018, Held as Part of the Federated Logic Conference, FloC 2018, Oxford, UK, July 14-17, 2018, Proceedings, Part I, Hana Chockler and Georg Weissenbacher (Eds.) (Lecture Notes in Computer Science, Vol. 10981). Springer, 79–102. https://doi.org/10.1007/978-3-319-96145-3_5 Google ScholarGoogle ScholarCross RefCross Ref
  28. K. Rustan M. Leino. 2008. This is Boogie 2. June, https://www.microsoft.com/en-us/research/publication/this-is-boogie-2-2/ Google ScholarGoogle Scholar
  29. Richard J. Lipton. 1975. Reduction: A Method of Proving Properties of Parallel Programs. Commun. ACM, 18, 12 (1975), 717–721. https://doi.org/10.1145/361227.361234 Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. David Monniaux and Laure Gonnord. 2016. Cell Morphing: From Array Programs to Array-Free Horn Clauses. In Static Analysis - 23rd International Symposium, SAS 2016, Edinburgh, UK, September 8-10, 2016, Proceedings, Xavier Rival (Ed.) (Lecture Notes in Computer Science, Vol. 9837). Springer, 361–382. https://doi.org/10.1007/978-3-662-53413-7_18 Google ScholarGoogle ScholarCross RefCross Ref
  31. Leonor Prensa Nieto. 2001. Completeness of the Owicki-Gries System for Parameterized Parallel Programs. In Proceedings of the 15th International Parallel & Distributed Processing Symposium (IPDPS-01), San Francisco, CA, USA, April 23-27, 2001. IEEE Computer Society, 150. https://doi.org/10.1109/IPDPS.2001.925138 Google ScholarGoogle ScholarCross RefCross Ref
  32. Amir Pnueli, Sitvanit Ruah, and Lenore D. Zuck. 2001. Automatic Deductive Verification with Invisible Invariants. In Tools and Algorithms for the Construction and Analysis of Systems, 7th International Conference, TACAS 2001 Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2001 Genova, Italy, April 2-6, 2001, Proceedings, Tiziana Margaria and Wang Yi (Eds.) (Lecture Notes in Computer Science, Vol. 2031). Springer, 82–97. https://doi.org/10.1007/3-540-45319-9_7 Google ScholarGoogle ScholarCross RefCross Ref
  33. Corneliu Popeea, Andrey Rybalchenko, and Andreas Wilhelm. 2014. Reduction for compositional verification of multi-threaded programs. In Formal Methods in Computer-Aided Design, FMCAD 2014, Lausanne, Switzerland, October 21-24, 2014. IEEE, 187–194. https://doi.org/10.1109/FMCAD.2014.6987612 Google ScholarGoogle ScholarCross RefCross Ref
  34. Klaus von Gleissenthall, Rami Gökhan Kici, Alexander Bakst, Deian Stefan, and Ranjit Jhala. 2019. Pretend synchrony: synchronous verification of asynchronous distributed programs. Proc. ACM Program. Lang., 3, POPL (2019), 59:1–59:30. https://doi.org/10.1145/3290372 Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Björn Wachter, Daniel Kroening, and Joël Ouaknine. 2013. Verifying multi-threaded software with Impact. In Formal Methods in Computer-Aided Design, FMCAD 2013, Portland, OR, USA, October 20-23, 2013. IEEE, 210–217. http://ieeexplore.ieee.org/document/6679412/ Google ScholarGoogle Scholar

Index Terms

  1. Commutativity Simplifies Proofs of Parameterized Programs

        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

        • Article Metrics

          • Downloads (Last 12 months)71
          • Downloads (Last 6 weeks)19

          Other Metrics

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader