Abstract
Developer-supplied data structure specifications are important to shape analyses, as they tell the analysis what information should be tracked in order to obtain the desired shape invariants. We observe that data structure checking code (eg, used in testing or dynamic analysis) provides shape information that can also be used in static analysis. In this paper, we propose a lightweight, automatic shape analysis based on these developer-supplied structural invariant checkers.
References (21)
- Gilad Arnold. Specialized 3-valued logic shape analysis using structure- based refinement and loose embedding. In Static Analysis Symposium (SAS), pages 204-220, 2006.
- BCC + 07] Josh Berdine, Cristiano Calcagno, Byron Cook, Dino Distefano, Peter W. O'Hearn, Thomas Wies, and Hongseok Yang. Shape analysis for composite data structures. In Conference on Computer-Aided Verification (CAV), 2007.
- Patrick Cousot and Radhia Cousot. Abstract interpretation: A unified lat- tice model for static analysis of programs by construction or approxima- tion of fixpoints. In Symposium on Principles of Programming Languages (POPL), pages 238-252, 1977.
- Sigmund Cherem and Radu Rugina. Maintaining doubly-linked list invari- ants in shape analysis with local reasoning. In Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI), 2007.
- Dino Distefano, Peter W. O'Hearn, and Hongseok Yang. A local shape analysis based on separation logic. In Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS), pages 287-302, 2006.
- Brian Hackett and Radu Rugina. Region-based shape analysis with tracked locations. In Symposium on Principles of Programming Languages (POPL), pages 310-323, 2005.
- Tal Lev-Ami, Thomas W. Reps, Shmuel Sagiv, and Reinhard Wilhelm. Putting static analysis to work for verification: A case study. In Interna- tional Symposium on Software Testing and Analysis (ISSTA), pages 26-38, 2000.
- Alexey Loginov, Thomas W. Reps, and Mooly Sagiv. Automated veri- fication of the Deutsch-Schorr-Waite tree-traversal algorithm. In Static Analysis Symposium (SAS), pages 261-279, 2006.
- Oukseh Lee, Hongseok Yang, and Kwangkeun Yi. Automatic verification of pointer programs using grammar-based shape analysis. In European Symposium on Programming (ESOP), pages 124-140, 2005.
- Scott McPeak and George C. Necula. Data structure specifications via local equality axioms. In Conference on Computer-Aided Verification (CAV), pages 476-490, 2005.
- Stephen Magill, Aleksandar Nanevski, Edmund Clarke, and Peter Lee. Inferring invariants in separation logic for imperative list-processing pro- grams. In Workshop on Semantics, Program Analysis, and Computing Environments for Memory Management (SPACE), 2006.
- Laurent Mauborgne and Xavier Rival. Trace partitioning in abstract inter- pretation based static analyzers. In European Symposium on Programming (ESOP), pages 5-20, 2005.
- Anders Møller and Michael I. Schwartzbach. The pointer assertion logic engine. In Conference on Programming Language Design and Implemen- tation (PLDI), pages 221-231, 2001.
- Roman Manevich, Shmuel Sagiv, Ganesan Ramalingam, and John Field. Partially disjunctive heap abstraction. In Static Analysis Symposium (SAS), pages 265-279, 2004.
- George C. Necula, Scott McPeak, Shree Prakash Rahul, and Westley Weimer. CIL: Intermediate language and tools for analysis and trans- formation of C programs. In Conference on Compiler Construction (CC), pages 213-228, 2002.
- Frances Perry, Limin Jia, and David Walker. Expressing heap-shape con- tracts in linear logic. In Conference on Generative Programming and Com- ponent Engineering (GPCE), pages 101-110, 2006.
- William Pugh. Skip lists: A probabilistic alternative to balanced trees. Commun. ACM, 33(6):668-676, 1990.
- John C. Reynolds. Separation logic: A logic for shared mutable data structures. In Symposium on Logic in Computer Science (LICS), pages 55-74, 2002.
- Shmuel Sagiv, Thomas W. Reps, and Reinhard Wilhelm. Parametric shape analysis via 3-valued logic. ACM Trans. Program. Lang. Syst., 24(3):217- 298, 2002.
- WKL + 06] Thomas Wies, Viktor Kuncak, Patrick Lam, Andreas Podelski, and Mar- tin C. Rinard. Field constraint analysis. In Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI), pages 157-173, 2006.
- Eran Yahav and G. Ramalingam. Verifying safety properties using sep- aration and heterogeneous abstractions. In Conference on Programming Language Design and Implementation (PLDI), pages 25-34, 2004.