Introduction to algorithms
A new approach to procedures with variable arity
Lisp and Symbolic Computation
The semantics of Scheme control-flow analysis
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Set based program analysis
Object-oriented type systems
Soft typing with conditional types
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type reconstruction for variable-arity procedures
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Set-based analysis of ML programs
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Closure analysis in constraint form
ACM Transactions on Programming Languages and Systems (TOPLAS)
Linear-time subtransitive control flow analysis
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
On the complexity of set-based analysis
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Componential set-based analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Introduction to set constraint-based program analysis
Science of Computer Programming
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Revised Report on the Algorithmic Language Scheme
Higher-Order and Symbolic Computation
A Modular, Extensible Proof Method for Small-Step Flow Analyses
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
On the Cubic Bottleneck in Subtyping and Flow Analysis
LICS '97 Proceedings of the 12th Annual IEEE Symposium on Logic in Computer Science
DrScheme: a programming environment for Scheme
Journal of Functional Programming
Modular set-based analysis from contracts
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Control-flow analysis of functional programs
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
A set-based program analysis establishes constraints between sets of abstract values for all expressions in a program. Solving the system of constraints produces a conservative approximation to the program's runtime flow of values.Some practical set-based analyses use explicit selectors to extract the relevant values from an approximation set. For example, if the analysis needs to determine the possible return values of a procedure, it uses the appropriate selector to extract the relevant component from the abstract representation of the procedure.In this paper, we show that this selector-based approach complicates the constraint solving phase of the analysis too much and thus fails to scale up to realistic programming languages. We demonstrate this claim with a full-fledged value flow analysis for case-lambda, a multi-branched version of lambda. We show how both the theoretical underpinnings and the practical implementation become too complex. In response, we present a variant of set-based closure analysis that computes equivalent results in a much more efficient manner.