- 著者
- Benjamin C. Pierce
- タイトル
- Programming with Intersection Types and Bounded Polymorphism
- 日時
- December 1991
- 概要
- Intersection types and bounded quantification are complementary
mechanisms for extending the expressive power of statically
typed programming languages.
They begin with a common framework: a simple, typed language
with high-order functions and a notion of subtyping.
Intersection types extend this framework by giving every pair of
types o and T a greatest lower bound, o/\T, corresponding
intuitively to the intersection of the sets of values described
by o and T.
Bounded quantification extends the basic framework along a
different axis by adding polymorphic functions that operate
uniformly on all the subtypes of a given type.
This thesis unifies and extends prior work on intersection types
and bounded quantification, previously studied only in
isolation, by investigating theoretical and practical aspects of
a typed λ-calculus incorporating both.
The practical utility of this calculus, called F/\, is
established by examples showing, for instance, that it allows a
rich form of "coherent overloading" and supports an analog of
abstract interpretation during typechecking; for example, the
addition function is given a type showing that it maps pairs of
positive inputs to a positive result, pairs of zero inputs to a
zero result, etc.
More familiar programming examples are presented in terms of an
extension of Forsythe (an Algol-like language with intersection
types), demonstrating how parametric polymorphism can be used to
simplify and generalize Forsythe's design.
We discuss the novel programming and debugging styles that arise
in F/\.
We prove the correctness of a simple semi-decision procedure for
the subtype relation and the partial correctness of an algorithm
for synthesizing minimal types of F /\ terms.
Our main tool in this analysis is a notion of "canonical types,"
which allow proofs to be factored so that intersections are
handled separately from the other type constructors.
A pair of negative results illustrates some subtle complexities
of F /\.
First, the subtype relation of F/\ is shown to be undecidable;
in fact, even the subtype relation of pure secondorder bounded
quantification is undecidable, a surprising result in its own
right.
Second, the failure of an important technical property of the
subtype relation - the existence of least upper bounds --
indicates that typed semantic models of F/\ will be more
difficult to construct and analyze than the known typed models
of intersection types.
We propose, for future study, some simpler fragments of F/\ that
share most of its essential features, while recovering
decidability and least upper bounds.
We study the semantics of F/\ from several points of view.
An untyped model based on partial equivalence relations
demonstrates the consistency of the typing rules and provides a
simple interpretation for programs, where "o is a subtype of T"
is read as " O is a subset of T."
More refined models can be obtained using a translation from F/\
into the pure polymorphic λ-calculus; in these models,
"o is a subtype of T" is interpreted by an explicit coercion
function from o to T.
The nonexistence of least upper bounds shows up here in the
failure of known techniques for proving the coherence of the
translation semantics.
Finally, an equational theory of equivalences between F/\ terms
is presented and its soundness for both styles of model is
verified.
- カテゴリ
- CMUTR
Category: CMUTR
Institution: Department of Computer Science, Carnegie
Mellon University
Abstract: Intersection types and bounded quantification are complementary
mechanisms for extending the expressive power of statically
typed programming languages.
They begin with a common framework: a simple, typed language
with high-order functions and a notion of subtyping.
Intersection types extend this framework by giving every pair of
types o and T a greatest lower bound, o/\T, corresponding
intuitively to the intersection of the sets of values described
by o and T.
Bounded quantification extends the basic framework along a
different axis by adding polymorphic functions that operate
uniformly on all the subtypes of a given type.
This thesis unifies and extends prior work on intersection types
and bounded quantification, previously studied only in
isolation, by investigating theoretical and practical aspects of
a typed λ-calculus incorporating both.
The practical utility of this calculus, called F/\, is
established by examples showing, for instance, that it allows a
rich form of "coherent overloading" and supports an analog of
abstract interpretation during typechecking; for example, the
addition function is given a type showing that it maps pairs of
positive inputs to a positive result, pairs of zero inputs to a
zero result, etc.
More familiar programming examples are presented in terms of an
extension of Forsythe (an Algol-like language with intersection
types), demonstrating how parametric polymorphism can be used to
simplify and generalize Forsythe's design.
We discuss the novel programming and debugging styles that arise
in F/\.
We prove the correctness of a simple semi-decision procedure for
the subtype relation and the partial correctness of an algorithm
for synthesizing minimal types of F /\ terms.
Our main tool in this analysis is a notion of "canonical types,"
which allow proofs to be factored so that intersections are
handled separately from the other type constructors.
A pair of negative results illustrates some subtle complexities
of F /\.
First, the subtype relation of F/\ is shown to be undecidable;
in fact, even the subtype relation of pure secondorder bounded
quantification is undecidable, a surprising result in its own
right.
Second, the failure of an important technical property of the
subtype relation - the existence of least upper bounds --
indicates that typed semantic models of F/\ will be more
difficult to construct and analyze than the known typed models
of intersection types.
We propose, for future study, some simpler fragments of F/\ that
share most of its essential features, while recovering
decidability and least upper bounds.
We study the semantics of F/\ from several points of view.
An untyped model based on partial equivalence relations
demonstrates the consistency of the typing rules and provides a
simple interpretation for programs, where "o is a subtype of T"
is read as " O is a subset of T."
More refined models can be obtained using a translation from F/\
into the pure polymorphic λ-calculus; in these models,
"o is a subtype of T" is interpreted by an explicit coercion
function from o to T.
The nonexistence of least upper bounds shows up here in the
failure of known techniques for proving the coherence of the
translation semantics.
Finally, an equational theory of equivalences between F/\ terms
is presented and its soundness for both styles of model is
verified.
Number: CMU-CS-91-205
Bibtype: TechReport
Month: dec
Author: Benjamin C. Pierce
Title: Programming with Intersection Types and Bounded Polymorphism
Year: 1991
Address: Pittsburgh, PA
Super: @CMUTR