Structure and interpretation of computer programs
Structure and interpretation of computer programs
4th Annual Symposium on Theoretical Aspects of Computer Sciences on STACS 87
Towards fully abstract semantics for local variables
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A syntactic theory of sequential state
Theoretical Computer Science
Programming in Martin-Lo¨f's type theory: an introduction
Programming in Martin-Lo¨f's type theory: an introduction
Notions of computation and monads
Information and Computation
The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages
A compilation method for ML-style polymorphic record calculi
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Functional programming and input/output
Functional programming and input/output
Information and Computation
A variable typed logic of effects
Information and Computation
The VLISP verified Scheme system
Lisp and Symbolic Computation
Compiler correctness for parallel languages
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Proving congruence of bisimulation in functional programming languages
Information and Computation
Accommodating interference in the formal design of concurrent object-based programs
Formal Methods in System Design
Bisimilarity for a first-order calculus of objects with subtyping
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Analysis for concurrent objects
FMOODS '97 Proceedings of the IFIP TC6 WG6.1 international workshop on Formal methods for open object-based distributed systems
Higher order operational techniques in semantics
Higher order operational techniques in semantics
Operational equivalences for untyped and polymorphic object calculi
Higher order operational techniques in semantics
Operational reasoning for functions with local state
Higher order operational techniques in semantics
Reasoning about functions with effects
Higher order operational techniques in semantics
A Theory of Objects
The Definition of Standard ML
Flow Logic for Imperative Objects
MFCS '98 Proceedings of the 23rd International Symposium on Mathematical Foundations of Computer Science
Names, Equations, Relations: Practical Ways to Reason about new
TLCA '97 Proceedings of the Third International Conference on Typed Lambda Calculi and Applications
TAPSOFT '95 Proceedings of the 6th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
Compilation and Equivalence of Imperative Objects
Proceedings of the 17th Conference on Foundations of Software Technology and Theoretical Computer Science
Imperative objects and mobile processes
PROCOMET '98 Proceedings of the IFIP TC2/WG2.2,2.3 International Conference on Programming Concepts and Methods
Functional runtime systems within the lambda-sigma calculus
Journal of Functional Programming
Deriving a lazy abstract machine
Journal of Functional Programming
A foundation for actor computation
Journal of Functional Programming
Typing a multi-language intermediate code
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Simple Ownership Types for Object Containment
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Formal semantics and analysis of object queries
Proceedings of the 2003 ACM SIGMOD international conference on Management of data
Safe ambients: abstract machine and distributed implementation
Science of Computer Programming
Inter-deriving Semantic Artifacts for Object-Oriented Programming
WoLLIC '08 Proceedings of the 15th international workshop on Logic, Language, Information and Computation
Inter-deriving semantic artifacts for object-oriented programming
Journal of Computer and System Sciences
Hi-index | 0.00 |
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. We present both a big-step and a small-step substitution-based operational semantics for the calculus. Our first two results are theorems asserting the equivalence of our substitution-based semantics with a closure-based semantics like that given by Abadi and Cardelli. Our third result is a direct proof of the correctness of compilation to a stack-based abstract machine via a small-step decompilation algorithm. Our fourth 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 operational equivalence for the imperative object calculus.