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.
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- Azadeh Farzan. 2023. Commutativity in Automated Verification. In LICS. 1–7. https://doi.org/10.1109/LICS56636.2023.10175734 Google ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- Blaise Genest, Dietrich Kuske, and Anca Muscholl. 2007. On Communicating Automata with Bounded Channels. Fundam. Inform., 80, 1-3 (2007), 147–167. Google Scholar
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- K. Rustan M. Leino. 2008. This is Boogie 2. June, https://www.microsoft.com/en-us/research/publication/this-is-boogie-2-2/ Google Scholar
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarCross Ref
- 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 ScholarCross Ref
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 Scholar
Index Terms
- Commutativity Simplifies Proofs of Parameterized Programs
Recommendations
Verification of parameterized concurrent programs by modular reasoning about data and control
POPL '12: Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesIn this paper, we consider the problem of verifying thread-state properties of multithreaded programs in which the number of active threads cannot be statically bounded. Our approach is based on decomposing the task into two modules, where one reasons ...
Stratified Commutativity in Verification Algorithms for Concurrent Programs
The importance of exploiting commutativity relations in verification algorithms for concurrent programs is well-known. They can help simplify the proof and improve the time and space efficiency. This paper studies commutativity relations as a first-...
Holographic Proofs and Derandomization
We derive a stronger consequence of $\mathsf{EXP}$ (deterministic exponential time) having polynomial-size circuits than was known previously, namely that for each language $L \in \mathsf{P}$ (polynomial time), and for each efficiently decidable error-...
Comments