Modular Shape Analysis for Dynamically Encapsulated Programs

We present a modular static analysis which identifies structural (shape) invariants for a subset of heap-manipulating programs. The subset is defined by means of a non-standard operational semantics which places certain restrictions on aliasing and sharing across modules. More specifically, we assume that live references (i.e., used before set) between subheaps manipulated by different modules form a tree. We develop a conservative static analysis algorithm by abstract interpretation of our non-standard semantics. Our modular algorithm also ensures that the program obeys the above mentioned restrictions.

[1]  Reinhard Wilhelm,et al.  A semantics for procedure local heaps and its abstractions , 2005, POPL '05.

[2]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[3]  Peter W. O'Hearn,et al.  A Local Shape Analysis Based on Separation Logic , 2006, TACAS.

[4]  Neil Immerman,et al.  Abstraction for Shape Analysis with Fast and Precise Transformers , 2006, CAV.

[5]  K. Rustan M. Leino,et al.  A Verification Methodology for Model Fields , 2006, ESOP.

[6]  Aneesh Aggarwal,et al.  Related field analysis , 2001, PLDI '01.

[7]  James Noble,et al.  Towards a Model of Encapsulation , 2003 .

[8]  K. Rustan M. Leino,et al.  Verification of Object-Oriented Programs with Invariants , 2003, J. Object Technol..

[9]  Andreas Podelski,et al.  Boolean Heaps , 2005, SAS.

[10]  Eran Yahav,et al.  Predicate Abstraction and Canonical Abstraction for Singly-Linked Lists , 2005, VMCAI.

[11]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[12]  Roberto Giacobazzi,et al.  Making abstract interpretations complete , 2000, JACM.

[13]  Gilles Kahn,et al.  Natural Semantics , 1987, STACS.

[14]  Martin C. Rinard,et al.  ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), November 2002 Ownership Types for Safe Programming: Preventing Data Races and Deadlocks , 2022 .

[15]  Stephen Chong,et al.  Static Analysis of Accessed Regions in Recursive Data Structures , 2003, SAS.

[16]  John Tang Boyland,et al.  Alias burying: Unique variables without destructive reads , 2001, Softw. Pract. Exp..

[17]  C. R. Ramakrishnan,et al.  Parameterized Verification of pi-Calculus Systems , 2006, TACAS.

[18]  Jan Vitek,et al.  Scoped types for real-time Java , 2004, 25th IEEE International Real-Time Systems Symposium.

[19]  Bernhard Steffen,et al.  The Interprocedural Coincidence Theorem , 1992, CC.

[20]  Robert E. Strom,et al.  Typestate: A programming language concept for enhancing software reliability , 1986, IEEE Transactions on Software Engineering.

[21]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 2002, TOPL.

[22]  Dave Clarke,et al.  External Uniqueness Is Unique Enough , 2003, ECOOP.

[23]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[24]  Marius Bozga,et al.  Storeless semantics and alias logic , 2003, PPoPP 2003.

[25]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[26]  Francesco Logozzo,et al.  Class-Level Modular Analysis for Object Oriented Languages , 2003, SAS.

[27]  Gavin M. Bierman,et al.  Separation logic and abstraction , 2005, POPL '05.

[28]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

[29]  Radu Rugina,et al.  Region-based shape analysis with tracked locations , 2005, POPL '05.

[30]  Luca Cardelli,et al.  ECOOP 2003 – Object-Oriented Programming , 2003, Lecture Notes in Computer Science.

[31]  Kousha Etessami,et al.  Analysis of Recursive Game Graphs Using Data Flow Equations , 2004, VMCAI.

[32]  Jan Vitek,et al.  Confined types , 1999, OOPSLA '99.

[33]  Daniel Pierre Bovet,et al.  Understanding the Linux Kernel , 2000 .

[34]  Patrick Cousot,et al.  Modular Static Program Analysis , 2002, CC.

[35]  Francesco Logozzo,et al.  Automatic Inference of Class Invariants , 2004, VMCAI.

[36]  Viktor Kuncak,et al.  Hob: A Tool for Verifying Data Structure Consistency , 2005, CC.

[37]  Eran Yahav,et al.  Interprocedural Shape Analysis for Cutpoint-Free Programs , 2005, SAS.

[38]  Peter W. O'Hearn,et al.  Separation and information hiding , 2004, POPL.

[39]  Viktor Kuncak,et al.  Field Constraint Analysis , 2005, VMCAI.

[40]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

[41]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[42]  Alexey Gotsman,et al.  Interprocedural Shape Analysis with Separated Heap Abstractions , 2006, SAS.