|
ABSTRACT
A collecting interpretation of expressions is an interpretation of a program that allows one to answer questions of the sort: “What are all possible values to which an expression might evaluate during program execution?” Answering such questions in a denotational framework is akin to traditional data flow analysis and, when used in the context of abstract interpretation, allows one to infer properties that approximate the run-time behavior of expression evaluation.
Exact collecting interpretations of expressions are developed for three abstract functional languages: a strict first-order language, a nonstrict first-order language, and a nonstrict higher order language (the full untyped lambda calculus with constants). It is argued that the method is simple (in particular, no powerdomains are needed), Natural (it captures the intuitive operational behavior of a cache), yet more expressive than existing methods (it is the first exact collecting interpretation for either nonstrict higher order languages). Correctness of the interpretations with respect to the standard semantics is shown via a generalization of the notion of strictness. It is further shown how to form abstractions of these exact interpretations, using as an example a collecting strictness analysis which yields compile-time information not previously captured by conventional strictness analyses.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
|
 |
3
|
|
 |
4
|
|
| |
5
|
DONZEAU-GOuGE, V. Denotational definition of properties of program computations. In Program Flow Analysis: Theory and Applications. Prentice-Hall, Englewood Cliffs, N.J., pp. 343-379.
|
 |
6
|
|
| |
7
|
GOLDBERG, B., AND HUnAK, P. Detecting sharing of partial applications in functional languages. YALEU/DCS/RR-526, Dept. Computer Science, Yale University, New Haven, Conn., Mar. 1987.
|
 |
8
|
|
| |
9
|
HUD^K, P. Collecting interpretations of expressions. Res. Rep. YALEU/DCS/RR-497, Dep. Computer Science, Yale University, New Haven, Conn., 1986.
|
 |
10
|
|
| |
11
|
|
| |
12
|
JONES, N.D. Private communications, June 1987.
|
| |
13
|
JONES, N. D., AND MUCSNICK, S. S. Complexity of fiow analysis, inductive assertion synthesis, and a language due to Dijkstra. In Program Flow Analysis: Theory and Applications. Prentice-Hall, Englewood Cliffs, N. J, 1981, pp. 380-393.
|
 |
14
|
|
| |
15
|
JONES, N., AND SOND~RGAARD, H. A semantics-based framework for the abstract interpretation of 'Prolog.' In Abstract Interpretation of Declaratwe Languages. Ellis Horwood, Chichester, England, 1987, pp. 123-142.
|
 |
16
|
|
| |
17
|
MELHSS, C. Abstract interpretation of PROLOG programs. In Abstract Interpretation of Declarative Languages. Ellis Horwood, Chichester, England, 1987, pp. 181-198.
|
| |
18
|
MYCROF% A. Abstract interpretation and optimizing transformations for applicative programs. Ph.D. dissertation, University of Edinburgh, Edinburgh, Scotland, 1981
|
| |
19
|
|
| |
20
|
NmLSON, F. Abstract Interpretation Using Domain Theory. Ph.D. dissertation, University of Edinburgh, Edmburgh, Scotland, Oct. 1984.
|
| |
21
|
NmLSON, F. A denotational framework for data fiow analysis. Acta Inform. 18 (1982), 265-287.
|
| |
22
|
|
| |
23
|
|
| |
24
|
|
| |
25
|
YOUNG, J. The semantic analysis of functional programs: Theory and practice. Ph D. dissertation, Dep. Computer Science, Yale Umversity, New Haven, Conn., 1988.
|
|