The C++ programming language
ML with extended pattern matching and subtypes
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
BCK-combinators and linear &lgr;-terms have types
Theoretical Computer Science
Proceedings of the Second European Symposium on Programming
On the complexity of type inference with coercion
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Efficient handling of multiple inheritance hierarchies
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Algorithms for type inference with coercions
ISSAC '94 Proceedings of the international symposium on Symbolic and algebraic computation
Lower bounds on type inference with subtypes
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Complexity of kernel Fun subtype checking
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Minimal typings in atomic subtyping
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type checking higher-order polymorphic multi-methods
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type elaboration and subtype completion for Java bytecode
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type elaboration and subtype completion for Java bytecode
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 2003 ACM symposium on Document engineering
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
On the building of affine retractions
Mathematical Structures in Computer Science
Type reconstruction for general refinement types
ESOP'07 Proceedings of the 16th European conference on Programming
Survey: Colouring, constraint satisfaction, and complexity
Computer Science Review
Satisfiability of Inequalities in a Poset
Fundamenta Informaticae
Hi-index | 0.00 |
We study the complexity of type inference for programming languages with subtypes. There are three language variations that effect the problem: (i) basic functions may have polymorphic or more limited types, (ii) the subtype hierarchy may be fixed or vary as a result of subtype declarations within a program, and (iii) the subtype hierarchy may be an arbitrary partial order or may have a more restricted form, such as a tree or lattice. The naive algorithm for infering a most general polymorphic type, undervariable subtype hypotheses, requires deterministic exponential time. If we fix the subtype ordering, this upper bound grows to nondeterministic exponential time. We show that it is NP-hard to decide whether a lambda term has a type with respect to a fixed subtype hierarchy (involving only atomic type names). This lower bound applies to monomorphic or polymorphic languages. We give PSPACE upper bounds for deciding polymorphic typability if the subtype hierarchy has a lattice structure or the subtype hierarchy varies arbitrarily. We also give a polynomial time algorithm for the limited case where there are of no function constants and the type hierarchy is either variable or any fixed lattice.