Abstract

In this paper, we present a new approach to automatically verify multi-threaded programs which are executed by an unbounded number of threads running in parallel.
The starting point for our work is the problem of how we can leverage existing automated verification technology for sequential programs (abstract interpretation, Craig interpolation, constraint solving, etc.) for multi-threaded programs. Suppose that we are given a correctness proof for a trace of a program (or for some other program fragment). We observe that the proof can always be decomposed into a finite set of Hoare triples, and we ask what can be proved from the finite set of Hoare triples using only simple combinatorial inference rules (without access to a theorem prover and without the possibility to infer genuinely new Hoare triples)?
We introduce a proof system where one proves the correctness of a multi-threaded program by showing that for each trace of the program, there exists a correctness proof in the space of proofs that are derivable from a finite set of axioms using simple combinatorial inference rules. This proof system is complete with respect to the classical proof method of establishing an inductive invariant (which uses thread quantification and control predicates). Moreover, it is possible to algorithmically check whether a given set of axioms is sufficient to prove the correctness of a multi-threaded program, using ideas from well-structured transition systems.
Supplemental Material
- Parosh A. Abdulla, Yu-Feng Chen, Giorgio Delzanno, Frédéric Haziza, Chih-Duo Hong, and Ahmed Rezine. Constrained monotonic abstraction: a CEGAR for parameterized verification. In CONCUR, pages 86--101, 2010. Google Scholar
Digital Library
- Parosh A. Abdulla, Karlisv Cerans, Bengt Jonsson, and Yih-Kuen Tsay. General decidability theorems for infinite-state systems. In LICS, pages 313--321, 1996. Google Scholar
Digital Library
- Francesco Alberti, Roberto Bruttomesso, Silvio Ghilardi, Silvio Ranise, and Natasha Sharygina. Lazy abstraction with interpolants for arrays. In LPAR, pages 46--61, 2012. Google Scholar
Digital Library
- Edward A. Ashcroft. Proving assertions about parallel programs. J. Comput. Syst. Sci., 10(1):110--135, February 1975. Google Scholar
Digital Library
- Josh Berdine, Tal Lev-Ami, Roman Manevich, G. Ramalingam, and Shmuel Sagiv. Thread quantification for concurrent shape analysis. In CAV, pages 399--413, 2008. Google Scholar
Digital Library
- Dirk Beyer, Thomas A. Henzinger, Rupak Majumdar, and Andrey Rybalchenko. Path invariants. In PLDI, pages 300--309, 2007. Google Scholar
Digital Library
- Ahmed Bouajjani, Bengt Jonsson, Marcus Nilsson, and Tayssir Touili. Regular model checking. In CAV, pages 403--418, 2000. Google Scholar
Digital Library
- Janusz A. Brzozowski and Ernst L. Leiss. On equations for regular languages, finite automata, and sequential networks. Theoretical Computer Science, 10(1):19--35, 1980.Google Scholar
Cross Ref
- Ashok K. Chandra, Dexter C. Kozen, and Larry J. Stockmeyer. Alternation. J. ACM, 28(1):114--133, January 1981. Google Scholar
Digital Library
- Jürgen Christ and Jochen Hoenicke. Extending proof tree preserving interpolation to sequences and trees. In Workshop on SMT Solving, 2013.Google Scholar
- Stéphane Demri and Ranko Lazić. LTL with the freeze quantifier and register automata. ACM Trans. Comput. Logic, 10(3):16:1--16:30, April 2009. Google Scholar
Digital Library
- 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):25--44, 2012. Google Scholar
Digital Library
- Azadeh Farzan and Zachary Kincaid. Verification of parameterized concurrent programs by modular reasoning about data and control. In POPL, pages 297--308, 2012. Google Scholar
Digital Library
- Azadeh Farzan, Zachary Kincaid, and Andreas Podelski. Inductive data flow graphs. In POPL, pages 129--142, 2013. Google Scholar
Digital Library
- Azadeh Farzan, Zachary Kincaid, and Andreas Podelski. Proofs that count. In POPL, pages 151--164, 2014. Google Scholar
Digital Library
- Diego Figueira. Alternating register automata on finite words and trees. Logical Methods in Computer Science, 8(1), 2012.Google Scholar
- Alain Finkel. A generalization of the procedure of Karp and Miller to well structured transition systems. In ICALP, pages 499--508, 1987. Google Scholar
Digital Library
- Alain Finkel and Philippe Schnoebelen. Well-structured transition systems everywhere! Theoretical Computer Science, 256(1):63--92, 2001. Google Scholar
Digital Library
- Cormac Flanagan, Stephen N. Freund, and Shaz Qadeer. Thread-modular verification for shared-memory programs. In ESOP, pages 262--277, 2002. Google Scholar
Digital Library
- Silvio. Ghilardi, Enrica Nicolini, Silvio Ranise, and Daniele Zucchelli. Towards SMT model checking of array-based systems. In IJCAR, pages 67--82, 2008. Google Scholar
Digital Library
- Matthias Heizmann, Jochen Hoenicke, and Andreas Podelski. Refinement of trace abstraction. In SAS, pages 69--85, 2009. Google Scholar
Digital Library
- Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar, and Kenneth L. McMillan. Abstractions from proofs. In POPL, pages 232--244, 2004. Google Scholar
Digital Library
- Joxan Jaffar and Andrew E. Santosa. Recursive abstractions for parameterized systems. In FM, pages 72--88, 2009. Google Scholar
Digital Library
- Alexander Kaiser, Daniel Kroening, and Thomas Wahl. Dynamic cutoff detection in parameterized concurrent programs. In CAV, pages 645--659, 2010. Google Scholar
Digital Library
- Alexander Kaiser, Daniel Kroening, and Thomas Wahl. Lost in abstraction: Monotonicity in multi-threaded programs. In CONCUR, pages 141--155, 2014.Google Scholar
Cross Ref
- Michael Kaminski and Nissim Francez. Finite-memory automata. Theor. Comput. Sci., 134(2):329--363, November 1994. Google Scholar
Digital Library
- Salvatore La Torre, Parthasarathy Madhusudan, and Gennaro Parlato. Model-checking parameterized concurrent programs using linear interfaces. In CAV, pages 629--644, 2010. Google Scholar
Digital Library
- Shuvendu K. Lahiri and Randal E. Bryant. Predicate abstraction with indexed predicates. ACM Trans. Comput. Logic, 9(1), December 2007. Google Scholar
Digital Library
- Alexander Malkis. Cartesian abstraction and verification of multithreaded programs. PhD thesis, University of Freiburg, 2010.Google Scholar
- Roland Meyer. On boundedness in depth in the pi-calculus. In IFIP TCS, pages 477--489, 2008.Google Scholar
- Kedar S. Namjoshi. Symmetry and completeness in the analysis of parameterized systems. In VMCAI, pages 299--313, 2007. Google Scholar
Digital Library
- Frank Neven, Thomas Schwentick, and Victor Vianu. Finite state machines for strings over infinite alphabets. ACM Trans. Comput. Logic, 5(3):403--435, July 2004. Google Scholar
Digital Library
- Amir Pnueli, Sitvanit Ruah, and Lenore D. Zuck. Automatic deductive verification with invisible invariants. In TACAS, pages 82--97, 2001. Google Scholar
Digital Library
- Thomas W. Reps, Susan Horwitz, and Shmuel Sagiv. Precise interprocedural dataflow analysis via graph reachability. In POPL, pages 49--61, 1995. Google Scholar
Digital Library
- Willem-Paul de Roever. Concurrency verification: introduction to compositional and noncompositional methods. Cambridge University press, Cambridge, 2001. Google Scholar
Digital Library
- Alejandro Sanchez, Sriram Sankaranarayanan, César Sánchez, and Bor-Yuh Evan Chang. Invariant generation for parametrized systems using self-reflection. In SAS, pages 146--163. Springer, 2012. Google Scholar
Digital Library
- Michal Segalov, Tal Lev-Ami, Roman Manevich, Ramalingam Ganesan, and Mooly Sagiv. Abstract transformers for thread correlation analysis. In APLAS, pages 30--46, 2009. Google Scholar
Digital Library
- Nishant Sinha and Chao Wang. On interference abstractions. In POPL, pages 423--434, 2011. Google Scholar
Digital Library
- Thomas Wies, Damien Zufferey, and Thomas A. Henzinger. Forward analysis of depth-bounded processes. In FOSSACS, pages 94--108, 2010. Google Scholar
Digital Library
Index Terms
Proof Spaces for Unbounded Parallelism
Recommendations
Inductive data flow graphs
POPL '13The correctness of a sequential program can be shown by the annotation of its control flow graph with inductive assertions. We propose inductive data flow graphs, data flow graphs with incorporated inductive assertions, as the basis of an approach to ...
Reducing liveness to safety in first-order logic
We develop a new technique for verifying temporal properties of infinite-state (distributed) systems. The main idea is to reduce the temporal verification problem to the problem of verifying the safety of infinite-state systems expressed in first-order ...
Proving Liveness of Parameterized Programs
LICS '16: Proceedings of the 31st Annual ACM/IEEE Symposium on Logic in Computer ScienceCorrectness of multi-threaded programs typically requires that they satisfy liveness properties. For example, a program may require that no thread is starved of a shared resource, or that all threads eventually agree on a single value. This paper ...







Comments