{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,11]],"date-time":"2025-10-11T08:22:35Z","timestamp":1760170955181},"reference-count":25,"publisher":"Cambridge University Press (CUP)","issue":"4-5","license":[{"start":{"date-parts":[[2015,9,3]],"date-time":"2015-09-03T00:00:00Z","timestamp":1441238400000},"content-version":"unspecified","delay-in-days":64,"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":[[2015,7]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Tabling is probably the most widely studied extension of Prolog. But despite its importance and practicality, tabling is not implemented by most Prolog systems. Existing approaches require substantial changes to the Prolog engine, which is an investment out of reach of most systems. To enable more widespread adoption, we present a new implementation of tabling in under 600 lines of Prolog code. Our lightweight approach relies on delimited control and provides reasonable performance.<\/jats:p>","DOI":"10.1017\/s1471068415000137","type":"journal-article","created":{"date-parts":[[2015,9,3]],"date-time":"2015-09-03T08:21:21Z","timestamp":1441268481000},"page":"419-433","source":"Crossref","is-referenced-by-count":6,"title":["Tabling as a library with delimited control"],"prefix":"10.1017","volume":"15","author":[{"given":"BENOIT","family":"DESOUTER","sequence":"first","affiliation":[]},{"given":"MARKO","family":"VAN DOOREN","sequence":"additional","affiliation":[]},{"given":"TOM","family":"SCHRIJVERS","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2015,9,3]]},"reference":[{"key":"S1471068415000137_ref8","volume-title":"Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages","author":"Felleisen","year":"1988"},{"key":"S1471068415000137_ref22","first-page":"97","article-title":"The BinProlog experience: Architecture and implementation choices for continuation passing Prolog and first-class logic engines","volume":"12","author":"Tarau","year":"2012","journal-title":"TPLP"},{"key":"S1471068415000137_ref14","unstructured":"Raimundo J. and Rocha R. 2011. Global trie for subterms. Online Proceedings of the 11th International Colloquium on Implementation of Constraint Logic Programming Systems (CICLOPS 2011)."},{"key":"S1471068415000137_ref1","doi-asserted-by":"publisher","DOI":"10.1109\/69.43410"},{"key":"S1471068415000137_ref5","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0056605"},{"key":"S1471068415000137_ref24","first-page":"189","article-title":"The language features and architecture of B-Prolog","volume":"12","author":"Zhou","year":"2012","journal-title":"TPLP"},{"key":"S1471068415000137_ref17","first-page":"141","volume-title":"Practical Aspects of Declarative Languages - 15th International Symposium, PADL 2013","author":"Santos","year":"2013"},{"key":"S1471068415000137_ref25","first-page":"109","volume-title":"Practical Aspects of Declarative Languages","author":"Zhou","year":"2000"},{"key":"S1471068415000137_ref3","doi-asserted-by":"crossref","unstructured":"Danvy O. and Filinski A. 1990. Abstracting control. In Proceedings of the 1990 ACM conference on LISP and functional programming. LFP '90. ACM, 151\u2013160.","DOI":"10.1145\/91556.91622"},{"key":"S1471068415000137_ref19","unstructured":"Schrijvers T. , Demoen B. and Desouter B. 2013. Delimited continuations in Prolog: Semantics, use and implementation in the WAM. Report CW 631, Dept. of Computer Science, KU Leuven."},{"key":"S1471068415000137_ref4","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-77442-6_14"},{"key":"S1471068415000137_ref18","first-page":"5","article-title":"The YAP Prolog system","volume":"12","author":"Santos Costa","year":"2012","journal-title":"TPLP"},{"key":"S1471068415000137_ref7","first-page":"573","article-title":"Extension table built-ins for Prolog","volume":"22","author":"Fan","year":"1992","journal-title":"Software: Practice and Experience"},{"key":"S1471068415000137_ref9","doi-asserted-by":"publisher","DOI":"10.1002\/spe.824"},{"key":"S1471068415000137_ref15","first-page":"618","volume-title":"Proceedings of the 1994 International Symposium on Logic Programming","author":"Ramesh","year":"1994"},{"key":"S1471068415000137_ref20","doi-asserted-by":"crossref","unstructured":"Schrijvers T. , Demoen B. , Desouter B. and Wielemaker J. 2013. Delimited continuations for Prolog. Theory and Practice of Logic Programming (TPLP). Proceedings of the International Conference on Logic Programming (ICLP).","DOI":"10.1017\/S1471068413000331"},{"key":"S1471068415000137_ref2","doi-asserted-by":"publisher","DOI":"10.1145\/227595.227597"},{"key":"S1471068415000137_ref23","doi-asserted-by":"crossref","unstructured":"Tarau P. and Dahl V. 1994. Logic programming and logic grammars with first-order continuations. In LOPSTR '94. Vol. 883.","DOI":"10.1007\/3-540-58792-6_14"},{"key":"S1471068415000137_ref6","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-49201-1_8"},{"key":"S1471068415000137_ref16","unstructured":"Rocha R. , Silva F. and Santos Costa V. 2000. YapTab: A tabling engine designed to support parallelism. In Conference on Tabulation in Parsing and Deduction. 77\u201387."},{"key":"S1471068415000137_ref13","doi-asserted-by":"publisher","DOI":"10.2168\/LMCS-9(4:23)2013"},{"key":"S1471068415000137_ref10","doi-asserted-by":"crossref","unstructured":"Guo H.-F. and Gupta G. 2001. A simple scheme for implementing tabled logic programming systems based on dynamic reordering of alternatives. In Proceedings of ICLP'01. Springer, 181\u2013196.","DOI":"10.1007\/3-540-45635-X_20"},{"key":"S1471068415000137_ref12","doi-asserted-by":"publisher","DOI":"10.1017\/S1471068411000457"},{"key":"S1471068415000137_ref21","doi-asserted-by":"publisher","DOI":"10.1017\/S1471068411000500"},{"key":"S1471068415000137_ref11","unstructured":"Guo H.-F. and Gupta G. 2004. An efficient and flexible engine for computing fixed points. CoRR abs\/cs\/0412041."}],"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\/S1471068415000137","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,4,20]],"date-time":"2019-04-20T23:28:28Z","timestamp":1555802908000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S1471068415000137\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2015,7]]},"references-count":25,"journal-issue":{"issue":"4-5","published-print":{"date-parts":[[2015,7]]}},"alternative-id":["S1471068415000137"],"URL":"https:\/\/doi.org\/10.1017\/s1471068415000137","relation":{},"ISSN":["1471-0684","1475-3081"],"issn-type":[{"value":"1471-0684","type":"print"},{"value":"1475-3081","type":"electronic"}],"subject":[],"published":{"date-parts":[[2015,7]]}}}