Finding fixed points in finite lattices
Recently there has been much interest in the abstract interpretation of declarative languages. Abstract interpretation is a semantics-based approach to program analysis that uses compile time evaluation of programs using simplified value domains. This gives information about the run-time properties of programs and provides the basis for significant performance improvements. A particular example of abstract interpretation is strictness analysis which allows the detection of the parameters in which a function is strict; these parameters may be passed by value without compromising the termination properties of the program.
The central, most complex task of an abstract interpreter is finding the fixpoints of recursive functions in the abstract value space. An elegant algorithm, the frontiers algorithm, has been proposed by Simon Peyton-Jones and Chris Clack that performs very well for the strictness analysis of first-order functions. In this paper we extend their algorithm and show how it can be applied to higher-order functions over arbitrary finite lattices. This raises the possibility of using the algorithm as the basis for more general abstract interpretation tools. We describe the algorithm in a modular way that is conducive to proofs of correctness and termination properties.
KeywordsRecursive Call Abstract Interpretation Base Domain Finite Lattice Element Domain
- Abramsky87.S. Abramsky and C. Hankin (Eds), Abstract Interpretation of Declarative Languages, Ellis Horwood, 1987.Google Scholar
- Burn85.G. Burn, C. Hankin, and S. Abramsky, The Theory of Strictness Analysis for Higher Order Functions, pp. 42–62, Springer Verlag LNCS 217, 1985.Google Scholar
- Clack85.C. Clack and S. Peyton-Jones, “Strictness Analysis — A Practical Approach,” in Functional Programming Languages and Computer Science, pp. 35–49, Springer Verlag LNCS 201, Nancy, France, September 1985.Google Scholar
- Hankin86.C. Hankin, G. Burn, and S. Peyton-Jones, A Safe Approach to Parallel Combinator Reduction, pp. 99–110, Springer Verlag LNCS 213, 1986.Google Scholar
- Martin86.C.C. Martin, itExtending the Frontiers Algorithm to Higher Order Functions and General Finite Domains, Unpublished Document, Department Of Computing, Imperial College, 1986.Google Scholar
- Martin87.C.C. Martin, Finding Fixpoints Using a Syntactic Method, Unpublished Document, Department of Computing, Imperial College, 1987.Google Scholar
- Young86.J. Young and P. Hudak, Finding Fixpoints on Function Spaces, Research Report YALEEU/DCS/RR-505, Yale University Department of Computer Science, December 1986.Google Scholar