Results 1  10
of
33
Pict: A programming language based on the picalculus
 PROOF, LANGUAGE AND INTERACTION: ESSAYS IN HONOUR OF ROBIN MILNER
, 1997
"... The πcalculus offers an attractive basis for concurrent programming. It is small, elegant, and well studied, and supports (via simple encodings) a wide range of highlevel constructs including data structures, higherorder functional programming, concurrent control structures, and objects. Moreover ..."
Abstract

Cited by 251 (8 self)
 Add to MetaCart
The πcalculus offers an attractive basis for concurrent programming. It is small, elegant, and well studied, and supports (via simple encodings) a wide range of highlevel constructs including data structures, higherorder functional programming, concurrent control structures, and objects. Moreover, familiar type systems for the calculus have direct counterparts in the πcalculus, yielding strong, static typing for a highlevel language using the πcalculus as its core. This paper describes Pict, a stronglytyped concurrent programming language constructed in terms of an explicitlytypedcalculus core language.
A Tutorial on (Co)Algebras and (Co)Induction
 EATCS Bulletin
, 1997
"... . Algebraic structures which are generated by a collection of constructors like natural numbers (generated by a zero and a successor) or finite lists and trees are of wellestablished importance in computer science. Formally, they are initial algebras. Induction is used both as a definition pr ..."
Abstract

Cited by 228 (34 self)
 Add to MetaCart
. Algebraic structures which are generated by a collection of constructors like natural numbers (generated by a zero and a successor) or finite lists and trees are of wellestablished importance in computer science. Formally, they are initial algebras. Induction is used both as a definition principle, and as a proof principle for such structures. But there are also important dual "coalgebraic" structures, which do not come equipped with constructor operations but with what are sometimes called "destructor" operations (also called observers, accessors, transition maps, or mutators). Spaces of infinite data (including, for example, infinite lists, and nonwellfounded sets) are generally of this kind. In general, dynamical systems with a hidden, blackbox state space, to which a user only has limited access via specified (observer or mutator) operations, are coalgebras of various kinds. Such coalgebraic systems are common in computer science. And "coinduction" is the appropriate te...
Comparing object encodings
 Journal of Functional Programming, 16:375 – 414
, 2006
"... Recent years have seen the development of several foundational models for statically typed objectoriented programming. But despite their intuitive similarity, di erences in the technical machinery used to formulate the various proposals have made them di cult to compare. Using the typed lambdacalc ..."
Abstract

Cited by 119 (3 self)
 Add to MetaCart
Recent years have seen the development of several foundational models for statically typed objectoriented programming. But despite their intuitive similarity, di erences in the technical machinery used to formulate the various proposals have made them di cult to compare. Using the typed lambdacalculus F! as a common basis, we nowo er a detailed comparison of four models: (1) a recursiverecord encoding similar to the ones used by Cardelli [Car84],
A theory of primitive objects: Untyped and firstorder systems
 In Proc. TACS’94, Theoretical Aspects of Computing Sofware
, 1994
"... We introduce simple object calculi that support method override and object subsumption. We give an untyped calculus, typing rules, and equational rules. We illustrate the expressiveness of our calculi and the pitfalls that we avoid. 1. ..."
Abstract

Cited by 78 (11 self)
 Add to MetaCart
We introduce simple object calculi that support method override and object subsumption. We give an untyped calculus, typing rules, and equational rules. We illustrate the expressiveness of our calculi and the pitfalls that we avoid. 1.
Objects and Classes, Coalgebraically
 ObjectOrientation with Parallelism and Persistence
, 1995
"... The coalgebraic perspective on objects and classes in objectoriented programming is elaborated: objects consist of a (unique) identifier, a local state, and a collection of methods described as a coalgebra; classes are coalgebraic (behavioural) specifications of objects. The creation of a "new" o ..."
Abstract

Cited by 68 (17 self)
 Add to MetaCart
The coalgebraic perspective on objects and classes in objectoriented programming is elaborated: objects consist of a (unique) identifier, a local state, and a collection of methods described as a coalgebra; classes are coalgebraic (behavioural) specifications of objects. The creation of a "new" object of a class is described in terms of the terminal coalgebra satisfying the specification. We present a notion of "totally specified" class, which leads to particularly simple terminal coalgebras. We further describe local and global operational semantics for objects. Associated with the local operational semantics is a notion of bisimulation (for objects belonging to the same class), expressing observational indistinguishability. AMS Subject Classification (1991): 18C10, 03G30 CR Subject Classification (1991): D.1.5, D.2.1, E.1, F.1.1, F.3.0 Keywords & Phrases: object, class, (terminal) coalgebra, coalgebraic specification, bisimulation 1. Introduction Within the objectoriente...
An Interpretation of Objects and Object Types
, 1996
"... We present an interpretation of typed objectoriented concepts in terms of wellunderstood, purely procedural concepts. More precisely, we give a compositional subtypepreserving translation of a basic object calculus supporting method invocation, functional method update, and subtyping, into the pol ..."
Abstract

Cited by 51 (1 self)
 Add to MetaCart
We present an interpretation of typed objectoriented concepts in terms of wellunderstood, purely procedural concepts. More precisely, we give a compositional subtypepreserving translation of a basic object calculus supporting method invocation, functional method update, and subtyping, into the polymorphic calculus with recursive types and subtyping. The translation techniques apply also to an imperative version of the object calculus which includes inplace method update and object cloning. Finally, the translation easily extends to "Self types" and other interesting objectoriented constructs. 1 Introduction Objectoriented programming languages have introduced numerous ideas, structures, and techniques. Although these contributions are not always conceptually clear (or even sound), they are often original and useful. One of the most basic contributions is the notion of self; the operations associated with an object (its methods) can refer to the object as self, and invoke other op...
Positive Subtyping
 Information and Computation
, 1994
"... The statement S T in a calculus with subtyping is traditionally interpreted as a semantic coercion function of type [[S]]![[T ]] that extracts the "T part" of an element of S. If the subtyping relation is restricted to covariant positions, this interpretation may be enriched to include both the ..."
Abstract

Cited by 51 (8 self)
 Add to MetaCart
The statement S T in a calculus with subtyping is traditionally interpreted as a semantic coercion function of type [[S]]![[T ]] that extracts the "T part" of an element of S. If the subtyping relation is restricted to covariant positions, this interpretation may be enriched to include both the coercion and an overwriting function put[S; T ] 2 [[S]]![[T ]]![[S]] that updates the T part of an element of S.
On subtyping and matching
 In Proceedings ECOOP '95
, 1995
"... Abstract. A relation between recursive object types, called matching, has been proposed as a generalization of subtyping. Unlike subtyping, matching does not support subsumption, but it does support inheritance of binary methods. We argue that matching is a good idea, but that it should not be regar ..."
Abstract

Cited by 45 (3 self)
 Add to MetaCart
Abstract. A relation between recursive object types, called matching, has been proposed as a generalization of subtyping. Unlike subtyping, matching does not support subsumption, but it does support inheritance of binary methods. We argue that matching is a good idea, but that it should not be regarded as a form of Fbounded subtyping (as was originally intended). We show that a new interpretation of matching as higherorder subtyping has better properties. Matching turns out to be a thirdorder construction, possibly the only one to have been proposed for general use in programming.
Intersection Types and Bounded Polymorphism
, 1996
"... this paper (Compagnoni, Intersection Types and Bounded Polymorphism 3 1994; Compagnoni, 1995) has been used in a typetheoretic model of objectoriented multiple inheritance (Compagnoni & Pierce, 1996). Related calculi combining restricted forms of intersection types with higherorder polymorphism ..."
Abstract

Cited by 36 (0 self)
 Add to MetaCart
this paper (Compagnoni, Intersection Types and Bounded Polymorphism 3 1994; Compagnoni, 1995) has been used in a typetheoretic model of objectoriented multiple inheritance (Compagnoni & Pierce, 1996). Related calculi combining restricted forms of intersection types with higherorder polymorphism and dependent types have been studied by Pfenning (Pfenning, 1993). Following a more detailed discussion of the pure systems of intersections and bounded quantification (Section 2), we describe, in Section 3, a typed calculus called F ("Fmeet ") integrating the features of both. Section 4 gives some examples illustrating this system's expressive power. Section 5 presents the main results of the paper: a prooftheoretic analysis of F 's subtyping and typechecking relations leading to algorithms for checking subtyping and for synthesizing minimal types for terms. Section 6 discusses semantic aspects of the calculus, obtaining a simple soundness proof for the typing rules by interpreting types as partial equivalence relations; however, another prooftheoretic result, the nonexistence of least upper bounds for arbitrary pairs of types, implies that typed models may be more difficult to construct. Section 7 offers concluding remarks. 2. Background
Representing Java Classes in a Typed Intermediate Language
, 1999
"... We propose a conservative extension of the polymorphic lambda calculus (F ! ) as an intermediate language for compiling languages with namebased class and interface hierarchies. Our extension enriches standard F ! with recursive types, existential types, and row polymorphism, but only ordered r ..."
Abstract

Cited by 32 (8 self)
 Add to MetaCart
We propose a conservative extension of the polymorphic lambda calculus (F ! ) as an intermediate language for compiling languages with namebased class and interface hierarchies. Our extension enriches standard F ! with recursive types, existential types, and row polymorphism, but only ordered records with no subtyping. Basing our language on F ! makes it also a suitable target for translation from other higherorder languages; this enables the safe interoperation between classbased and higherorder languages and the reuse of common typedirected optimization techniques, compiler back ends, and runtime support. We present the formal semantics of our intermediate language and illustrate its features by providing a formal translation from a subset of Java, including classes, interfaces, and private instance variables. The translation preserves the namebased hierarchical relation between Java classes and interfaces, and allows access to private instance variables of parameters of ...