{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,4,9]],"date-time":"2024-04-09T20:40:17Z","timestamp":1712695217872},"reference-count":33,"publisher":"Cambridge University Press (CUP)","issue":"1","license":[{"start":{"date-parts":[[2011,8,9]],"date-time":"2011-08-09T00:00:00Z","timestamp":1312848000000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Theory and Practice of Logic Programming"],"published-print":{"date-parts":[[2013,1]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Representation sharing can reduce the memory footprint of a program by sharing one representation between duplicate terms. The most common implementation of representation sharing in functional programming systems is known as hash-consing. In the context of Prolog, representation sharing has been given little attention. Some current techniques that deal with representation sharing are reviewed. The new contributions are (1) an easy implementation of<jats:italic>input sharing<\/jats:italic>for<jats:italic>findall\/3<\/jats:italic>; and (2) a description of a<jats:italic>sharer<\/jats:italic>module that introduces representation sharing at runtime. Their realization is shown in the context of the Warren Abstract Machine (WAM) as implemented by hProlog. Both can be adapted to any WAM-like Prolog implementation. The sharer works independently of the garbage collector, but it can be made to cooperate with the garbage collector. Benchmark results show that the sharer has a cost comparable to the heap garbage collector, that its effectiveness is highly application-dependent, and that its policy must be tuned to the collector.<\/jats:p>","DOI":"10.1017\/s1471068411000421","type":"journal-article","created":{"date-parts":[[2011,8,9]],"date-time":"2011-08-09T09:22:39Z","timestamp":1312881759000},"page":"71-106","source":"Crossref","is-referenced-by-count":0,"title":["Representation sharing for Prolog"],"prefix":"10.1017","volume":"13","author":[{"given":"PHUONG-LAN","family":"NGUYEN","sequence":"first","affiliation":[]},{"given":"BART","family":"DEMOEN","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2011,8,9]]},"reference":[{"key":"S1471068411000421_ref31","first-page":"159","article-title":"ECLiPSe: A platform for constraint logic programming","volume":"12","author":"Wallace","year":"1997","journal-title":"ICL Systems Journal"},{"key":"S1471068411000421_ref29","doi-asserted-by":"publisher","DOI":"10.1109\/2.108055"},{"key":"S1471068411000421_ref27","first-page":"344","volume-title":"Proceedings of IWMM'92: International Workshop on Memory Management","author":"Tarau","year":"1992"},{"key":"S1471068411000421_ref26","first-page":"119","volume-title":"Proceedings of the Logic Programming Conference'91","author":"Tarau","year":"1991"},{"key":"S1471068411000421_ref25","doi-asserted-by":"publisher","DOI":"10.1016\/S0743-1066(96)00068-4"},{"key":"S1471068411000421_ref24","volume-title":"Variable Shunting for the WAM","author":"Sahlin","year":"1991"},{"key":"S1471068411000421_ref21","doi-asserted-by":"publisher","DOI":"10.1017\/S1471068401001065"},{"key":"S1471068411000421_ref19","first-page":"408","volume-title":"Proceedings of the Tenth International Conference on Logic Programming","author":"Mari\u00ebn","year":"1993"},{"key":"S1471068411000421_ref16","unstructured":"Grimley-Evans E. 1995. Findall\/3 without copying? [online]. Accessed 14 July 2011. http:\/\/www.logicprogramming.org\/newsletter\/archive_93_96\/net\/meta-level\/findall1.html"},{"key":"S1471068411000421_ref15","unstructured":"Goto E. 1974. Monocopy and Associative Algorithms in Extended Lisp. Technical Report TR 74-03, University of Tokyo, Tokyo, Japan."},{"key":"S1471068411000421_ref28","first-page":"137","volume-title":"Practical Aspects of Declarative Languages, 11th International Symposium, PADL 2009","author":"Tarau","year":"2009"},{"key":"S1471068411000421_ref12","first-page":"1240","volume-title":"Computational Logic \u2013 CL2000, Proceedings of First International Conference, London, UK, July","author":"Demoen","year":"2000"},{"key":"S1471068411000421_ref11","doi-asserted-by":"crossref","first-page":"179","DOI":"10.1007\/3-540-45619-8_13","volume-title":"Proceedings of ICLP2002 \u2013 International Conference on Logic Programming","author":"Demoen","year":"2002"},{"key":"S1471068411000421_ref10","volume-title":"Programming in Prolog","author":"Clocksin","year":"1984"},{"key":"S1471068411000421_ref9","doi-asserted-by":"publisher","DOI":"10.1145\/227595.227597"},{"key":"S1471068411000421_ref8","unstructured":"Carlsson M. 1990. Design and Implementation of an Or-Parallel Prolog Engine. Ph.D. thesis, The Royal Institute of Technology (KTH), Stokholm, Sweden. See also http:\/\/www.sics.se\/isl\/sicstus.html"},{"key":"S1471068411000421_ref1","doi-asserted-by":"crossref","DOI":"10.7551\/mitpress\/7160.001.0001","volume-title":"Warren's Abstract Machine: A Tutorial Reconstruction","author":"A\u00eft-Kaci","year":"1991"},{"key":"S1471068411000421_ref3","doi-asserted-by":"publisher","DOI":"10.1145\/62959.62968"},{"key":"S1471068411000421_ref4","doi-asserted-by":"publisher","DOI":"10.1145\/147135.147137"},{"key":"S1471068411000421_ref7","first-page":"807","article-title":"Garbage collection in an uncooperative environment","volume":"18","author":"Boehm","year":"1988","journal-title":"Software: Practice and Experience"},{"key":"S1471068411000421_ref6","first-page":"60","volume-title":"Proceedings of Inductive Logic Programming, 10th International Conference, ILP2000, London, UK, July","author":"Blockeel","year":"2000"},{"key":"S1471068411000421_ref17","doi-asserted-by":"publisher","DOI":"10.1007\/11871842_20"},{"key":"S1471068411000421_ref30","first-page":"299","volume-title":"Proceedings of Practical Aspects of Declarative Languages, 4th International Symposium, PADL 2002","author":"Vandeginste","year":"2002"},{"key":"S1471068411000421_ref20","unstructured":"Neumerkel U. 1989. Speicherbereinigung f\u00fcr Prologsysteme. M.S. thesis, Institut f\u00fcr Praktische Informatik der Technischen Universit\u00e4t Wien, Austria."},{"key":"S1471068411000421_ref2","unstructured":"Appel A. W. and Gon\u00e7calves M. J. R. 1993 (Feb). Hash-consing Garbage Collection. Technical Report CS-TR-412-93, Com- puterr Science Department, Princeton University."},{"key":"S1471068411000421_ref18","first-page":"28","volume-title":"Concurrent Prolog: Collected Papers, vol. 2","author":"Hirsch","year":"1987"},{"key":"S1471068411000421_ref14","doi-asserted-by":"crossref","DOI":"10.7551\/mitpress\/5298.001.0001","volume-title":"Performance and Evaluation of Lisp Systems.","author":"Gabriel","year":"1985"},{"key":"S1471068411000421_ref13","doi-asserted-by":"publisher","DOI":"10.1145\/368892.368907"},{"key":"S1471068411000421_ref32","unstructured":"Warren D. H. D. 1983. An Abstract Prolog Instruction Set. Technical Report 309, SRI, California."},{"key":"S1471068411000421_ref22","volume-title":"Elements of Functional Programming","author":"Reade","year":"1989"},{"key":"S1471068411000421_ref5","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-58402-1_8"},{"key":"S1471068411000421_ref33","doi-asserted-by":"publisher","DOI":"10.1017\/S1471068407003237"},{"key":"S1471068411000421_ref23","doi-asserted-by":"crossref","first-page":"442","DOI":"10.1145\/191839.191927","volume-title":"Proceedings of SIGMOD 1994 Conference","author":"Sagonas","year":"1994"}],"container-title":["Theory and Practice of Logic Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S1471068411000421","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,4,9]],"date-time":"2024-04-09T20:06:35Z","timestamp":1712693195000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S1471068411000421\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011,8,9]]},"references-count":33,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2013,1]]}},"alternative-id":["S1471068411000421"],"URL":"https:\/\/doi.org\/10.1017\/s1471068411000421","relation":{},"ISSN":["1471-0684","1475-3081"],"issn-type":[{"value":"1471-0684","type":"print"},{"value":"1475-3081","type":"electronic"}],"subject":[],"published":{"date-parts":[[2011,8,9]]}}}