{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,18]],"date-time":"2025-11-18T20:47:32Z","timestamp":1763498852771},"reference-count":18,"publisher":"Wiley","issue":"9","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":4077,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1995,9]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>We have designed and implemented a type inference algorithm for the S<jats:sc>ELF<\/jats:sc> language. The algorithm can guarantee the safety and disambiguity of message sends, and provide useful information for browsers and optimizing compilers.<\/jats:p><jats:p>S<jats:sc>ELF<\/jats:sc> features objects with dynamic inheritance. This construct has until now been considered incompatible with type inference because it allows the inheritance graph to change dynamically. Our algorithm handles this by deriving and solving type constraints that simultaneously define supersets of both the possible values of expressions and of the possible inheritance graphs. The apparent circularity is resolved by computing a global fixed\u2010point, in polynomial time.<\/jats:p><jats:p>The algorithm has been implemented and can successfully handle the S<jats:sc>ELF<\/jats:sc> benchmark programs, which exist in the \u2018standard S<jats:sc>ELF<\/jats:sc> world\u2019 of more than 40,000 lines of code.<\/jats:p>","DOI":"10.1002\/spe.4380250903","type":"journal-article","created":{"date-parts":[[2006,11,17]],"date-time":"2006-11-17T18:10:33Z","timestamp":1163787033000},"page":"975-995","source":"Crossref","is-referenced-by-count":17,"title":["Type inference of SELF: Analysis of objects with dynamic and multiple inheritance"],"prefix":"10.1002","volume":"25","author":[{"given":"Ole","family":"Agesen","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jens","family":"Palsberg","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Michael I.","family":"Schwartzbach","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_2","doi-asserted-by":"crossref","unstructured":"HenryLieberman \u2018Using prototypical objects to implement shared behavior in object\u2010oriented systems\u2019 Proc. OOPSLA \u203286 Object\u2010Oriented Programming Systems Languages and Applications. Sigplan Notices21(11) 214\u2013223(1986).","DOI":"10.1145\/960112.28718"},{"key":"e_1_2_1_3_2","unstructured":"Alan H.Borning \u2018Classes versus prototypes in object\u2010oriented languages\u2019 ACM\/IEEE Fall Joint Computer Conference 1986 pp.36\u201340."},{"key":"e_1_2_1_4_2","doi-asserted-by":"crossref","unstructured":"DavidUngarandRandall B.Smith \u2018SELF: The power of simplicity\u2019 Proc. OOPSLA \u203287 Object\u2010Oriented Programming Systems. Languages and Applications 1987 pp.227\u2013241.","DOI":"10.1145\/38765.38828"},{"key":"e_1_2_1_4_3","volume-title":"Lisp and Symbolic Computation 4(3)","year":"1991"},{"key":"e_1_2_1_5_2","doi-asserted-by":"crossref","unstructured":"JensPalsbergandMichael I.Schwartzbach \u2018Object\u2010oriented type inference\u2019 Proc. OOPSLA \u203291 ACM SIGPLAN Sixth Annual Conference on Object\u2010Oriented Programming Systems Languages and Applications (Phoenix Arizona October 1991) pp.146\u2013161.","DOI":"10.1145\/118014.117965"},{"key":"e_1_2_1_6_2","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0053045"},{"key":"e_1_2_1_7_2","unstructured":"Justin OwenGraver \u2018Type\u2010checking and type\u2010inference for object\u2010oriented programming languages\u2019 PhD dissertation Department of Computer Science University of Illinois at Urbana\u2010Champaign August1989. UIUCD\u2010R\u201089\u20131539."},{"key":"e_1_2_1_8_2","first-page":"136","volume-title":"Seventeenth Symposium on Principles of Programming Languages, 1990","author":"Graver Justin O."},{"key":"e_1_2_1_9_2","volume-title":"Object\u2010Oriented Type Systems","author":"Palsberg Jens","year":"1994"},{"key":"e_1_2_1_10_2","volume-title":"Smalltalk\u201080 \u2014 The Language and its Implementation","author":"Goldberg Adele","year":"1983"},{"key":"e_1_2_1_11_2","doi-asserted-by":"crossref","first-page":"115","DOI":"10.3233\/FI-1987-10202","article-title":"A simple algorithm and proof for type inference","author":"Wand Mitchell","year":"1987","journal-title":"Fundamentae Informaticae"},{"key":"e_1_2_1_12_2","first-page":"441","volume-title":"Proc. TAPSOFT\u203291. Springer Lecture Notes in Computer Science 493","author":"Schwartzbach Michael I.","year":"1991"},{"key":"e_1_2_1_13_2","doi-asserted-by":"publisher","DOI":"10.1016\/0020-0190(92)90196-3"},{"key":"e_1_2_1_14_2","unstructured":"OleAgesen LarsBak CraigChambers Bay\u2010WeiChang UrsH\u00d6Lzle JohnMaloney Randall B.SmithandDavidUngar \u2018The SELF programmer's reference manual\u2019 Technical Report Sun Microsystems Inc 2550 Garcia Avenue Mountain View CA 94043 USA (1992). Version 2.0."},{"key":"e_1_2_1_15_2","first-page":"1","volume-title":"Proc. OOPSLA \u203291, ACM SIGPLAN Sixth Annual Conference on Object\u2010Oriented Programming Systems, Languages and Applications, 1991","author":"Chambers Craig"},{"key":"e_1_2_1_16_2","first-page":"236","volume-title":"Proc. CC\u203292, 4th International Conference on Compiler Construction, Paderborn, Germany. Springer Lecture Notes in Computer Science 641","author":"Vitek Jan","year":"1992"},{"key":"e_1_2_1_17_2","doi-asserted-by":"publisher","DOI":"10.1007\/BF01806106"},{"key":"e_1_2_1_18_2","first-page":"247","volume-title":"Proc. ECOOP\u203293, Seventh European Conference on Object\u2010Oriented Programming. Springer Lecture Notes in Computer Science 707","author":"Agesen Ole","year":"1993"}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380250903","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380250903","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,26]],"date-time":"2023-10-26T23:06:21Z","timestamp":1698361581000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380250903"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1995,9]]},"references-count":18,"journal-issue":{"issue":"9","published-print":{"date-parts":[[1995,9]]}},"alternative-id":["10.1002\/spe.4380250903"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380250903","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"value":"0038-0644","type":"print"},{"value":"1097-024X","type":"electronic"}],"subject":[],"published":{"date-parts":[[1995,9]]}}}