skip to main content
research-article

Inductive data flow graphs

Published:23 January 2013Publication History
Skip Abstract Section

Abstract

The 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 verifying concurrent programs. An inductive data flow graph accounts for a set of dependencies between program actions in interleaved thread executions, and therefore stands as a representation for the set of concurrent program traces which give rise to these dependencies. The approach first constructs an inductive data flow graph and then checks whether all program traces are represented. The size of the inductive data flow graph is polynomial in the number of data dependencies (in a sense that can be made formal); it does not grow exponentially in the number of threads unless the data dependencies do. The approach shifts the burden of the exponential explosion towards the check whether all program traces are represented, i.e., to a combinatorial problem (over finite graphs).

Skip Supplemental Material Section

Supplemental Material

r2d1_talk4.mp4

References

  1. G. R. Andrews. Concurrent programming - principles and practice. Benjamin/Cummings, 1991. ISBN 978-0--8053-0086--4. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. K. R. Apt, F. S. de Boer, and E. R. Olderog. Verification of Sequential and Concurrent Programs. Springer-Verlag, 2009. ISBN 978--1--84882--744--8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. J. Berdine, T. Lev-Ami, R. Manevich, G. Ramalingam, and M. Sagiv. Thread quantification for concurrent shape analysis. In CAV, volume 5123 of LNCS, pages 399--413. Springer Berlin / Heidelberg, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. B. Blanchet, P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné, D. Monniaux, and X. Rival. A static analyzer for large safety-critical software. In PLDI, pages 196--207, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. F. Bourdoncle. Abstract interpretation by dynamic partitioning. Journal of Functional Programming, 2 (04): 407--435, 1992.Google ScholarGoogle ScholarCross RefCross Ref
  6. J. Brzozowski and E. Leiss. On equations for regular languages, finite automata, and sequential networks. Theoretical Computer Science, 10 (1): 19 -- 35, 1980.Google ScholarGoogle ScholarCross RefCross Ref
  7. A. K. Chandra, D. C. Kozen, and L. J. Stockmeyer. Alternation. J. ACM, 28 (1): 114--133, Jan. 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. E. M. Clarke and E. A. Emerson. Design and synthesis of synchronization skeletons using branching-time temporal logic. In Logic of Programs, pages 52--71, 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. R. Cousot. Fondements des méthodes de preuve d'invariance et de fatalité de programmes parallèles. les-Nancy, 1985.Google ScholarGoogle Scholar
  11. A. F. Donaldson, A. Kaiser, D. Kroening, and T. Wahl. Symmetry-aware predicate abstraction for shared-variable concurrent programs. In CAV, pages 356--371, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. K. Drager, A. Kupriyanov, B. Finkbeiner, and H. Wehrheim. Slab: a certifying model checker for infinite-state concurrent systems. In TACAS, pages 271--274, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. A. Farzan and Z. Kincaid. Verification of parameterized concurrent programs by modular reasoning about data and control. In POPL, pages 297--308, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. J. Ferrante, K. J. Ottenstein, and J. D. Warren. The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst., 9 (3): 319--349, 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. C. Flanagan and S. Qadeer. Thread-modular model checking. In SPIN, pages 213--224, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. A. Griggio. A Practical Approach to Satisfiability Modulo Linear Integer Arithmetic. JSAT, 8: 1--27, January 2012.Google ScholarGoogle Scholar
  17. A. Gupta, C. Popeea, and A. Rybalchenko. Predicate abstraction and refinement for verifying multi-threaded programs. In POPL, pages 331--344, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. M. Heizmann, J. Hoenicke, and A. Podelski. Refinement of trace abstraction. In SAS, pages 69--85, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. M. Heizmann, J. Hoenicke, and A. Podelski. Nested interpolants. In POPL, pages 471--482, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. T. A. Henzinger, R. Jhala, R. Majumdar, and S. Qadeer. Thread-modular abstraction refinement. In CAV, pages 262--274, 2003.Google ScholarGoogle Scholar
  21. R. Johnson and K. Pingali. Dependence-based program analysis. In PLDI, pages 78--89, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. V. Kahlon, S. Sankaranarayanan, and A. Gupta. Semantic reduction of thread interleavings in concurrent programs. In TACAS, pages 124--138, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. D. J. Kuck, R. H. Kuhn, D. A. Padua, B. Leasure, and M. Wolfe. Dependence graphs and compiler optimizations. In POPL, pages 207--218, 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. L. Lamport. A new solution of Dijkstra's concurrent programming problem. Commun. ACM, 17 (8): 453--455, 1974. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. A. Malkis. Cartesian abstraction and verification of multithreaded programs. PhD thesis, University of Freiburg, 2010.Google ScholarGoogle Scholar
  26. L. Mauborgne and X. Rival. Trace partitioning in abstract interpretation based static analyzers. In ESOP, page 5--20, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. A. Miné. Static analysis of run-time errors in embedded critical parallel C programs. In ESOP, pages 398--418, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. H. Oh, K. Heo, W. Lee, W. Lee, and K. Yi. Design and implementation of sparse global analyses for C-like languages. In PLDI, pages 229--238, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. S. Owicki and D. Gries. Verifying properties of parallel programs: an axiomatic approach. Commun. ACM, 19: 279--285, May 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. A. Venet. Abstract cofibered domains: application to the alias analysis of untyped programs. In SAS, pages 366--382, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. D. Weise, R. F. Crew, M. Ernst, and B. Steensgaard. Value dependence graphs: representation without taxation. In POPL, pages 297--310, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Inductive data flow graphs

              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 48, Issue 1
                POPL '13
                January 2013
                561 pages
                ISSN:0362-1340
                EISSN:1558-1160
                DOI:10.1145/2480359
                Issue’s Table of Contents
                • cover image ACM Conferences
                  POPL '13: Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
                  January 2013
                  586 pages
                  ISBN:9781450318327
                  DOI:10.1145/2429069

                Copyright © 2013 ACM

                Publisher

                Association for Computing Machinery

                New York, NY, United States

                Publication History

                • Published: 23 January 2013

                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!