Denotational semantics: a methodology for language development
Denotational semantics: a methodology for language development
Static evaluation of functional programs
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
The theory of strictness analysis for higher order functions
on Programs as data objects
Strictness detection in non-flat domains
on Programs as data objects
Projections for strictness analysis
Proc. of a conference on Functional programming languages and computer architecture
Detecting sharing of partial applications in functional languages
Proc. of a conference on Functional programming languages and computer architecture
Abstract interpretation of declarative languages
Abstract interpretation of declarative languages
Code generation techniques for functional languages
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
A semantic model of reference counting and its abstraction (detailed summary)
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Higher-order strictness analysis in untyped lambda calculus
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Data flow analysis of applicative programs using minimal function graphs
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Systematic design of program analysis frameworks
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Theory and Practice of Transforming Call-by-need into Call-by-value
Proceedings of the Fourth 'Colloque International sur la Programmation' on International Symposium on Programming
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Context information for lazy code generation
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Binding time analysis for high order untyped functional languages
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Update analysis and the efficient implementation of functional aggregates
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Static type inference in a dynamically typed language
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parameterized partial evaluation
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Polyvariant binding-time analysis for applicative languages
PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Path analysis and the optimization of nonstrict functional languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Trace-Based Abstract Interpretation of Operational Semantics
Lisp and Symbolic Computation
Hi-index | 0.00 |
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. In this paper collecting interpretations of expressions are developed for three abstract functional languages: (1) a first-order language with call-by-value semantics, (2) a first-order language with call-by-name semantics, and (3) a higher-order language with call-by-name semantics (i.e., 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 lazy or higher-order programs).