ACM Transactions on Programming Languages and Systems (TOPLAS)
Constructive mathematics as a programming logic I: some principles of theory
Selected papers of the international conference on "foundations of computation theory" on Topics in the theory of computation
On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Implementing mathematics with the Nuprl proof development system
Implementing mathematics with the Nuprl proof development system
Structural subtyping and the notion of power type
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A modest model of records, inheritance, and unbounded quantification
Information and Computation - Selections from 1988 IEEE symposium on logic in computer science
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Higher-order modules and the phase distinction
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CAAP '90 Proceedings of the fifteenth colloquium on CAAP'90
Inheritance as implicit coercion
Information and Computation
ESOP'92 Symposium proceedings on 4th European symposium on programming
Constructing type systems over an operational semantics
Journal of Symbolic Computation
Theoretical Computer Science
The Coherence of Languages with Intersection Types
TACS '91 Proceedings of the International Conference on Theoretical Aspects of Computer Software
An Extension of System F with Subtyping
TACS '91 Proceedings of the International Conference on Theoretical Aspects of Computer Software
Using category theory to design implicit conversions and generic operators
Semantics-Directed Compiler Generation, Proceedings of a Workshop
A non-type-theoretic semantics for type-theoretic language
A non-type-theoretic semantics for type-theoretic language
Qualified types: theory and practice (ordering relation)
Qualified types: theory and practice (ordering relation)
From system F to typed assembly language
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hi-index | 0.01 |
We show how to implement a calculus with higher-order subtyping and subkinding by replacing uses of implicit subsumption with explicit coercions. To ensure this can be done, a polymorphic function is adjusted to take, as an additional argument, a proof that its type constructor argument has the desired kind. Such a proof is extracted from the derivation of a kinding judgement and may in turn require proof coercions, which are extracted from subkinding judgements. This technique is formalized as a type-directed translation from a calculus of higher-order subtyping to a subtyping-free calculus. This translation generalizes an existing result for second-order subtyping calculi (such as F ≤).We also discuss two interpretations of subtyping, one that views it as type inclusion and another that views it is the existence of a well-behaved coercion, and we show, by a type-theoretic construction, that our translation is the minimum consequence of shifting from the inclusion interpretation to the coercion-existence interpretation. This construction shows that the translation is the natural one, and it also provides a framework for extending the translation to richer type systems. Finally, we show how the two interpretations can be reconciled in a common semantics. It is then easy to show the coherence of the translation relative to that semantics.