A formal foundation for concurrent object oriented programming

In this thesis we develop a novel, implicitly typed {calculus for objects, by viewing these as extendible case{functions rather than as extendible records. This novel view, allows to unify the concepts of function, object and process into one concept, that of a functional entity which is self contained and provided with a uniform communication protocol. We use this view to give a formal foundation for both sequential and concurrent object oriented languages. In the later case, we view objects as case{functions communicating asynchronously over unbounded channels. Our calculus is a conservative extension of the polymorphic type system of Aiken and Wimmers, to include case{function extension and lazy data types. Its soundness is proven with respect to a semantical model based on ideals. Subtyping and case{ function extension play a central role in our modeling of generalization/specialization and inheritance. To model self and self{class, our calculus includes recursive types. These are also necessary to model streams and provide the theoretical background for passing streams themselves as messages. We use higher order streams to express mobile systems. For the study of mobile systems we additionally devise a network calculus on the top of the lambda calculus. The implicitly typed {calculus is accompanied with a decidable type inference algorithm, which always delivers the least type of a term (if this exists). An implementation of this algorithm was written in Common Lisp.

[1]  Gerald W. Both,et al.  Object-oriented analysis and design with applications , 1994 .

[2]  Benjamin C. Pierce,et al.  Object-oriented programming without recursive types , 1993, POPL '93.

[3]  Uday S. Reddy,et al.  Objects as closures: abstract semantics of object-oriented languages , 1988, LISP and Functional Programming.

[4]  William R. Cook,et al.  Interfaces and specifications for the Smalltalk-80 collection classes , 1992, OOPSLA.

[5]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[6]  Manfred Broy,et al.  Compositional Re nement of Interactive Systems , 1995 .

[7]  Chris Dollin,et al.  Object-oriented development: the fusion method , 1994 .

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

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

[10]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[11]  Luca Cardelli,et al.  Operations on records , 1989, Mathematical Structures in Computer Science.

[12]  Carolyn L. Talcott,et al.  Towards a Theory of Actor Computation , 1992, CONCUR.

[13]  D. Walker A Calculus of Mobile Processes, Part Ii , 1989 .

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

[15]  Pierre America POOL: design and experience , 1991, OOPS Messenger.

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

[17]  Edward Yourdon,et al.  Modern structured analysis , 1989 .

[18]  Bent Thomsen,et al.  A calculus of higher order communicating systems , 1989, POPL '89.

[19]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[20]  Mitchell Wand,et al.  Complete Type Inference for Simple Objects , 1987, LICS.

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

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

[23]  Jean-Marc Nerson,et al.  Object-Oriented Analysis and Design , 1992, TOOLS.

[24]  M. Broy Compositional Reenement of Interactive Systems , 1995 .

[25]  Philip Wadler,et al.  How to make ad-hoc polymorphism less ad hoc , 1989, POPL '89.

[26]  MeseguerJosé Conditional rewriting logic as a unified model of concurrency , 1992 .

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

[28]  Gordon D. Plotkin,et al.  An ideal model for recursive polymorphic types , 1984, Inf. Control..

[29]  José Meseguer,et al.  Principles of OBJ2 , 1985, POPL.

[30]  Tobias Nipkow,et al.  Type checking type classes , 1993, POPL '93.

[31]  Martín Abadi,et al.  A Theory of Primitive Objects - Untyped and First-Order Systems , 1994, TACS.

[32]  Alexander Aiken,et al.  Soft typing with conditional types , 1994, POPL '94.

[33]  William R. Cook,et al.  Object-Oriented Programming Versus Abstract Data Types , 1990, REX Workshop.

[34]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[35]  Robin Milner,et al.  The Polyadic π-Calculus: a Tutorial , 1993 .

[36]  D. Walker,et al.  A Calculus of Mobile Processes, Part I , 1989 .

[37]  Felice Cardone,et al.  Relational Semantics for Recursive Types and Bounded Quantification , 1989, ICALP.

[38]  Randy Shepherd,et al.  Object-Oriented Programming , 1994, Lecture Notes in Computer Science.

[39]  Giuseppe Castagna,et al.  A calculus for overloaded functions with subtyping , 1992, LFP '92.

[40]  Luca Cardelli Foundations of Object- Oriented Programming , 1996 .

[41]  Cliff B. Jones,et al.  Process algebraic foundations for an object-based design notation , 1993 .

[42]  Klaus-Peter Löhr,et al.  Object-Oriented Concurrent Programming , 1992, TOOLS.

[43]  Karl J. Lieberherr,et al.  Object-oriented design , 1996, CSUR.

[44]  Pierre America,et al.  A parallel object-oriented language with inheritance and subtyping , 1990, OOPSLA/ECOOP '90.

[45]  Mark P. Jones Coherence for Qualiied Types , 1993 .

[46]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

[47]  Sonya E. Keene,et al.  Object-oriented programming in COMMON LISP - a programmer's guide to CLOS , 1989 .

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

[49]  Carl A. Gunter Semantics of programming languages: structures and techniques , 1993, Choice Reviews Online.

[50]  John C. Mitchell,et al.  A lambda calculus of objects and method specialization , 1993, [1993] Proceedings Eighth Annual IEEE Symposium on Logic in Computer Science.

[51]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[52]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[53]  Cliff B. Jones,et al.  An Object-Based Design Method for Concurrent Programs , 1992 .

[54]  Gul Agha,et al.  Concurrent programming using actors , 1987 .

[55]  Jean-Yves Girard,et al.  The System F of Variable Types, Fifteen Years Later , 1986, Theor. Comput. Sci..

[56]  Benjamin C. Pierce,et al.  A record calculus based on symmetric concatenation , 1991, POPL '91.

[57]  Ed Downs,et al.  Structured systems analysis and design method: application and context , 1988 .

[58]  Roberto M. Amadio,et al.  Recursion over Realizability Structures , 1991, Inf. Comput..

[59]  Radu Grosu,et al.  Towards a New Way of Parameterization , 1994 .

[60]  John C. Mitchell,et al.  ML with extended pattern matching and subtypes , 1988, LISP and Functional Programming.

[61]  Oscar Nierstrasz,et al.  Towards an Object Calculus ∗ , 1991 .

[62]  Didier Rémy,et al.  Type checking records and variants in a natural extension of ML , 1989, POPL '89.

[63]  Ivar Jacobson,et al.  Object-oriented software engineering - a use case driven approach , 1993, TOOLS.

[64]  Jonathan Rees,et al.  Object-oriented programming in scheme , 1988, LFP '88.

[65]  Alexander Aiken,et al.  Type inclusion constraints and type inference , 1993, FPCA '93.

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

[67]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[68]  José Meseguer,et al.  A logical theory of concurrent objects , 1990, OOPSLA/ECOOP '90.

[69]  Gilles Kahn,et al.  The Semantics of a Simple Language for Parallel Programming , 1974, IFIP Congress.

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

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

[72]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

[73]  Gérard Berry,et al.  The chemical abstract machine , 1989, POPL '90.

[74]  John C. Reynolds,et al.  The Coherence of Languages with Intersection Types , 1991, TACS.

[75]  Mitchell Wand,et al.  Type inference for record concatenation and multiple inheritance , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[76]  Oscar Nierstrasz,et al.  Viewing object as patterns of communicating agents , 1990, OOPSLA/ECOOP '90.

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

[78]  John C. Mitchell,et al.  The essence of ML , 1988, POPL '88.