Infinitary control flow analysis: a collecting semantics for closure analysis

Defining the collecting semantics is usually the first crucial step in adapting the general methodology of abstract interpretation to the semantic framework or programming language at hand. In this paper we show how to define a collecting semantics for control flow analysis: due to the generality of the formulation we need to appeal to coinduction (or greatest fixed points) in order to define the analysis. We then prove the semantic soundness of the collecting semantics and that all totally deterministic instantiations have a least solution; this incorporates k-CFA, polymorphic splitting and a new class of uniform-k-CFA analyses.

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

[2]  Karl-Filip Faxén,et al.  Optimizing Lazy Functional Programs Using Flow Inference , 1995, SAS.

[3]  Flemming Nielson,et al.  Abstract interpretation: a semantics-based tool for program analysis , 1995, LICS 1995.

[4]  Nevin Heintze,et al.  Set-based analysis of ML programs , 1994, LFP '94.

[5]  Patrick Cousot,et al.  Formal language, grammar and set-constraint-based program analysis by abstract interpretation , 1995, FPCA '95.

[6]  Alexander Aiken,et al.  Soft typing with conditional types , 1994, POPL '94.

[7]  Peter Sestoft,et al.  Analysis and efficient implementation of functional programs , 1991 .

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

[9]  Alain Deutsch,et al.  Interprocedural may-alias analysis for pointers: beyond k-limiting , 1994, PLDI '94.

[10]  Mitchell Wand,et al.  Selective and lightweight closure conversion , 1994, POPL '94.

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

[12]  Matthias Felleisen,et al.  The semantics of future and its use in program optimization , 1995, POPL '95.

[13]  Matthias Felleisen,et al.  Control operators, the SECD-machine, and the λ-calculus , 1987, Formal Description of Programming Concepts.

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

[15]  Olin Shivers The semantics of Scheme control-flow analysis , 1991 .

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

[17]  Jens Palsberg,et al.  Closure analysis in constraint form , 1995, TOPL.