Closure analysis in constraint form
- 1 January 1995
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 17 (1) , 47-62
- https://doi.org/10.1145/200994.201001
Abstract
Flow analyses of untyped higher-order functional programs have in the past decade been presented by Ayers, Bondorf, Consel, Jones, Heintze, Sestoft, Shivers, Steckler, Wand, and others. The analyses are usually defined as abstract interpretations and are used for rather different tasks such as type recovery, globalization, and binding-time analysis. The analyses all contain a global closure analysis that computes information about higher-order control-flow. Sestoft proved in 1989 and 1991 that closure analysis is correct with respect to call-by-name and call-by-value semantics, but it remained open if correctness holds for arbitrary beta-reduction. This article answers the question; both closure analysis and others are correct with respect to arbitrary beta-reduction. We also prove a subject-reduction result: closure information is still valid after beta-reduction. The core of our proof technique is to define closure analysis using a constraint system. The constraint system is equivalent to the closure analysis of Bondorf, which in turn is based on Sestoft's.Keywords
This publication has 9 references indexed in Scilit:
- Safety Analysis versus Type InferenceInformation and Computation, 1995
- Correctness of binding-time analysisJournal of Functional Programming, 1993
- Efficient analyses for realistic off-line partial evaluationJournal of Functional Programming, 1993
- Safety analysis versus type inference for partial typesInformation Processing Letters, 1992
- Automatic autoprojection of higher order recursive equationsScience of Computer Programming, 1991
- Automatic autoprojection of recursive equations with global variables and abstract data typesScience of Computer Programming, 1991
- Binding time analysis for high order untyped functional languagesPublished by Association for Computing Machinery (ACM) ,1990
- Replacing function parameters by global variablesPublished by Association for Computing Machinery (ACM) ,1989
- Self: The power of simplicityPublished by Association for Computing Machinery (ACM) ,1987