Natural-Semantics-Based Abstract Interpretation (Preliminary Version)

The original formulation of abstract interpretation (a.i.) [5] demonstrated clearly that a.i. is a formal-semantics-based methodology for deriving a provably correct, convergent, canonical iterative data flow analysis from a standard semantics of a programming language. But subsequent research in a.i. has obscured the methodology of the topic. For example, the recent slew of papers on closures analysis [2, 3, 17, 18, 21, 37, 39, 40, 41, 42, 43] mix implementation optimizations with specifications and leave unclear exactly what closures analysis is. In this paper, we reexamine the principles of a.i. and reformulate the topic on a foundation of coinductively defined natural semantics. We aim to demonstrate that the intensional and compositional aspects of natural semantics make it an ideal vehicle for formulating abstract interpretations of problems while preserving the essential characteristics of the subject.

[1]  Jeffrey D. Ullman,et al.  Global Data Flow Analysis and Iterative Algorithms , 1976, J. ACM.

[2]  Paul Hudak,et al.  A collecting interpretation of expressions , 1988, POPL '88.

[3]  John C. Mitchell,et al.  Foundations for programming languages , 1996, Foundation of computing series.

[4]  Thierry Despeyroux,et al.  Executable Specification of Static Semantics , 1984, Semantics of Data Types.

[5]  Neil D. Jones,et al.  Program Flow Analysis: Theory and Application , 1981 .

[6]  Jens Palsberg,et al.  Flobal Program Analysis in Constraint Form , 1994, CAAP.

[7]  Chris Hankin,et al.  Strictness Analysis for Higher-Order Functions , 1986, Sci. Comput. Program..

[8]  John C. Mitchell,et al.  Type Systems for Programming Languages , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[9]  Peter Sestoft,et al.  Replacing function parameters by global variables , 1989, FPCA.

[10]  Flemming Nielson,et al.  Program transformations in a denotational setting , 1981, ACM Trans. Program. Lang. Syst..

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

[12]  Valérie Gouranton,et al.  Derivation of Static Analysers of Functional Programs from Path Properties of a Natural Semantics , 1994 .

[13]  Suresh Jagannathan,et al.  A unified treatment of flow analysis in higher-order languages , 1995, POPL '95.

[14]  Joseph A. Goguen,et al.  Initial Algebra Semantics and Continuous Algebras , 1977, J. ACM.

[15]  David A. Schmidt,et al.  Calois Connections and Computer Science Applications , 1985, CTCS.

[16]  Irène Guessarian,et al.  Algebraic semantics , 1981, Lecture Notes in Computer Science.

[17]  Matthew S. Hecht,et al.  Flow Analysis of Computer Programs , 1977 .

[18]  Dan C. Stefanescu,et al.  An equational framework for the flow analysis of higher order functional programs , 1994, LFP '94.

[19]  Patrick Cousot,et al.  Inductive definitions, semantics and abstract interpretations , 1992, POPL '92.

[20]  Neil D. Jones,et al.  A relational framework for abstract interpretation , 1985, Programs as Data Objects.

[21]  Neil D. Jones,et al.  Higher-Order Minimal Function Graphs , 1997, J. Funct. Log. Program..

[22]  P. Hudak,et al.  A Collecting Interpretation of Expressions (Without Powerdomains). , 1988 .

[23]  Olin Shivers,et al.  Control flow analysis in scheme , 1988, PLDI '88.

[24]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[25]  Neil D. Jones,et al.  Data flow analysis of applicative programs using minimal function graphs , 1986, POPL '86.

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

[27]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[28]  Anders Bondorf,et al.  Automatic Autoprojection of Higher Order Recursive Equations , 1990, Sci. Comput. Program..

[29]  Robin Milner,et al.  Co-Induction in Relational Semantics , 1991, Theor. Comput. Sci..

[30]  Flemming Nielson,et al.  Two-Level Semantics and Abstract Interpretation , 1989, Theor. Comput. Sci..

[31]  Flemming Nielson,et al.  Semantic Foundations of Data Flow Analysis , 1981 .

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

[33]  Neil D. Jones,et al.  Flow analysis and optimization of LISP-like structures , 1979, POPL.

[34]  Daniel J. Rosenkrantz,et al.  Compiler design theory , 1976 .

[35]  Suresh Jagannathan,et al.  Effective Flow Analysis for Avoiding Run-Time Checks , 1995, SAS.