Type inference for polymorphic references
Information and Computation
Soft typing with conditional types
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Set-based analysis of ML programs
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
A syntactic approach to type soundness
Information and Computation
A type system equivalent to flow analysis
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Closure analysis in constraint form
ACM Transactions on Programming Languages and Systems (TOPLAS)
Sound polymorphic type inference for objects
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Simple imperative polymorphism
Lisp and Symbolic Computation - Special issue on state in programming languages (part I)
Formal language, grammar and set-constraint-based program analysis by abstract interpretation
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Catching bugs in the web of program invariants
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Simplifying subtyping constraints
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Units: cool modules for HOT languages
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Effective Flow Analysis for Avoiding Run-Time Checks
SAS '95 Proceedings of the Second International Symposium on Static Analysis
SAS '96 Proceedings of the Third International Symposium on Static Analysis
Reducing the Cost of Data Flow Analysis By Congruence Partitioning
CC '94 Proceedings of the 5th International Conference on Compiler Construction
Making Set-Constraint Program Analyses Scale
Making Set-Constraint Program Analyses Scale
Down with Emacs Lisp: dynamic scope analysis
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
A proof method for the corectness of modularized OCFA
Information Processing Letters
Design and Correctness of Program Transformations Based on Control-Flow Analysis
TACS '01 Proceedings of the 4th International Symposium on Theoretical Aspects of Computer Software
Solving Regular Tree Grammar Based Constraints
SAS '01 Proceedings of the 8th International Symposium on Static Analysis
Modular Control Flow Analysis for Libraries
SAS '02 Proceedings of the 9th International Symposium on Static Analysis
Points-to and Side-Effect Analyses for Programs Built with Precompiled Libraries
CC '01 Proceedings of the 10th International Conference on Compiler Construction
Modular Static Program Analysis
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Eliminating dead code on recursive data
Science of Computer Programming - Special issue on static analysis (SAS'99)
Discriminative sum types locate the source of type errors
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Approximating module semantics with constraints
Proceedings of the 2004 ACM symposium on Applied computing
Improving the static analysis of embedded languages via partial evaluation
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Verifying Interactive Web Programs
Proceedings of the 19th IEEE international conference on Automated software engineering
Selectors Make Set-Based Analysis Too Hard
Higher-Order and Symbolic Computation
Modular set-based analysis from contracts
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interlanguage migration: from scripts to programs
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
The design and implementation of typed scheme
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Precise static type analysis in component based programming environment
ISEC '08 Proceedings of the 1st India software engineering conference
Gradual typing with unification-based inference
DLS '08 Proceedings of the 2008 symposium on Dynamic languages
Using static analysis for Ajax intrusion detection
Proceedings of the 18th international conference on World wide web
Staged information flow for javascript
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Modular string-sensitive permission analysis with demand-driven precision
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Modular class analysis with DATALOG
SAS'03 Proceedings of the 10th international conference on Static analysis
IDE dataflow analysis in the presence of large object-oriented libraries
CC'08/ETAPS'08 Proceedings of the Joint European Conferences on Theory and Practice of Software 17th international conference on Compiler construction
Logical types for untyped languages
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Complexity of subtype satisfiability over posets
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Interprocedural dataflow analysis in the presence of large libraries
CC'06 Proceedings of the 15th international conference on Compiler Construction
Control-flow analysis of functional programs
ACM Computing Surveys (CSUR)
Rethinking Soot for summary-based whole-program analysis
Proceedings of the ACM SIGPLAN International Workshop on State of the Art in Java Program analysis
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
A structural soundness proof for shivers's escape technique: a case for galois connections
SAS'12 Proceedings of the 19th international conference on Static Analysis
Hi-index | 0.00 |
Set-based analysis (SBA) produces good predictions about the behavior of functional and object-oriented programs. The analysis proceeds by inferring constraints that characterize the data flow relationships of the analyzed program. Experiences with MrSpidey, a static debugger based on SBA, indicate that SBA can adequately deal with programs of up to a couple of thousand lines of code. SBA fails, however, to cope with larger programs because it generates systems of constraints that are at least linear, and possibility quadratic, in the size of the analyzed program. This article presents theoretical and practical results concerning methods for reducing the size of constraint systems. The theoretical results include of proof-theoretic characterization of the observable behavior of constraint systems for program components, and a complete algorithm for deciding the observable equivalence of constraint systems. In the course of this development we establish a close connection between the observable equivalence of constraint systems and the equivalence of regular-tree grammars. We then exploit this connection to adapt a variety of algoirthms for simplifying grammars to the problem of simplifying constraint systems. Based on the resulting algorithms, we have developed componential set-based analysis, a modular and polymorphic variant of SBA. Experimental results verify the effectiveness of the simplification algorithms and the componential analysis. The simplified constraint systems are typically an order of magnitude smaller than the original systems. These reductions in size produce significant gains in the speed of the analysis.