{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,19]],"date-time":"2026-06-19T18:14:53Z","timestamp":1781892893259,"version":"3.54.5"},"reference-count":27,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2008,5,1]],"date-time":"2008-05-01T00:00:00Z","timestamp":1209600000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2008,5]]},"abstract":"<jats:p>We present a new approach to the old problem of adding global mutable state to purely functional languages. Our idea is to extend the language with \u201cwitnesses,\u201d which is based on an arguably more pragmatic motivation than past approaches. We give a semantic condition for correctness and prove it is sufficient. We also give a somewhat surprising static checking algorithm that makes use of a network flow property equivalent to the semantic condition via reduction to a satisfaction problem for a system of linear inequalities.<\/jats:p>","DOI":"10.1145\/1353445.1353449","type":"journal-article","created":{"date-parts":[[2008,5,20]],"date-time":"2008-05-20T12:41:26Z","timestamp":1211287286000},"page":"1-42","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":6,"title":["Witnessing side effects"],"prefix":"10.1145","volume":"30","author":[{"given":"Tachio","family":"Terauchi","sequence":"first","affiliation":[{"name":"Tohoku University, Sendai, Japan"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Alex","family":"Aiken","sequence":"additional","affiliation":[{"name":"Stanford University, Stanford, CA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2008,5,21]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"Proceedings of the 1992 Glasgow Workshop on Functional Programming. Springer-Verlag","author":"Achten P."},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796897002724"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/199448.199507"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/268946.268952"},{"key":"e_1_2_1_5_1","volume-title":"Tenth International Symposium","author":"Boyland J.","year":"2003"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/292540.292564"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277667"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/512529.512563"},{"key":"e_1_2_1_9_1","volume-title":"Proceedings of the 5th Annual IEEE Symposium on Logic in Computer Science","author":"Guzman J. C."},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/158511.158618"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/258948.258970"},{"key":"e_1_2_1_12_1","volume-title":"Proceedings of the 2005 Workshop on Scheme and Functional Programming.","author":"Matthews J."},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1016\/0890-5401(91)90052-4"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796801004154"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/158511.158521"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/158511.158524"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(75)90017-1"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796897002943"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/317636.317777"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/99370.99374"},{"key":"e_1_2_1_21_1","volume-title":"Tech. Rep. UCB\/\/CSD-04-1314","author":"Terauchi T.","year":"2004"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1086365.1086379"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1007\/11817949_15"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/174675.177855"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/224164.224168"},{"key":"e_1_2_1_26_1","volume-title":"Proceedings of the Working Conference on Programming Concepts and Methods (Sea of Galilee, Israel), M. Broy and C. Jones, Eds. North Holland","author":"Wadler P.","year":"1990"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1006\/inco.1994.1093"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1353445.1353449","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1353445.1353449","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T13:56:13Z","timestamp":1750254973000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1353445.1353449"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2008,5]]},"references-count":27,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2008,5]]}},"alternative-id":["10.1145\/1353445.1353449"],"URL":"https:\/\/doi.org\/10.1145\/1353445.1353449","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2008,5]]},"assertion":[{"value":"2006-04-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2007-05-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2008-05-21","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}