| S. Kamin. Inheritance in Smalltalk-80: a denotational definition. In Proceedings 15th ACM Symposium on Principles of Programming Languages, pages 80--87, 1988. |
....the subtyping properties of the source languages. The first contributions to this research date back to Cardelli and Cook s important early work [Coo87, Coo89a, Car88] on the generator model, and to Kamin s interpretation of objects as records of functions (the selfapplication semantics of [Kam88]) Refined formulations of the generator model were later proposed by Bruce in [Bru94] to give direct interpretations for class based object calculi. A number of type theoretic encodings for the so called object based calculi have then been formulated by Pierce and Turner [PT94] and Abadi, ....
....standard, and given in Fig. 7.2 below. The relation ; of evaluation is the transitive and reflexive closure generated by ; 7.3 Encoding of Extensible Objects and Types 7.3. 1 Overview The translation of Ob into F : is best understood as a refinement of the self application semantics of [Kam88]. In this semantics, methods are functions of the self parameter, objects are records of such functions, and method invocation is field selection plus self application. While this interpretation provides a satisfactory explanation of the untyped semantics of the source calculus, it does not extend ....
S. Kamin. Inheritance in Smalltalk-80: a denotational definition. In Proc. of POPL'88, pages 80--87. ACM Press, 1988.
....or functional programming is motivated by the desire to give sound and formal foundations to object oriented languages and their specific constructs and techniques. The research in this area initiated with Cook s work [Coo87,Coo89] on the generator model, and Kamin s self application semantics [Kam88]. Refined formulations of the generator model were later proposed by Bruce [Bru94] to give interpretations of class based object calculi. A number of encodings for object based calculi have then been formulated by Pierce and Turner [PT94] Abadi, Cardelli and Viswanathan [AC96,ACV96,Vis98] Bruce, ....
S. Kamin. Inheritance in Smalltalk-80: a denotational definition. In Proc. of POPL'88, pages 80--87. ACM Press, 1988.
....4.3. Finally, section 4.4 covers linking. Many aspects of the translation are mutually dependent, but we believe this ordering yields a reasonably coherent explanation. 4. 1 Object encoding The standard explanation of method invocation in terms of records and fields is called self application [17]. In a class based language, the object record contains values for all the fields plus a pointer to a record of methods, called the vtable. The vtable is created once and shared among all objects of the same class. The methods in the vtable expect the object itself as an argument. Suppose class ....
Samuel Kamin. Inheritance in Smalltalk-80: A denotational definition. In Proc.ACMSymp.onPrinciples of Programming Languages (POPL),pages80--87, San Diego, January 1988. ACM.
....of the model of inheritance introduced here. Thus the inheritance model presented here explains the presence of Cardelli s subtype relation, while subtyping alone is insu#cient to explain inheritance. The first full denotational semantics of a language with inheritance was presented by Kamin [14] almost twenty years after the concept was introduced. This unusually long delay is an indication of the novelty of inheritance and its incompatibility with traditional techniques in denotational semantics. No other complete denotational semantics exists for a language with inheritance, though ....
....a transformation on class generators. The shift to explicit generators is significant, for previous attempts to use standard semantics without explicit generators to analyze inheritance in object oriented languages have required the use of syntactic valuations [31] non compositional denotations [14], or significant restrictions on the language [22] 6.1 Abstract Syntax The abstract syntax of the simple inheritance language is given in Table 6.1. Declarations are assumed to be mutually recursive. However, in the variable declaration var I= E, which creates a new storage cell containing the ....
[Article contains additional citation context not shown here]
S. Kamin. Inheritance in Smalltalk-80: A denotational definition. In Proc. of the ACM Symp. on Principles of Programming Languages, pages 80--87. ACM, 1988.
....model, such as TLA [65] UNITY [76] or various forms of process algebra [53, 75] Inheritance, as a means for modular system design, has been a subject of extensive research for decades. Many researchers employed formal methods to define various inheritance constructs and study their properties [2, 16, 28, 33, 49, 56, 70, 69, 79, 88, 87, 86, 13, 76, 48]. Our distinguishing contribution is a provision of a formal framework that allows simulation proofs to be constructed incrementally when inheritance is applied at two levels: specifi23 cation and algorithm. Thus, we extend the applicability of inheritance from the realm of incremental system ....
....and show how it can be used in conjunction with the specialization construct to achieve subclassing for extension; we then extend the proof reuse theory presented in Section 3.3 to this situation. Section 3. 5 compares our results with related work; it shows that, while many other works (e.g. [2, 16, 28, 33, 49, 56, 70, 69, 79, 88, 87, 86]) have dealt formally with inheritance, the distinguishing contribution of our approach is the provision of a formal framework for applying inheritance to both system modeling and system verification. Section 3.6 concludes this chapter. This chapter employs a simple running example to illustrate ....
[Article contains additional citation context not shown here]
Samuel Kamin. Inheritance in Smalltalk--80: A denotational definition. In Fifteenth Symposium on Principles of Programming Languages, pages 80--87, 1988.
....motivated by prior work on Scheme and ML models [22, 35, 85] The approach is fundamentally different from most of the previous work on the semantics of objects. Much of that work has focused on interpreting object systems and the underlying mechanisms via record extensions of lambda calculi [19, 41, 66, 58, 67] or as native object calculi (with a record flavor) 1, 2, 3] In our semantics, types are simply the names of entities declared in the program; the collection of types forms a dag, which is specified by the programmer. The collection of types is static during evaluation and is only used for ....
Kamin, S. Inheritance in smalltalk-80: a denotational definition. In Proc. ACM Symposium on Principles of Programming Languages, Janurary 1988.
....motivated by prior work on Scheme and ML models [14, 19, 30] The approach is fundamentally different from most of the previous work on the semantics of objects. Much of that work has focused on interpreting object systems and the underlying mechanisms via record extensions of lambda calculi [12, 20, 25, 23, 26] or as native object calculi (with a record flavor) 1 3] In our semantics, types are simply the names of entities declared in the program; the collection of types forms a dag, which is specified by the programmer. The collection of types is static during evaluation 4 and is only used for ....
Kamin, S. Inheritance in smalltalk-80: a denotational definition. In Proc. ACM Symposium on Principles of Programming Languages (Jan. 1988).
....x = pack [# e , ##m i = m i # i#I , x e #] as # in b Where x maps 1 1 to x e and all x e are unnamable in the source calculus. Figure 5: Typed Pierce and Turner Translation and e 1 .f # e 2 denotes field update. First, consider an encoding based on the self application semantics [Kam88] An untyped version of this translation appears in Figure 4. Ignoring typing, the interesting composed translation rules are: fix f(x 1 :# 1 ) # 2 .b = #apply = #(f, x 1 ) b y i : f.g i , g i = y i # where fv(b) f, x 1 = y i e 1 e 2 = let x = e 1 in ....
Samuel Kamin. Inheritance in smalltalk-80: A denotational definition. In 15th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 80--87, San Diego, CA, USA, January 1988.
....proven useful for type inference as well as for type checking [Gra89] 6 Type Safety A type system can only be shown correct relative to a formal definition of the language. This section outlines a proof of correctness for the type system relative to Kamin s denotational semantics of Smalltalk [Kam88]. aLookupKey aLookupKey isLookupKey ifTrue: self key = aLookupKey key] ifFalse: false] Figure 11: equality) in class LookupKey. Usually a type is described as a set of objects. Type safety then means that the value of an expression is always contained in its type. However, our types ....
Samuel Kamin. Inheritance in Smalltalk80: A denotational definition. In Conference Record of the Fifteenth Annual ACM Symposium on Principles of Programming Languages, pages 80--87, 1988.
....and Message Passing Many semantics of OO languages have appeared in the literature. See Abadi and Cardelli s book [1] and Castagna s book [9] for surveys. Since we are concerned with client code, we can largely avoid the knotty semantical problems of modeling inheritance (see, for example [3, 15, 16, 28]) Instead, we focus on the semantics of objects and message passing from the client s point of view. Our aim is to relate the semantics of client expressions in class based singledispatching languages to those in multiple dispatching languages. We start with the class based single dispatching ....
....) This object is called self in Smalltalk, and this in Java. It is also called the implicit or default argument of a method. A method obtains access to self in one of two ways [1, Section 6. 7] ffl Methods can be constructed as fixpoints of premethods (functionals that take self as an argument) [16, 15, 28], which builds in self. ffl Methods can be explicitly passed self as the method s first argument when called [43] 3 These two variations turn out to be equivalent [5] although the first variation has problems in explaining method update [1, Section 6.7.2] For our purposes the second ....
Samuel Kamin. Inheritance in smalltalk-80: A denotational definition. In Conference Record of the Fifteenth Annual ACM Symposium on Principles of Programming Languages, San Diego, Calif., pages 80--87. ACM, January 1988.
....definition mapping. Program = ClassMap ClassMap = ClassName m Gamma ClassBody ClassName : Id There is also no main expression , a technique used to represent a starting point for the program code, and which can been found in papers describing the semantics of such a language [Nor88, Kam88] In the context of code analysis, such a technique loses its importance, and a more truthful notion of a program a collection of methods with no predetermined flow of execution can be appreciated. Ultimately the lack of a starting point is dealt with by processing the program repeatedly ....
Samuel Kamin. Inheritance in Smalltalk-80: a denotational definition. In Proceedings of the Fifteenth ACM Symposium on the Principles of Programming Languages, pages 80--87, San Diego, California, January 1988.
....such reasoning. However, they only address informal reasoning and do not provide the mathematical foundation for formal proofs. Furthermore, 36] is restricted to the context of sequential programming and does not encompass reactive components as we do in this paper. Many other works, e.g. [1, 6, 10, 23, 25, 33], have formally dealt with inheritance and its semantics. Our distinguishing contribution is the provision of a mathematical framework for incremental construction of simulation proofs by applying the formal notion of inheritance at two levels: specification and algorithm. 2 TECHNICAL BACKGROUND ....
S. Kamin. Inheritance in Smalltalk--80: A denotational definition. 15th Symp. on Principles of Programming Languages, pp. 80--87, 1988.
....the object calculi back into a functional calculi via an object encoding. The notation # # f = e# denotes a record with fields # f and values #e, e.f denotes field projection, and e 1 .f # e 2 denotes field update. First, consider an encoding based on the self application semantics [Kam88] Ignoring typing, the interesting composed translation rules are: fix f(x 1 :# 1 ) # 2 .b = #apply = #(f, x 1 ) b y i : f.g i , g i = y i # where fv(b) f, x 1 = y i e 1 e 2 = let x = e 1 in x.apply(x, e 2 ) These rules are just functional closure ....
Samuel Kamin. Inheritance in smalltalk-80: A denotational definition. In 15th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 80--87, San Diego, CA, USA, January 1988.
....Object Z class construct. Not only does this simplify the semantic domains, but the semantics of a programming language can be readily extended when the language is enhanced. The denotational semantics of object oriented programming languages has been studied and developed. Wolczko[28] and Kamin[19] presented denotational semantics of the Smalltalk programming language. The denotational semantics of inheritance has been investigated by Cook and Palsberg[5] based on Cardelli s work[4] Others [17, 22] have also contributed to the research work on the semantics of OOPLs. The denotational ....
Samuel Kamin. Inheritance in Smalltalk--80: A denotational definition. In Fifteenth Symposium on Principles of Programming Languages, pages 80--87, 1988.
....motivated by prior work on Scheme and ML models [22, 35, 85] The approach is fundamentally different from most of the previous work on the semantics of objects. Much of that work has focused on interpreting object systems and the underlying mechanisms via record extensions of lambda calculi [19, 41, 66, 58, 67] or as native object calculi (with a record flavor) 1, 2, 3] In our semantics, types are simply the names of entities declared in the program; the collection of types forms a dag, which is specified by the programmer. The collection of types is static during evaluation 3 and is only used for ....
Kamin, S. Inheritance in smalltalk-80: a denotational definition. In Proc. ACM Symposium on Principles of Programming Languages, Janurary 1988.
....oid occurring in a molecule of G is typed by a type expression occurring in G. 3 Programming Examples In this section, we describe the informal semantics of the language by means of two simple examples. The first is a classical example of object oriented programming which we borrow and adapt from [14, 19]. For reasons of notational convenience, we adopt the conventional syntax for clauses and we use logical variables in place of quantified variables. Example 1. The following program fragment defines the type point, with its signatures, methods and values. The structure of each point is defined by ....
S. Kamin. Inheritance in smalltalk-80: a denotational definition. In Proceedings of the ACM Int. Conf. on Principles of Programming Languages, pages 80--87, 1988.
....the integrity of subobjects. In CLOS[34] and related systems[1, 23, 14] linearization of the inheritance hierarchy results in a collapsing of same named methods and instance variables; in some sense, they support only shared base classes. Formal semantic models of single inheritance languages [19, 26, 10, 9] are so deeply reliant on there being a single base class that they do not scale up into multiple inheritance. Formal models of multiple inheritance have arisen in the study of type systems for object oriented languages[3, 4, 5, 25, 8] Because these models treat objects as records, an object may ....
KAMIN, S. Inheritance in SMALLTALK-80: A denotational definition. In Proceedings POPL '88 (1988), pp. 80--87.
....removed or initiating processes within objects. Mutable components must be realized by binding the component name to a cell and performing the necessary changes on the cell. To illustrate how we might use customized tuple spaces to build inheritance systems, we consider an example discussed in [9, 16]. A circle is a sub class of a point . Point defines instance variables x and y to specify its location. It also defines two methods: DistfromOrig computes the distance of a point from its origin and ClosertoOrig is a predicate which given another point object as its argument returns true if its ....
Samuel Kamin. Inheritance in Smalltalk-80: A Denotational Definition. In 15 th ACM Symposium on Principles of Programming Languages, pages 80--87, 1988.
....record 1 r record 2 j record[label 1 label 2 ] label list : label j label label list def list : nonempty def list j empty nonempty def list : def j def; nonempty def list def : label = expr 5.1. 3 Inheritance This subsection discusses the denotational semantics of inheritance [34, 59, 18]. Inheritance provides a way of modifying self referential structures [18] When a value is modified via inheritance, all self reference within the result refers to the modified value. Inheritance involves manipulating the self reference within objects. Technically, this is achieved by ....
Kamin, S. Inheritance in Smalltalk-80: A denotational definition. In Proc. of the ACM Symp. on Principles of Programming Languages. Association for Computing Machinery, 1988, pp. 80--87.
.... ) a ff However, inh(A; ax) in : inh(J; H; I; jx) in I:dyn(vg) I G inh(A; ax) in : inh(J; H; I; jx) in I:dyn(vg) dyn(vf ) I IF inh(A; ax) in : inh(J; H; I; jx) in I:dyn(vg) dyn(vf ) stat(h) I IFB 8 Related Work The models of inheritance developed by Kamin[9], Reddy[12] and Cook and Palsberg[7, 6] laid the foundations for formal models of inheritance. While some of these mention the desire to model multiple inheritance, there is no comprehensive model proposed. Multiple inheritance introduces many design issues that have never been given a fully ....
Kamin, S. Inheritance in smalltalk-80: A denotational definition. In Proceedings POPL '88 (1988), pp. 80--87.
....motivated by prior work on Scheme and ML models [13, 19, 29] The approach is fundamentally different from most of the previous work on the semantics of objects. Much of that work has focused on interpreting object systems and the underlying mechanisms via record extensions of lambda calculi [11, 20, 24, 23, 25] or as native object calculi (with a record flavor) 1, 2, 3] In our semantics, types are simply the names of entities declared in the program; the collection of types forms a dag, which is specified by the programmer. The collection of types is static during evaluation 3 and is only used for ....
Kamin, S. Inheritance in smalltalk-80: a denotational definition. In Proc. Conference on Principles of Programming Languages (Jan. 1988).
No context found.
S. Kamin. Inheritance in Smalltalk-80: a denotational definition. In Proceedings 15th ACM Symposium on Principles of Programming Languages, pages 80--87, 1988.
No context found.
S. Kamin. Inheritance in Smalltalk-80: a denotational definition. In Proc. of POPL'88, pages 80--87. ACM Press, 1988.
No context found.
S. Kamin. Inheritance in Smalltalk--80: A denotational definition. 15th Symp. on Principles of Programming Languages, pp. 80--87, 1988.
No context found.
S. Kamin. Inheritance in Smalltalk 80: A denotational definition. In Proceedings of the ACM SIGPLAN Principles of Programming Languages (POPL '88), pages 80--87, 1988.
First 50 documents
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC