Polymorphic type inference and containment
Information and Computation - Semantics of Data Types
The definition of Standard ML
Type inference for polymorphic references
Information and Computation
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Inheritance as implicit coercion
Information and Computation
Polymorphism by name for references and continuations
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Soft typing with conditional types
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A practical soft type system for Scheme
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
A syntactic approach to type soundness
Information and Computation
Refinement types for ML
Simple imperative polymorphism
Lisp and Symbolic Computation - Special issue on state in programming languages (part I)
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type-theoretic interpretation of standard ML
Proof, language, and interaction
Refinement-Type Checker for Standard ML
AMAST '97 Proceedings of the 6th International Conference on Algebraic Methodology and Software Technology
A Typed Intermediate Language for Flow-Directed Compilation
TAPSOFT '97 Proceedings of the 7th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
The Subtyping Problem for Second-Order Types is Undecidable
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Intersection types and bounded polymorphism
Mathematical Structures in Computer Science
Practical refinement-type checking
Practical refinement-type checking
A calculus for probabilistic languages
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
An effective theory of type refinements
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Semantic types: a fresh look at the ideal model for types
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lightweight object specification with typestates
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Subtyping and intersection types revisited
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Refined typechecking with Stardust
PLPV '07 Proceedings of the 2007 workshop on Programming languages meets program verification
Untyped Algorithmic Equality for Martin-Löf's Logical Framework with Surjective Pairs
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2005, Selected Papers
Semantic subtyping: Dealing set-theoretically with function, union, intersection, and negation types
Journal of the ACM (JACM)
Integrating Nominal and Structural Subtyping
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Refinement types and computational duality
Proceedings of the 3rd workshop on Programming languages meets program verification
Compiling functional types to relational specifications for low level imperative code
Proceedings of the 4th international workshop on Types in language design and implementation
Greedy bidirectional polymorphism
Proceedings of the 2009 ACM SIGPLAN workshop on ML
Higher-order term indexing using substitution trees
ACM Transactions on Computational Logic (TOCL)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type assignment for intersections and unions in call-by-value languages
FOSSACS'03/ETAPS'03 Proceedings of the 6th International conference on Foundations of Software Science and Computation Structures and joint European conference on Theory and practice of software
Type reconstruction for general refinement types
ESOP'07 Proceedings of the 16th European conference on Programming
Using intersection types for cost-analysis of higher-order polymorphic functional programs
TYPES'06 Proceedings of the 2006 international conference on Types for proofs and programs
Intersection, universally quantified, and reference types
CSL'09/EACSL'09 Proceedings of the 23rd CSL international conference and 18th EACSL Annual conference on Computer science logic
ICLP'05 Proceedings of the 21st international conference on Logic Programming
LPAR'06 Proceedings of the 13th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Tabling for higher-order logic programming
CADE' 20 Proceedings of the 20th international conference on Automated Deduction
Inference of user-defined type qualifiers and qualifier rules
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Union and intersection types for secure protocol implementations
TOSCA'11 Proceedings of the 2011 international conference on Theory of Security and Applications
Subject reduction vs intersection / union types in λµµ
VoCS'08 Proceedings of the 2008 international conference on Visions of Computer Science: BCS International Academic Conference
Elaborating intersection and union types
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Untyped Algorithmic Equality for Martin-Löf's Logical Framework with Surjective Pairs
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2005, Selected Papers
Complete and easy bidirectional typechecking for higher-rank polymorphism
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Proceedings of the ACM SIGPLAN 2014 Workshop on Programming Languages meets Program Verification
Journal of Computer Security - Foundational Aspects of Security
Hi-index | 0.00 |
We show that standard formulations of intersection type systems are unsound in the presence of computational effects, and propose a solution similar to the value restriction for polymorphism adopted in the revised definition of Standard ML. It differs in that it is not tied to let-expressions and requires an additional weakening of the usual subtyping rules. We also present a bi-directional type-checking algorithm for the resulting language that does not require an excessive amount of type annotations and illustrate it through some examples. We further show that the type assignment system can be extended to incorporate parametric polymorphism. Taken together, we see our system and associated type-checking algorithm as a significant step towards the introduction of intersection types into realistic programming languages. The added expressive power would allow many more properties of programs to be stated by the programmer and statically verified by a compiler.