Shape Analysis by Graph Decomposition
2007, Lecture Notes in Computer Science
https://doi.org/10.1007/978-3-540-71209-1_3Abstract
Programs commonly maintain multiple linked data structures. Correlations between multiple data structures may often be nonexistent or irrelevant to verifying that the program satisfies certain safety properties or invariants. In this paper, we show how this independence between different (singly-linked) data structures can be utilized to perform shape analysis and verification more efficiently. We present a new abstraction based on decomposing graphs into sets of subgraphs, and show that, in practice, this new abstraction leads to very little loss of precision, while yielding substantial improvements to efficiency.
References (18)
- D. R. Chase, M. Wegman, and F. Zadeck. Analysis of pointers and structures. In Proc. Conf. on Prog. Lang. Design and Impl., New York, NY, 1990. ACM Press.
- P. Cousot and R. Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Conference Record of the Fourth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Los Angeles, California, 1977. ACM Press, New York, NY.
- D. Distefano, P. W. O'Hearn, and H. Yang. A local shape analysis based on separation logic. In In Proc. 13th Intern. Conf. on Tools and Algorithms for the Construction and Analysis of Systems (TACAS'06), 2006.
- M. R. Garey and D. S. Johnson. Computers and Intractability, A Guide to the Theory of NP-Completeness. W. H. Freeman and Company, New York, 1979.
- A. Gotsman, J. Berdine, and B. Cook. Interprocedural shape analysis with sepa- rated heap abstractions. In Proceedings of the 13th International Static Analysis Symposium (SAS'06), 2006.
- B. Hackett and R. Rugina. Region-based shape analysis with tracked locations. In Proc. Symp. on Principles of Prog. Languages, 2005.
- N. D. Jones and S. S. Muchnick. Complexity of flow analysis, inductive assertion synthesis, and a language due to dijkstra. In Program Flow Analysis: Theory and Applications, chapter 12. Prentice-Hall, Englewood Cliffs, NJ, 1981.
- N. D. Jones and S. S. Muchnick. Flow analysis and optimization of Lisp-like structures. In S. S. Muchnick and N. D. Jones, editors, Program Flow Analysis: Theory and Applications, chapter 4. Prentice-Hall, Englewood Cliffs, NJ, 1981.
- T. Lev-Ami, N. Immerman, and M. Sagiv. Abstraction for shape analysis with fast and precise transformers. In CAV, 2006.
- T. Lev-Ami and M. Sagiv. TVLA: A system for implementing static analyses. In Proc. Static Analysis Symp., 2000.
- R. Manevich, J. Berdine, B. Cook, G. Ramalingam, and M. Sagiv. Shape analysis by graph decomposition. 2006. Full version.
- R. Manevich, M. Sagiv, G. Ramalingam, and J. Field. Partially disjunctive heap abstraction. In Proceedings of the 11th International Symposium, SAS 2004, Lec- ture Notes in Computer Science. Springer, August 2004.
- R. Manevich, E. Yahav, G. Ramalingam, and M. Sagiv. Predicate abstraction and canonical abstraction for singly-linked lists. In Proceedings of the 6th International Conference on Verification, Model Checking and Abstract Interpretation, VMCAI 2005. Springer, January 2005.
- N. Rinetzky, J. Bauer, T. Reps, M. Sagiv, and R. Wilhelm. A semantics for procedure local heaps and its abstractions. In 32nd Annual ACM SIGPLAN- SIGACT Symposium on Principles of Programming Languages (POPL'05), 2005.
- N. Rinetzky, M. Sagiv, and E. Yahav. Interprocedural shape analysis for cutpoint- free programs. In 12th International Static Analysis Symposium (SAS), 2005.
- M. Sagiv, T. Reps, and R. Wilhelm. Solving shape-analysis problems in languages with destructive updating. ACM Transactions on Programming Languages and Systems, 20(1), January 1998.
- M. Sagiv, T. Reps, and R. Wilhelm. Parametric shape analysis via 3-valued logic. ACM Transactions on Programming Languages and Systems, 2002.
- E. Yahav and G. Ramalingam. Verifying safety properties using separation and heterogeneous abstractions. In Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation, 2004.