Strictness analysis—a practical approach
Proc. of a conference on Functional programming languages and computer architecture
Proofs and types
Frontiers and open sets in abstract interpretation
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Approximate fixed points in abstract interpretation
ESOP'92 Symposium proceedings on 4th European symposium on programming
Strictness analysis using abstract reduction
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Deriving algorithms from type inference systems: application to strictness analysis
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
New techniques for the analysis and implementation of functional programs
New techniques for the analysis and implementation of functional programs
Proving termination with multiset orderings
Communications of the ACM
Strictness Analysis in Logical Form
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Fast Abstract Interpretation Using Sequential Algorithms
WSA '93 Proceedings of the Third International Workshop on Static Analysis
Finding fixed points in finite lattices
Proceedings of the Functional Programming Languages and Computer Architecture
Hi-index | 0.00 |
This paper describes a method for finding the least fixed points of higher-order functions over finite domains using symbolic manipulation. Fixed point finding is an essential component in the calculation of abstract semantics of functional programs, providing the foundation for program analyses based on abstract interpretation. Previous methods for fixed point finding have primarily used semantic approaches, which often must traverse large portions of the semantic domain even for simple programs. This paper provides the theoretical framework for a syntax-based analysis that is potentially very fast. The proposed syntactic method is based on an augmented simply typed lambda calculus where the symbolic representation of each function produced in the fixed point iteration is transformed to a syntactic normal form. Normal forms resulting from successive iterations are then compared syntactically to determine their ordering in the semantic domain, and to decide whether a fixed point has been reached. We show the method to be sound, complete and compositional. Examples are presented to show how this method can be used to perform strictness analysis for higher-order functions over non-flat domains. Our method is compositional in the sense that the strictness property of an expression can be easily calculated from those of its sub-expressions. This is contrary to most strictness analysers, where the strictness property of an expression has to be computed anew whenever one of its subexpressions changes. We also compare our approach with recent developments in strictness analysis.