ProMiX: a Prolog partial evaluation system
The practice of Prolog
SPARE: A Development Environment for Program Analysis Algorithms
IEEE Transactions on Software Engineering
Mixtus: an automatic partial evaluator for full Prolog
New Generation Computing
Demand interprocedural dataflow analysis
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Type-based race detection for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Chaff: engineering an efficient SAT solver
Proceedings of the 38th annual Design Automation Conference
From checking to inference via driving and dag grammars
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Backward Type Inference Generalises Type Checking
SAS '02 Proceedings of the 9th International Symposium on Static Analysis
A Toolkit for Constructing Type- and Constraint-Based Program Analyses
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
A type and effect system for atomicity
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Cloning-based context-sensitive pointer alias analysis using binary decision diagrams
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
ASTLOG: a language for examining abstract syntax trees
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
Interactive, scalable, declarative program analysis: from prototype to implementation
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
Hi-index | 0.00 |
Type checking and type inference are fundamentally similar problems. However, the algorithms for performing the two operations, on the same type system, often differ significantly. The type checker is typically a straightforward encoding of the original type rules. For many systems, type inference is performed using a two-phase, constraint-based algorithm.We present an approach that, given the original type rules written as clauses in a logic programming language, automatically generates an efficient, two-phase, constraint-based type inference algorithm. Our approach works by partially evaluating the type checking rules with respect to the target program to yield a set of constraints suitable for input to an external constraint solver. This approach avoids the need to manually develop and verify a separate type inference algorithm, and is ideal for experimentation with and rapid prototyping of novel type systems.