{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,9,28]],"date-time":"2025-09-28T04:16:42Z","timestamp":1759033002887},"reference-count":23,"publisher":"Association for Computing Machinery (ACM)","issue":"2","content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2007,4]]},"abstract":"<jats:p>\n            We present a translation from\n            <jats:italic>Fickle<\/jats:italic>\n            , a small object-oriented language allowing objects to change their class at runtime, into Java. The translation is provenly correct in the sense that it preserves the static and dynamic semantics. Moreover, it is compatible with separate compilation, since the translation of a Fickle class does not depend on the implementation of used classes. Based on the formal system, we have developed an implementation.\n          <\/jats:p>\n          <jats:p>The translation turned out to be a more subtle problem than we expected. In this article, we discuss four possible approaches we considered for the design of the translation and to justify our choice, we present formally the translation and proof of preservation of the static and dynamic semantics, and discuss the prototype implementation. Moreover, we outline an alternative translation based on generics that avoids most of the casts (but not all) needed in the previous translation.<\/jats:p>\n          <jats:p>\n            The language Fickle has undergone and is still undergoing several phases of development. In this article we are discussing the translation of Fickle\n            <jats:sub>II<\/jats:sub>\n            .\n          <\/jats:p>","DOI":"10.1145\/1216374.1216381","type":"journal-article","created":{"date-parts":[[2007,6,6]],"date-time":"2007-06-06T14:37:11Z","timestamp":1181140631000},"page":"13","update-policy":"http:\/\/dx.doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":4,"title":["A provenly correct translation of Fickle into Java"],"prefix":"10.1145","volume":"29","author":[{"given":"D.","family":"Ancona","sequence":"first","affiliation":[{"name":"Universit\u00e0 di Genova, Genoa, Italy"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"C.","family":"Anderson","sequence":"additional","affiliation":[{"name":"Imperial College---London, London, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"F.","family":"Damiani","sequence":"additional","affiliation":[{"name":"Universit\u00e0 di Torino, Torino, Italy"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"S.","family":"Drossopoulou","sequence":"additional","affiliation":[{"name":"Imperial College---London, London, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"P.","family":"Giannini","sequence":"additional","affiliation":[{"name":"Universit\u00e0 del Piemonte Orientale, Alessandria, Italy"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"E.","family":"Zucca","sequence":"additional","affiliation":[{"name":"Universit\u00e0 di Genova, Genoa, Italy"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2007,4]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"Proceedings of the Italian Conference on Theoretical Computer Science. Lecture Notes in Computer Science","volume":"2202","author":"Ancona D.","unstructured":"Ancona , D. , Anderson , C. , Damiani , F. , Drossopoulou , S. , Giannini , P. , and Zucca , E . 2001. An effective translation of Fickle into Java (extended abstract) . In Proceedings of the Italian Conference on Theoretical Computer Science. Lecture Notes in Computer Science , vol. 2202 . Springer-Verleg 215--234. Ancona, D., Anderson, C., Damiani, F., Drossopoulou, S., Giannini, P., and Zucca, E. 2001. An effective translation of Fickle into Java (extended abstract). In Proceedings of the Italian Conference on Theoretical Computer Science. Lecture Notes in Computer Science, vol. 2202. Springer-Verleg 215--234."},{"key":"e_1_2_1_2_1","volume-title":"TOSCA'01","volume":"62","author":"Ancona D.","unstructured":"Ancona , D. , Anderson , C. , Damiani , F. , Drossopoulou , S. , Giannini , P. , and Zucca , E . 2002. A type preserving translation of Fickle into Java . In TOSCA'01 . Electronic Notes on Theoretical Computer Science , vol. 62 . Elsevier. Ancona, D., Anderson, C., Damiani, F., Drossopoulou, S., Giannini, P., and Zucca, E. 2002. A type preserving translation of Fickle into Java. In TOSCA'01. Electronic Notes on Theoretical Computer Science, vol. 62. Elsevier."},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/937563.937567"},{"key":"e_1_2_1_4_1","unstructured":"Anderson C. 2001. Implementing Fickle. Thesis Imperial College.  Anderson C. 2001. Implementing Fickle. Thesis Imperial College."},{"key":"e_1_2_1_5_1","unstructured":"Anderson C. 2003. Isabella-Fickle translator. http:\/\/www.macs.hw.ac.uk\/DART\/software\/isabella\/index.html.  Anderson C. 2003. Isabella-Fickle translator. http:\/\/www.macs.hw.ac.uk\/DART\/software\/isabella\/index.html."},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/263698.263721"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286957"},{"key":"e_1_2_1_8_1","series-title":"Lecture Notes in Computer Science","volume-title":"Proceedings of the ECOOP---European Conference on Object-Oriented Programming","author":"Chambers C.","unstructured":"Chambers , C. 1993. Predicate classes . In Proceedings of the ECOOP---European Conference on Object-Oriented Programming . Lecture Notes in Computer Science , vol. 707 . Springer Verlag . 268--296. Chambers, C. 1993. Predicate classes. In Proceedings of the ECOOP---European Conference on Object-Oriented Programming. Lecture Notes in Computer Science, vol. 707. Springer Verlag. 268--296."},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1133651.1133655"},{"key":"e_1_2_1_10_1","volume-title":"WCOP'01 (at ECOOP'01)","author":"Costanza P.","year":"2001","unstructured":"Costanza , P. 2001 . Dynamic object replacement and implementation-only classes . In WCOP'01 (at ECOOP'01) . http:\/\/www.cs.uni-bonn.de\/~costanza\/implementationonly.pdf. Costanza, P. 2001. Dynamic object replacement and implementation-only classes. In WCOP'01 (at ECOOP'01). http:\/\/www.cs.uni-bonn.de\/~costanza\/implementationonly.pdf."},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/967900.968163"},{"key":"e_1_2_1_12_1","series-title":"Lecture Notes in Computer Science","volume-title":"Fickle: Dynamic object re-classification. In Proceedings of the ECOOP---European Conference on Object-Oriented Programming","author":"Drossopoulou S.","year":"2001","unstructured":"Drossopoulou , S. , Damiani , F. , Dezani-Ciancaglini , M. , and Giannini , P . 2001 . Fickle: Dynamic object re-classification. In Proceedings of the ECOOP---European Conference on Object-Oriented Programming . Lecture Notes in Computer Science , vol. 2072 . Springer Verlag , 130--149. Drossopoulou, S., Damiani, F., Dezani-Ciancaglini, M., and Giannini, P. 2001. Fickle: Dynamic object re-classification. In Proceedings of the ECOOP---European Conference on Object-Oriented Programming. Lecture Notes in Computer Science, vol. 2072. Springer Verlag, 130--149."},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/514952.514955"},{"key":"e_1_2_1_14_1","volume-title":"Proceedings of the ECOOP - European Conference on Object-Oriented Programming. Lecture Notes in Computer Science","volume":"1445","author":"Ernst M. D.","unstructured":"Ernst , M. D. , Kaplan , C. , and Chambers , C . 1998. Predicate dispatching: A unified theory of dispatch . In Proceedings of the ECOOP - European Conference on Object-Oriented Programming. Lecture Notes in Computer Science , vol. 1445 . Springer Verlag, 186--211. Ernst, M. D., Kaplan, C., and Chambers, C. 1998. Predicate dispatching: A unified theory of dispatch. In Proceedings of the ECOOP - European Conference on Object-Oriented Programming. Lecture Notes in Computer Science, vol. 1445. Springer Verlag, 186--211."},{"key":"e_1_2_1_15_1","series-title":"Professional Computing Series","volume-title":"Design Patterns: Elements od Reusable Object-Oriented Software","author":"Gamma E.","year":"1995","unstructured":"Gamma , E. , Helm , R. , Johnson , R. , and Vlissides , J . 1995 . Design Patterns: Elements od Reusable Object-Oriented Software . Professional Computing Series . Addison-Wesley . Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements od Reusable Object-Oriented Software. Professional Computing Series. Addison-Wesley."},{"key":"e_1_2_1_16_1","volume-title":"Should superclasses be abstract&quest","author":"H\u00fcrsch W.","unstructured":"H\u00fcrsch , W. 1994. Should superclasses be abstract&quest ; In Proceedings of the ECOOP---European Conference on Object-Oriented Programming. Lecture Notes in Computer Science, vol. 821 . Springer Verlag , 12--31. H\u00fcrsch, W. 1994. Should superclasses be abstract&quest; In Proceedings of the ECOOP---European Conference on Object-Oriented Programming. Lecture Notes in Computer Science, vol. 821. Springer Verlag, 12--31."},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1006\/inco.2002.3092"},{"key":"e_1_2_1_18_1","unstructured":"Joy B. Gosling J. Steele G. and Bracha G. 2005. The Java Language Specification 3rd ed. Addison-Wesley.   Joy B. Gosling J. Steele G. and Bracha G. 2005. The Java Language Specification 3rd ed. Addison-Wesley."},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/504282.504298"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/263699.263715"},{"key":"e_1_2_1_21_1","volume-title":"Types and Programming Languages","author":"Pierce B. C.","unstructured":"Pierce , B. C. 2002. Types and Programming Languages . MIT Press , Cambridge, MA . Pierce, B. C. 2002. Types and Programming Languages. MIT Press, Cambridge, MA."},{"key":"e_1_2_1_22_1","series-title":"Lecture Notes in Computer Science","volume-title":"Proceedings of the ECOOP---European Conference on Object-Oriented Programming","author":"Serrano M.","unstructured":"Serrano , M. 1999. Wide classes . In Proceedings of the ECOOP---European Conference on Object-Oriented Programming . Lecture Notes in Computer Science , vol. 1628 , Springer Verlag , 391--415. Serrano, M. 1999. Wide classes. In Proceedings of the ECOOP---European Conference on Object-Oriented Programming. Lecture Notes in Computer Science, vol. 1628, Springer Verlag, 391--415."},{"key":"e_1_2_1_23_1","first-page":"27","article-title":"Object oriented programming with modes","volume":"6","author":"Taivalsaari A.","year":"1993","unstructured":"Taivalsaari , A. 1993 . Object oriented programming with modes . J. Obj. Oriented Program. 6 , 3, 27 -- 32 . Taivalsaari, A. 1993. Object oriented programming with modes. J. Obj. Oriented Program. 6, 3, 27--32.","journal-title":"J. Obj. Oriented Program."}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1216374.1216381","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T19:46:03Z","timestamp":1672256763000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1216374.1216381"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2007,4]]},"references-count":23,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2007,4]]}},"alternative-id":["10.1145\/1216374.1216381"],"URL":"https:\/\/doi.org\/10.1145\/1216374.1216381","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2007,4]]},"assertion":[{"value":"2007-04-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}