{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,9,4]],"date-time":"2023-09-04T21:54:11Z","timestamp":1693864451312},"reference-count":0,"publisher":"Cambridge University Press (CUP)","issue":"2","license":[{"start":{"date-parts":[[2000,3,1]],"date-time":"2000-03-01T00:00:00Z","timestamp":951868800000},"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":[[2000,3]]},"abstract":"<jats:p>Researchers have recently proposed that for certain applications it is advantageous to use \nfunctional languages whose type systems are based upon linear logic: so-called <jats:italic>linear<\/jats:italic> \nfunctional languages. In this paper we develop reasoning techniques for programs in a linear \nfunctional language, <jats:styled-content style=\"e6\">linPCF<\/jats:styled-content>, based on their <jats:italic>operational<\/jats:italic> behaviour. The principal theorem \nof this paper is to show that contextual equivalence of <jats:styled-content style=\"e6\">linPCF<\/jats:styled-content> programs can be characterised \ncoinductively. This characterisation provides a tractable method for reasoning about \ncontextual equivalence, and is used in three ways:<\/jats:p><jats:p>[bull  ] A number of useful contextual equivalences between <jats:styled-content style=\"e6\">linPCF<\/jats:styled-content> programs is given.<\/jats:p><jats:p>[bull  ] A notion of type isomorphism with respect to contextual equivalence, called operational \nisomorphism, is given. In particular the types !\u03d5[otimes  ]!\u03c8 and !(\u03d5&amp;\u03c8) are proved to be \noperationally isomorphic.<\/jats:p><jats:p>[bull  ] A translation of non-strict <jats:styled-content style=\"e6\">PCF<\/jats:styled-content> into <jats:styled-content style=\"e6\">linPCF<\/jats:styled-content> is shown to be adequate, but not fully abstract, \nwith respect to contextual equivalence.<\/jats:p>","DOI":"10.1017\/s0956796899003639","type":"journal-article","created":{"date-parts":[[2002,7,27]],"date-time":"2002-07-27T09:29:39Z","timestamp":1027762179000},"page":"167-190","source":"Crossref","is-referenced-by-count":11,"title":["Program equivalence in a linear functional language"],"prefix":"10.1017","volume":"10","author":[{"given":"G. M.","family":"BIERMAN","sequence":"first","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2000,3,1]]},"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796899003639","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,3,31]],"date-time":"2019-03-31T14:49:32Z","timestamp":1554043772000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796899003639\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2000,3]]},"references-count":0,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2000,3]]}},"alternative-id":["S0956796899003639"],"URL":"https:\/\/doi.org\/10.1017\/s0956796899003639","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2000,3]]}}}