{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:22Z","timestamp":1779836722703,"version":"3.53.1"},"reference-count":0,"publisher":"Cambridge University Press (CUP)","issue":"4","license":[{"start":{"date-parts":[[1999,7,1]],"date-time":"1999-07-01T00:00:00Z","timestamp":930787200000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[1999,7]]},"abstract":"<jats:p>We adopt the untyped imperative object calculus of Abadi and Cardelli as a minimal \nsetting in which to study problems of compilation and program equivalence that arise when \ncompiling 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 \nequivalence of our substitution-based semantics with a closure-based semantics like that given \nby Abadi and Cardelli. Our third result is a direct proof of the correctness of compilation to \na stack-based abstract machine via a small-step decompilation algorithm. Our fourth result \nis that contextual equivalence of objects coincides with a form of Mason and Talcott's CIU \nequivalence; the latter provides a tractable means of establishing operational equivalences. \nFinally, we prove correct an algorithm, used in our prototype compiler, for statically resolving \nmethod offsets. This is the first study of correctness of an object-oriented abstract machine, \nand of operational equivalence for the imperative object calculus.<\/jats:p>","DOI":"10.1017\/s0956796899003482","type":"journal-article","created":{"date-parts":[[2002,7,27]],"date-time":"2002-07-27T09:26:15Z","timestamp":1027761975000},"page":"373-426","source":"Crossref","is-referenced-by-count":9,"title":["Compilation and equivalence of imperative objects"],"prefix":"10.1017","volume":"9","author":[{"given":"ANDREW D.","family":"GORDON","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"PAUL D.","family":"HANKIN","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"S\u00d8REN B.","family":"LASSEN","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[1999,7,1]]},"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796899003482","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:35:31Z","timestamp":1779834931000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796899003482\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1999,7]]},"references-count":0,"journal-issue":{"issue":"4","published-print":{"date-parts":[[1999,7]]}},"alternative-id":["S0956796899003482"],"URL":"https:\/\/doi.org\/10.1017\/s0956796899003482","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[1999,7]]}}}