{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,1]],"date-time":"2026-04-01T14:10:05Z","timestamp":1775052605994,"version":"3.50.1"},"reference-count":18,"publisher":"Cambridge University Press (CUP)","issue":"2","license":[{"start":{"date-parts":[[2009,3,4]],"date-time":"2009-03-04T00:00:00Z","timestamp":1236124800000},"content-version":"unspecified","delay-in-days":5025,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Math. Struct. Comp. Sci."],"published-print":{"date-parts":[[1995,6]]},"abstract":"<jats:p>The categorical dual construction of initial abstract data types is studied. The resulting terminal co-algebras represent not only an implementation independent semantics of infinite objects such as streams, but also a suitable formal basis for object types in the sense of the object-oriented programming paradigm. Instances of object types may be interpreted as abstract automata with several state transition functions representing the methods of an object, and several output functions representing the attributes. By structuring the index set of the possibly infinite family of methods, and by structuring the output set, one can specify specific object types. For dealing simultaneously with complex data types and object types, it is not necessary to live within a cartesian closed category. In ccc's there are standard functional constructions for object types, but object types are not necessarily a higher-order construction. A world of data types and object types may be combined with the Rewriting Logic of Meseguer to obtain a formal basis for concurrent object systems.<\/jats:p>","DOI":"10.1017\/s0960129500000694","type":"journal-article","created":{"date-parts":[[2009,3,4]],"date-time":"2009-03-04T04:00:54Z","timestamp":1236139254000},"page":"129-152","source":"Crossref","is-referenced-by-count":106,"title":["An approach to object semantics based on terminal co-algebras"],"prefix":"10.1017","volume":"5","author":[{"given":"Horst","family":"Reichel","sequence":"first","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2009,3,4]]},"reference":[{"key":"S0960129500000694_ref008","unstructured":"Hagino T. (1987) A categorical programming language, Ph.D. thesis, report CST\u201347\u201387, Edinburgh University."},{"key":"S0960129500000694_ref013","volume-title":"Communication and Concurrency","author":"Milner","year":"1989"},{"key":"S0960129500000694_ref003","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4899-0021-0"},{"key":"S0960129500000694_ref004","unstructured":"Cockett J. R. B. and Fukushima T. (1992) About Charity. (University of Calgary internal report)"},{"key":"S0960129500000694_ref007","unstructured":"Goguen J. A. , Winkler T. , Meseguer J. , Futatsugi K. and Jouannaud J.\u2013P. (1992) Introducing OBJ, SRI International, CSR Technical Report."},{"key":"S0960129500000694_ref005","volume-title":"International Meeting on Category Theory 1991","author":"Cockett","year":"1992"},{"key":"S0960129500000694_ref001","volume-title":"Automata and Algebras in Categories","author":"Adamek","year":"1989"},{"key":"S0960129500000694_ref006","doi-asserted-by":"publisher","DOI":"10.1017\/S0960129500001432"},{"key":"S0960129500000694_ref010","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4612-9839-7"},{"key":"S0960129500000694_ref009","doi-asserted-by":"crossref","unstructured":"Hudak P. , Jones S. P. and Wadler P. (eds.) (1991) Report on the Programming Language HASKELL. A non-strict, Purely Functional Language, Version 1.1, Final Draft.","DOI":"10.1145\/130697.130699"},{"key":"S0960129500000694_ref002","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(93)90076-6"},{"key":"S0960129500000694_ref011","doi-asserted-by":"crossref","unstructured":"Meseguer J. (1990) A logical theory of concurrent objects. In: ECOOP-OOPSLA '90 Conference on Object-Oriented Programming, Ottawa, Canada, October 1990, ACM 101\u2013115.","DOI":"10.1145\/97945.97958"},{"key":"S0960129500000694_ref014","volume-title":"ML for the Working Programmer","author":"Paulson","year":"1991"},{"key":"S0960129500000694_ref012","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0013826"},{"key":"S0960129500000694_ref018","volume-title":"Functional Programming Languages and Computer Architecture","author":"Turner","year":"1985"},{"key":"S0960129500000694_ref016","first-page":"186","article-title":"Three Approaches to Type Structure","volume":"1","author":"Reynolds","year":"1985","journal-title":"Springer-Verlag Lecture Notes in Computer Science"},{"key":"S0960129500000694_ref015","volume-title":"The RAISE Specification Language","year":"1992"},{"key":"S0960129500000694_ref017","volume-title":"Type Theory and Functional Programming","author":"Thompson","year":"1991"}],"container-title":["Mathematical Structures in Computer Science"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0960129500000694","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,5,13]],"date-time":"2019-05-13T17:43:31Z","timestamp":1557769411000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0960129500000694\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1995,6]]},"references-count":18,"journal-issue":{"issue":"2","published-print":{"date-parts":[[1995,6]]}},"alternative-id":["S0960129500000694"],"URL":"https:\/\/doi.org\/10.1017\/s0960129500000694","relation":{},"ISSN":["0960-1295","1469-8072"],"issn-type":[{"value":"0960-1295","type":"print"},{"value":"1469-8072","type":"electronic"}],"subject":[],"published":{"date-parts":[[1995,6]]}}}