Alias calculus, change calculus and frame inference

Alias analysis, which determines whether two expressions in a program may reference to the same object, has many potential applications in program construction and verification. We have developed a theory for alias analysis, the "alias calculus", implemented its application to an object-oriented language, and integrated the result into a modern IDE. The calculus has a higher level of precision than many existing alias analysis techniques.One of the principal applications is to allow automatic change analysis, which leads to inferring "modifies" clauses, providing a significant advance towards addressing the Frame Problem. Experiments were able to infer the "modifies" clauses of an existing formally specified library. Other applications, in particular to concurrent programming, also appear possible.The article presents the calculus, the application to frame inference including experimental results, and other projected applications. The ongoing work includes building more efficient model capturing aliasing properties and soundness proof for its essential elements. Change calculus allows inferring "modifies" clause automatically.The change calculus is based on alias calculus and covers most of a modern OO language.A large part of the calculus has been proved sound, mechanically, using Coq.Applied to an existing formally specified library, the analysis uncovered missing "modifies" clauses.

[1]  Thomas W. Reps,et al.  Automated Verification of the Deutsch-Schorr-Waite Tree-Traversal Algorithm , 2006, SAS.

[2]  Michael Hind,et al.  Pointer analysis: haven't we solved this problem yet? , 2001, PASTE '01.

[3]  Alan J. Hu,et al.  Automatic Inference of Frame Axioms Using Static Analysis , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[4]  Thomas Lenherr Taxonomy and applications of alias analysis , 2008 .

[5]  Sriram K. Rajamani,et al.  Compositional may-must program analysis: unleashing the power of alternation , 2010, POPL '10.

[6]  Atanas Rountev,et al.  Demand-driven context-sensitive alias analysis for Java , 2011, ISSTA '11.

[7]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 1999, POPL '99.

[8]  Xavier Leroy,et al.  A Formally-Verified Alias Analysis , 2012, CPP.

[9]  Ioannis T. Kassios Dynamic Frames: Support for Framing, Dependencies and Sharing Without Restrictions , 2006, FM.

[10]  Mana Taghdiri,et al.  Lightweight extraction of syntactic specifications , 2006, SIGSOFT '06/FSE-14.

[11]  Jean-Luc Gaudiot,et al.  Alias Analysis in Java with Reference-Set Representation for High-Performance Computing , 2004, International Journal of Parallel Programming.

[12]  Bertrand Meyer,et al.  Steps Towards a Theory and Calculus of Aliasing , 2010, Int. J. Softw. Informatics.

[13]  Bertrand Meyer,et al.  A comparative study of programmer-written and automatically inferred contracts , 2009, ISSTA.

[14]  Martin C. Rinard,et al.  Purity and Side Effect Analysis for Java Programs , 2005, VMCAI.

[15]  Bertrand Meyer,et al.  What good are strong specifications? , 2012, 2013 35th International Conference on Software Engineering (ICSE).

[16]  Bertrand Meyer,et al.  Towards a theory and calculus of aliasing , 2010, J. Object Technol..

[17]  Mark Lillibridge,et al.  Extended static checking for Java , 2002, PLDI '02.

[18]  Viktor Kuncak,et al.  On Verifying Complex Properties using Symbolic Shape Analysis , 2006, ArXiv.

[19]  Yanhong A. Liu,et al.  Alias analysis for optimization of dynamic languages , 2010, DLS '10.

[20]  Ben Hardekopf,et al.  Flow-sensitive pointer analysis for millions of lines of code , 2011, International Symposium on Code Generation and Optimization (CGO 2011).

[21]  Bertrand Meyer,et al.  Negative Variables and the Essence of Object-Oriented Programming , 2014, Specification, Algebra, and Software.

[22]  Bertrand Meyer,et al.  Programs That Test Themselves , 2009, Computer.

[23]  Ondrej Lhoták,et al.  Points-to analysis with efficient strong updates , 2011, POPL '11.

[24]  R. Govindarajan,et al.  Points-to Analysis as a System of Linear Equations , 2010, SAS.

[25]  Bertrand Meyer,et al.  A Sound and Complete Program Logic for Eiffel , 2009, TOOLS.

[26]  Bertrand Meyer,et al.  Avoid a Void: The Eradication of Null Dereferencing , 2010, Reflections on the Work of C. A. R. Hoare.