Abstract. We adopt the untyped imperative object calculus of Abadi and Cardelli as a minimal setting in which to study problems of compilation and program equivalence that arise when compiling object-oriented languages. Our main result is a direct proof, via a small-step unloading machine. Our second result is that contextual equivalence of objects coincides with a form of Mason and Talcott's CIU equivalence; the latter provides a tractable means of establishing operational equivalences. Finally, we prove correct an algorithm, used in our prototype compiler, for statically resolving method offsets. This is the first study of correctness of an object-oriented abstract machine, and of CIU equivalence for an object-oriented language. 1
|
795
|
A Theory of Objects
– Abadi, Cardelli
- 1996
|
|
565
|
Notions of computation and monads
– Moggi
- 1991
|
|
556
|
Structure and interpretation of computer programs
– Abelson, Sussman, et al.
- 1996
|
|
410
|
A language with distributed scope
– Cardelli
- 1995
|
|
257
|
The mechanical evaluation of expressions
– Landin
- 1964
|
|
168
|
A foundation for actor computation
– Agha, Smith, et al.
- 1997
|
|
147
|
A Basis for a Mathematical Theory of Computation
– McCarthy
- 1963
|
|
132
|
The Java Virtual Machine Specification. The Java Series
– Lindholm, Yellin
- 1997
|
|
131
|
Call-by-name, call-by-value, and the lambda calculus
– Plotkin
- 1975
|
|
130
|
The Design and Implementation of the SELF Compiler, an Optimizing Compiler for Object-Oriented Programming Languages
– Chambers
- 1992
|
|
126
|
Lambda-Calculus Models of Programming Languages
– Morris
- 1968
|
|
125
|
A logic of object-oriented programs
– Abadi, Leino
- 1997
|
|
109
|
Functional Programming and Input/Output
– Gordon
- 1994
|
|
91
|
Control operators, the SECD machine, and the -calculus
– Felleisen, Friedman
- 1986
|
|
89
|
Equivalence in functional languages with effects
– Mason, Talcott
- 1991
|
|
89
|
Proving congruence of bisimulation in functional programming languages
– Howe
- 1996
|
|
88
|
The Zinc experiment: an economical implementation of the ML language
– Leroy
- 1990
|
|
86
|
Towards fully abstract semantics for local variables: Preliminary report
– Meyer, Sieber
- 1988
|
|
62
|
A compilation method for ML-style polymorphic record calculi
– Ohori
- 1992
|
|
50
|
From operational semantics to abstract machines
– Hannan, Miller
- 1992
|
|
48
|
A variable typed logic of effects
– Honsell, Mason, et al.
- 1995
|
|
48
|
Deriving a Lazy Abstract Machine
– Sestoft
- 1997
|
|
46
|
An imperative object calculus
– Abadi, Cardelli
- 1995
|
|
36
|
Bisimilarity for a first-order calculus of objects with subtyping
– Gordon, Rees
- 1996
|
|
34
|
Accommodating Interference in the formal design of concurrent objectbased programs
– Jones
- 1996
|
|
29
|
An imperative object calculus. Theory and Practice of Object Systems
– Abadi, Cardelli
- 1996
|
|
29
|
An interpretation of typed objects into typed -calculus
– Sangiorgi
- 1996
|
|
26
|
References, local variables and operational reasoning
– Mason, Talcott
- 1992
|
|
22
|
Operational equivalences for untyped and polymorphic object calculi
– Gordon
- 1998
|
|
14
|
The VLISP verified scheme system
– Guttman, Swarup, et al.
- 1995
|
|
13
|
Atype-theoretic account of Standard ML
– Harper, Stone
- 1996
|
|
12
|
Objects as mobile processes
– Huttel, Kleist
- 1996
|
|
12
|
Reasoning about functions with effects
– Talcott
- 1996
|
|
11
|
An imperative object calculus: Basic typing and soundness
– Abadi, Cardelli
- 1995
|
|
11
|
Notes on the domain interpretation of type theory
– Martin-Lof
- 1983
|
|
8
|
Functional back-ends and compilers within the lambda-sigma calculus
– Hardin, Maranget, et al.
- 1996
|
|
8
|
Compiler correctness for parallel languages
– Wand
- 1995
|
|
7
|
equations, relations: practical ways to reason about new
– Names
- 1998
|
|
4
|
Proving compiler correctness by bisimulation
– Rittri
- 1990
|
|
3
|
Reasoning about object systems
– Mason, Talcott
- 1994
|
|
1
|
An operational approach to the V-calculus
– Andersen, Pedersen
- 1996
|
|
1
|
Object types and modal formulae
– Andersen, Pedersen, et al.
- 1997
|
|
1
|
Programming languages and lambda calculi. URL:http://www.cs.rice.edu/ matthias/411web/mono.ps. Unpublished course notes
– Felleisen
- 1995
|
|
1
|
Natural semantics. In K. Fuchi and M. Nivat (Eds.), Programming of Future Generation Computers
– Kahn
- 1988
|