Higher-order subtyping with intersection types

Acknowledgements Mariangiola Dezani is the most encouraging and enthusiastic computer scientist I have ever met. From her I learned to trust my intuition and follow it through to the very end. This research would not have been possible without her technical supervision and moral support. I would also like to thank my supervisor, Henk Barendregt. His lucid lectures on-calculus, his ability to hide irrelevant details, the clarity of his explanations, and his elegant technical prose have been constant guides. I thank the people in the Netherlands, especially Erik Barendsen and Jan Ku-per, for their help and friendship, and Steeen van Bakel and Paula Severi, for their comments on previous drafts of this thesis. Mieke Massink and Maria Fernn andez Ferreira started as colleagues and soon became two of my dearest friends. I am grateful to Benjamin Pierce, who suggested the study of a-calculus combining higher-order polymorphism and intersection types. He and I deened the system F ! ^ , whose study is, by and large, the theme of this thesis; together we wrote CP93], from which chapters 5 and 6 arose. His fertile mind and his passion for hard work make him inspiring company. I am indebted to Rod Burstall, who opened to me the doors of the Laboratory for Foundations of Computer Science. There I found a highly motivating research environment where I developed most of the results in this thesis, and a handful of friends who made my life in Edinburgh a beautifully rich experience. I enjoyed technical discussions with special thanks to Healfdene Goguen for many helpful comments on draft versions of this thesis. It has been an honour to have Jan Willem Klop, Giuseppe Longo, and Rob Nederpelt as members of the manuscript commission. From my watercolor teacher, Joost van Moll, I learned a technique which actually changed my way of doing research; it consists of carefully examining what has been done, learning from the successful ideas, and being brave enough to start over again regardless of the time invested in the previous try. In the non-academic world, I want to thank my parents, Mario Compagnoni and Susana Brunsch, for their unconditional love. I want to mention (in the order in which they appeared in my life)

[1]  A. Church An Unsolvable Problem of Elementary Number Theory , 1936 .

[2]  A. Church The calculi of lambda-conversion , 1941 .

[3]  E. Lohse,et al.  A Correspondence Between ALGOL 60 and Church's Lambda- Notation: Part I* , 1965 .

[4]  de Ng Dick Bruijn Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem , 1972 .

[5]  P. Martin-Löf An Intuitionistic Theory of Types: Predicative Part , 1975 .

[6]  Dana S. Scott,et al.  Data Types as Lattices , 1976, SIAM J. Comput..

[7]  Mariangiola Dezani-Ciancaglini,et al.  A new type assignment for λ-terms , 1978, Arch. Math. Log..

[8]  F. Dick A survey of the project Automath , 1980 .

[9]  John C. Reynolds,et al.  Using category theory to design implicit conversions and generic operators , 1980, Semantics-Directed Compiler Generation.

[10]  Mariangiola Dezani-Ciancaglini,et al.  An extension of the basic functionality theory for the λ-calculus , 1980, Notre Dame J. Formal Log..

[11]  Mariangiola Dezani-Ciancaglini,et al.  A filter lambda model and the completeness of type assignment , 1983, Journal of Symbolic Logic.

[12]  John C. Mitchell Lambda calculus models of typed programming languages , 1984 .

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

[14]  Luca Cardelli,et al.  Typechecking Dependent Types and Subtypes , 1986, Foundations of Logic and Functional Programming.

[15]  John C. Mitchell A type-inference approach to reduction properties and semantics of polymorphic expressions (summary) , 1986, LFP '86.

[16]  J. Roger Hindley,et al.  Introduction to combinators and λ-calculus , 1986, Acta Applicandae Mathematicae.

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

[18]  Thierry Coquand,et al.  The Calculus of Constructions , 1988, Inf. Comput..

[19]  Harold T. Hodes,et al.  The | lambda-Calculus. , 1988 .

[20]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

[21]  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.

[22]  Luca Cardelli,et al.  Structural subtyping and the notion of power type , 1988, POPL '88.

[23]  John C. Mitchell Toward a typed foundation for method specialization and inheritance , 1989, POPL '90.

[24]  John C. Mitchell,et al.  F-bounded quantification for object-oriented programming , 1989 .

[25]  Luca Cardelli,et al.  Operations on Records , 1989, Mathematical Foundations of Programming Semantics.

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

[27]  Gérard Huet,et al.  Logical Foundations of Functional Programming , 1990 .

[28]  John C. Mitchell,et al.  Type Systems for Programming Languages , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[29]  Hendrik Pieter Barendregt,et al.  Functional Programming and Lambda Calculus , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[30]  John C. Mitchell,et al.  The Semantics of Second-Order Lambda Calculus , 1990, Inf. Comput..

[31]  Giuseppe Rosolini,et al.  Extensional PERs , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

[32]  F. Cardone,et al.  Two extensions of Curry's type inference system , 1990 .

[33]  Zhaohui Luo An extended calculus of constructions , 1990 .

[34]  Luca Cardelli,et al.  A Semantic Basis for Quest , 1991, J. Funct. Program..

[35]  Luca Cardelli,et al.  Subtyping recursive types , 1991, POPL '91.

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

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

[38]  John C. Mitchell,et al.  PER models of subtyping, recursive types and higher-order polymorphism , 1992, POPL '92.

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

[40]  Adriana B. Compagnoni,et al.  Decidability of Higher-Order Subtyping with Intersection Types , 1994, CSL.

[41]  Benjamin C. Pierce,et al.  Simple type-theoretic foundations for object-oriented programming , 1994, Journal of Functional Programming.

[42]  Decidable Bounded Quantiication , 1994 .

[43]  Mariangiola Dezani-Ciancaglini,et al.  Combining Type Disciplines , 1994, Ann. Pure Appl. Log..

[44]  John C. Mitchell,et al.  Notes on Typed Object-Oriented Programming , 1994, TACS.

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

[46]  Martin Hofmann,et al.  A unifying type-theoretic framework for objects , 1994, Journal of Functional Programming.