Subtyping and parametricity

We study the interaction of subtyping and parametricity. We describe a logic for a programming language with parametric polymorphism and subtyping. The logic supports the formal definition and use of relational parametricity. We give two models for it, and compare it with other formal systems for the same language. In particular we examine the "Penn interpretation" of subtyping as implicit coercion. without subtyping, parametricity yields, for example, an encoding of abstract types and of initial algebras, with the corresponding proof principles of simulation and induction. With subtyping, we obtain partially abstract types and certain initial order-sorted algebras, and may derive proof principles for them.<<ETX>>

[1]  J. Y. Girard,et al.  Interpretation fonctionelle et elimination des coupures dans l'aritmetique d'ordre superieur , 1972 .

[2]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.

[3]  Luca Cardelli. Amber Combinators and Functional Programming Languages , 1985, Lecture Notes in Computer Science.

[4]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[5]  John C. Mitchell,et al.  Abstract types have existential types , 1985, POPL.

[6]  Niklaus Wirth,et al.  The programming language oberon , 1988, Softw. Pract. Exp..

[7]  John C. Reynolds,et al.  Preliminary design of the programming language Forsythe , 1988 .

[8]  Niklaus Wirth,et al.  From modula to oberon , 1988, Softw. Pract. Exp..

[9]  Kim B. Bruce,et al.  A modest model of records, inheritance and bounded quantification , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[10]  Philip Wadler,et al.  Theorems for free! , 1989, FPCA.

[11]  William R. Cook,et al.  Inheritance is not subtyping , 1989, POPL '90.

[12]  Robin Milner,et al.  Definition of standard ML , 1990 .

[13]  Andre Scedrov,et al.  Functorial Polymorphism , 1990, Theor. Comput. Sci..

[14]  William R. Cook,et al.  Canning: inheritance is not subtyping , 1990 .

[15]  Joyce L. Vedral,et al.  Functional Programming Languages and Computer Architecture , 1989, Lecture Notes in Computer Science.

[16]  John C. Reynolds,et al.  Types, Abstractions, and Parametric Polymorphism, Part 2 , 1991, MFPS.

[17]  Thierry Coquand,et al.  Inheritance as Implicit Coercion , 1991, Inf. Comput..

[18]  Greg Nelson,et al.  Systems programming in modula-3 , 1991 .

[19]  Luca Cardelli,et al.  An Extension of System F with Subtyping , 1991, TACS.

[20]  José Meseguer,et al.  Order-Sorted Algebra I: Equational Deduction for Multiple Inheritance, Overloading, Exceptions and Partial Operations , 1992, Theor. Comput. Sci..

[21]  B. Pierce Programming with intersection types and bounded polymorphism , 1992 .

[22]  W. Phoa Applications of Categories in Computer Science: Using fibrations to understand subtypes , 1992 .

[23]  QingMing Ma,et al.  Parametricity as subtyping , 1992, POPL '92.

[24]  Giorgio Ghelli,et al.  Coherence of Subsumption, Minimum Typing and Type-Checking in F<= , 1992, Math. Struct. Comput. Sci..

[25]  Kim B. Bruce Safe type checking in a statically-typed object-oriented programming language , 1993, POPL '93.

[26]  Martín Abadi,et al.  A Logic for Parametric Polymorphism , 1993, TLCA.

[27]  Martín Abadi,et al.  Formal Parametric Polymorphism , 1993, Theor. Comput. Sci..

[28]  Luca Cardelli,et al.  Extensible records in a pure calculus of subtyping , 1994 .

[29]  Ryu Hasegawa,et al.  Categorical data types in parametric polymorphism , 1994, Mathematical Structures in Computer Science.

[30]  John C. Mitchell,et al.  Theoretical aspects of object-oriented programming: types, semantics, and language design , 1994, Choice Reviews Online.