{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,12,29]],"date-time":"2025-12-29T22:06:24Z","timestamp":1767045984269},"reference-count":81,"publisher":"Cambridge University Press (CUP)","issue":"1-2","license":[{"start":{"date-parts":[[2011,10,18]],"date-time":"2011-10-18T00:00:00Z","timestamp":1318896000000},"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":[[2012,1]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Yet Another Prolog (YAP) is a Prolog system originally developed in the mid-eighties and that has been under almost constant development since then. This paper presents the general structure and design of the YAP system, focusing on three important contributions to the Logic Programming community. First, it describes the main techniques used in YAP to achieve an efficient Prolog engine. Second, most Logic Programming systems have a rather limited indexing algorithm. YAP contributes to this area by providing a dynamic indexing mechanism, or just-in-time indexer. Third, a important contribution of the YAP system has been the integration of both or-parallelism and tabling in a single Logic Programming system.<\/jats:p>","DOI":"10.1017\/s1471068411000512","type":"journal-article","created":{"date-parts":[[2011,10,18]],"date-time":"2011-10-18T09:42:41Z","timestamp":1318930961000},"page":"5-34","source":"Crossref","is-referenced-by-count":71,"title":["The YAP Prolog system"],"prefix":"10.1017","volume":"12","author":[{"given":"V\u00cdTOR SANTOS","family":"COSTA","sequence":"first","affiliation":[]},{"given":"RICARDO","family":"ROCHA","sequence":"additional","affiliation":[]},{"given":"LU\u00cdS","family":"DAMAS","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2011,10,18]]},"reference":[{"key":"S1471068411000512_ref81","first-page":"158","volume-title":"Proceedings of the 7th International Conference on Logic Programming","author":"Zhou","year":"1990"},{"key":"S1471068411000512_ref80","first-page":"455","volume-title":"Proceedings of the 23rd International Conference on Logic Programming, ICLP 2007","author":"Zhou","year":"2007"},{"key":"S1471068411000512_ref73","unstructured":"Van Roy P. 1990. Can logic programming execute as fast as imperative programming? PhD Thesis, University of California, Berkeley, CA."},{"key":"S1471068411000512_ref67","first-page":"330","volume-title":"Proceedings of the 22nd International Conference on Logic Programming, ICLP 2006","author":"Simon","year":"2006"},{"key":"S1471068411000512_ref66","first-page":"9","volume-title":"Proceedings of the 24th International Conference on Logic Programming, ICLP 2008","author":"Schrijvers","year":"2008"},{"key":"S1471068411000512_ref63","unstructured":"Sagonas K. F. , Swift T. , Warren D. S. , Freire J. and Rao P. 1997. The XSB programmer's manual. Tech. Rrep., State University of New York at Stony Brook. URL: http:\/\/xsb.sourceforge.net\/"},{"key":"S1471068411000512_ref57","unstructured":"Rocha R. , Silva F. and Costa V. S. 2000. YapTab: A tabling engine designed to support parallelism. In Conference on Tabulation in Parsing and Deduction. 77\u201387."},{"key":"S1471068411000512_ref56","first-page":"178","volume-title":"Portuguese Conference on Artificial Intelligence","author":"Rocha","year":"1999"},{"key":"S1471068411000512_ref54","doi-asserted-by":"publisher","DOI":"10.1007\/11799573_34"},{"key":"S1471068411000512_ref53","first-page":"109","volume-title":"Proceedings of the 10th Congress of the Italian Association for Artificial Intelligence on Artificial Intelligence and Human-Oriented Computing, AI*IA 2007","author":"Riguzzi","year":"2007"},{"key":"S1471068411000512_ref52","doi-asserted-by":"publisher","DOI":"10.1007\/s10994-006-5833-1"},{"key":"S1471068411000512_ref51","doi-asserted-by":"publisher","DOI":"10.1016\/S0743-1066(98)10013-4"},{"key":"S1471068411000512_ref48","first-page":"415","article-title":"Ilp: A short look back and a longer look forward","volume":"4","author":"Page","year":"2003","journal-title":"Journal of Machine Learning Research"},{"key":"S1471068411000512_ref44","doi-asserted-by":"crossref","first-page":"32","DOI":"10.1145\/1389449.1389455","volume-title":"Proceedings of the 10th International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming","author":"Morales","year":"2008"},{"key":"S1471068411000512_ref42","first-page":"257","volume-title":"Proceedings of the 1991 International Symposium on Logic Programming","author":"Mari\u00ebn","year":"1991"},{"key":"S1471068411000512_ref72","first-page":"481","article-title":"Fast frequent querying with lazy control flow compilation","volume":"7","author":"Tron\u00e7on","year":"2007","journal-title":"TPLP"},{"key":"S1471068411000512_ref41","first-page":"1030","volume-title":"Proceedings of the North American Conference on Logic Programming","author":"Mari\u00ebn","year":"1989"},{"key":"S1471068411000512_ref40","unstructured":"Mari\u00ebn A. 1993. Improving the compilation of prolog in the framework of the warren abstract machine. PhD Thesis, Katholiek Universiteit Leuven, Leuven, BE."},{"key":"S1471068411000512_ref39","doi-asserted-by":"crossref","unstructured":"Liang S. , Fodor P. , Wan H. and Kifer M. 2009. OpenRuleBench: An analysis of the performance of rule engines. Proceedings of the 18th International Conference on World Wide Web. 601\u2013610.","DOI":"10.1145\/1526709.1526790"},{"key":"S1471068411000512_ref38","unstructured":"Lea D. 1996. A Memory Allocator. URL: http:\/\/gee.cs.oswego.edu\/dl\/html\/malloc.html"},{"key":"S1471068411000512_ref35","doi-asserted-by":"crossref","first-page":"209","DOI":"10.1007\/978-3-540-68679-8_14","volume-title":"Concurrency, Graphs and Models, Essays Dedicated to Ugo Montanari on the Occasion of His 65th Birthday","author":"Hermenegildo","year":"2008"},{"key":"S1471068411000512_ref34","unstructured":"Granlund T. 2004. GNU multiple precision arithmetic library 4.1.4."},{"key":"S1471068411000512_ref33","doi-asserted-by":"publisher","DOI":"10.1002\/spe.896"},{"key":"S1471068411000512_ref31","unstructured":"Diaz D. and Codognet P. 2001. Design and implementation of the GNU prolog system. Journal of Functional and Logic Programming 2001, 2001."},{"key":"S1471068411000512_ref30","volume-title":"Proceedings of the W3C Workshop on Rule Languages for Interoperability","author":"Devitt","year":"2005"},{"key":"S1471068411000512_ref28","unstructured":"Demoen B. , Mari\u00ebn A. and Callebaut A. 1989. Indexing in prolog. In Proceedings of the North American Conference on Logic Programming, Lusk E. L. and Overbeek R. A. , Eds. 1001\u20131012."},{"key":"S1471068411000512_ref27","unstructured":"Demoen B. , Janssens G. and Vandecasteele H. 2000. Compiling large disjunctions. In Proceedings of the Workshop on Parallelism and Implementation Technology for (Constraint) Logic Programming Languages, London."},{"key":"S1471068411000512_ref26","first-page":"247","volume-title":"POPL 1995","author":"Dawson","year":"1995"},{"key":"S1471068411000512_ref19","first-page":"126","volume-title":"Progress in Artificial Intelligence, 14th Portuguese Conference on Artificial Intelligence, EPIA 2009","author":"Costa","year":"2009"},{"key":"S1471068411000512_ref17","first-page":"185","volume-title":"Proceedings of the 9th International Symposium on Practical Aspects of Declarative Languages, PADL 2007","author":"Costa","year":"2007"},{"key":"S1471068411000512_ref15","unstructured":"Costa V. S. 1988. Implementa\u00e7\u00e3o de prolog. Provas de aptid\u00e3o pedag\u00f3gica e capacidade cient\u00edfica, Universidade do Porto."},{"key":"S1471068411000512_ref14","doi-asserted-by":"publisher","DOI":"10.1145\/154766.155362"},{"key":"S1471068411000512_ref13","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-77442-6_14"},{"key":"S1471068411000512_ref12","doi-asserted-by":"crossref","unstructured":"Chen W. and Warren D. S. 1993. Query evaluation under the well-founded semantics. In Proceedings of 12th PODS. 168\u2013179.","DOI":"10.1145\/153850.153865"},{"key":"S1471068411000512_ref8","first-page":"40","volume-title":"Proceedings of the 4th International Conference on Logic Programming","author":"Carlsson","year":"1987"},{"key":"S1471068411000512_ref7","first-page":"273","volume-title":"Proceedings of the 4th International Workshop on Inductive Logic Programming","author":"Camacho","year":"1994"},{"key":"S1471068411000512_ref5","first-page":"13","volume-title":"Proceedings of the 9th International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming","author":"Benton","year":"2007"},{"key":"S1471068411000512_ref4","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-52053-8"},{"key":"S1471068411000512_ref25","unstructured":"Davis J. , Dutra I. , Page D. and Costa V. S. 2005. Establishing identity equivalence in multi-relational domains. In Proceedings of the 2005 International Conference on Intelligence Analysis."},{"key":"S1471068411000512_ref3","first-page":"297","volume-title":"Proceedings of the 11th Conference on Computational linguistics","author":"Arnold","year":"1986"},{"key":"S1471068411000512_ref1","unstructured":"Aggoun A. , Chan D. , Dufresne P. , Falvey E. , Grant H. , Herold A. , Macartney G. , Meier M. , Miller D. , Mudambi S. , Perez B. , van Rossum E. , Schimpf J. , Tsahageas P. A. and de Villeneuve D. H. 1995. ECLiPSe 3.5 User Manual. ECRC."},{"key":"S1471068411000512_ref32","first-page":"250","volume-title":"Implementations of Prolog","author":"Filgueiras","year":"1984"},{"key":"S1471068411000512_ref22","first-page":"305","volume-title":"Proceedings of the 23rd International Conference on Logic Programming","author":"Costa","year":"2007"},{"key":"S1471068411000512_ref2","doi-asserted-by":"publisher","DOI":"10.1007\/BF01397627"},{"key":"S1471068411000512_ref71","doi-asserted-by":"publisher","DOI":"10.1137\/0201010"},{"key":"S1471068411000512_ref65","volume-title":"2nd NACLP Workshop on Logic Programming Architectures and Implementations","author":"Schimpf","year":"1990"},{"key":"S1471068411000512_ref69","unstructured":"Srinivasan A. 2001. The Aleph Manual."},{"key":"S1471068411000512_ref62","doi-asserted-by":"publisher","DOI":"10.1145\/291889.291897"},{"key":"S1471068411000512_ref68","first-page":"150","volume-title":"Proceedings of the International Symposium on Practical Aspects of Declarative Languages","author":"Somogyi","year":"2006"},{"key":"S1471068411000512_ref6","doi-asserted-by":"publisher","DOI":"10.1145\/316686.316688"},{"key":"S1471068411000512_ref11","first-page":"11","volume-title":"Proceedings of the 17th International Conference on Logic Programming, ICLP 2001","author":"Castro","year":"2001"},{"key":"S1471068411000512_ref70","first-page":"73","volume-title":"Proceedings of the 6th International Symposium on Programming Language Implementation and Logic Programming, PLILP 1994","author":"Tarau","year":"1994"},{"key":"S1471068411000512_ref76","volume-title":"An abstract prolog instruction set","author":"Warren","year":"1983"},{"key":"S1471068411000512_ref58","first-page":"51","volume-title":"Proceedings of the 16th International Parallel and Distributed Processing Symposium (IPPDPS)","author":"Rocha","year":"2002"},{"key":"S1471068411000512_ref37","doi-asserted-by":"publisher","DOI":"10.1016\/S0743-1066(96)00064-7"},{"key":"S1471068411000512_ref46","first-page":"49","volume-title":"Proceedings of the 3rd International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming","author":"N\u00e4ss\u00e9n","year":"2001"},{"key":"S1471068411000512_ref75","first-page":"372","volume-title":"Proceedings of the 25th International Conference on Logic Programming, ICLP 2009","author":"Vaz","year":"2009"},{"key":"S1471068411000512_ref23","first-page":"410","volume-title":"Proceedings of the 23rd International Conference on Logic Programming, ICLP 2007","author":"da Silva","year":"2007"},{"key":"S1471068411000512_ref45","first-page":"1","volume-title":"Proceedings of the 25th International Conference on Logic Programming, ICLP 2009","author":"Mungall","year":"2009"},{"key":"S1471068411000512_ref64","doi-asserted-by":"crossref","first-page":"391","DOI":"10.1613\/jair.912","article-title":"Parameter learning of logic programs for symbolic-statistical modeling","volume":"15","author":"Sato","year":"2001","journal-title":"Journal of Artificial Intelligence Research"},{"key":"S1471068411000512_ref74","first-page":"505","article-title":"Incremental copying garbage collection for WAM-based Prolog systems","volume":"7","author":"Vandeginste","year":"2007","journal-title":"TPLP"},{"key":"S1471068411000512_ref20","first-page":"4","article-title":"Threads and or-parallelism unified","volume":"10","author":"Costa","year":"2010","journal-title":"TPLP"},{"key":"S1471068411000512_ref36","first-page":"175","volume-title":"Proceedings of the 24th International Conference on Logic Programming, ICLP 2008","author":"Kimmig","year":"2008"},{"key":"S1471068411000512_ref24","doi-asserted-by":"crossref","unstructured":"Damas L. and Milner R. 1982. Principal type-schemes for functional programs. In POPL. 207\u2013212.","DOI":"10.1145\/582153.582176"},{"key":"S1471068411000512_ref16","first-page":"261","volume-title":"Proceedings of PPDP 1999","author":"Costa","year":"1999"},{"key":"S1471068411000512_ref10","volume-title":"SICStus Prolog User's Manual","author":"Carlsson","year":"1988"},{"key":"S1471068411000512_ref55","first-page":"155","volume-title":"Proceedings of the International Symposium on Practical Aspects of Declarative Languages","author":"Rocha","year":"2007"},{"key":"S1471068411000512_ref43","first-page":"63","volume-title":"Proceedings of the 1990 North American Conference on Logic Programming","author":"Meier","year":"1990"},{"key":"S1471068411000512_ref50","unstructured":"Quintus 1986. Quintus Prolog User's Guide and Reference Manual\u2014Version 6."},{"key":"S1471068411000512_ref61","doi-asserted-by":"crossref","first-page":"54","DOI":"10.1109\/2.108055","article-title":"High-performance logic programming with the aquarius prolog compiler","volume":"25","author":"Roy","year":"1992","journal-title":"IEEE Computer"},{"key":"S1471068411000512_ref18","first-page":"1","volume-title":"Proceedings of the 24th International Conference on Logic Programming, ICLP 2008","author":"Costa","year":"2008"},{"key":"S1471068411000512_ref49","volume-title":"C-Prolog 1.5 User Manual","author":"Pereira","year":"1987"},{"key":"S1471068411000512_ref59","doi-asserted-by":"publisher","DOI":"10.1007\/11562931_20"},{"key":"S1471068411000512_ref78","volume-title":"SWI-Prolog 5.9.9: Reference Manual","author":"Wielemaker","year":"2010"},{"key":"S1471068411000512_ref29","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-44957-4_83"},{"key":"S1471068411000512_ref60","doi-asserted-by":"publisher","DOI":"10.1017\/S1471068404002030"},{"key":"S1471068411000512_ref9","unstructured":"Carlsson M. 1990. Design and Implementation of an OR-Parallel Prolog Engine. PhD Thesis, The Royal Institute of Technology. SICS Dissertation Series 02."},{"key":"S1471068411000512_ref21","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-78652-8_6"},{"key":"S1471068411000512_ref79","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-88564-1_44"},{"key":"S1471068411000512_ref77","first-page":"331","volume-title":"Proceedings of the 19th International Conference on Logic Programming, ICLP 2003","author":"Wielemaker","year":"2003"},{"key":"S1471068411000512_ref47","volume-title":"An Introduction to Language Processing with Perl and Prolog: An Outline of Theories, Implementation, and Application with Special Consideration of English, French, and German (Cognitive Technologies)","author":"Nugues","year":"2006"}],"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\/S1471068411000512","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,12,11]],"date-time":"2021-12-11T14:09:58Z","timestamp":1639231798000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S1471068411000512\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011,10,18]]},"references-count":81,"journal-issue":{"issue":"1-2","published-print":{"date-parts":[[2012,1]]}},"alternative-id":["S1471068411000512"],"URL":"https:\/\/doi.org\/10.1017\/s1471068411000512","relation":{},"ISSN":["1471-0684","1475-3081"],"issn-type":[{"value":"1471-0684","type":"print"},{"value":"1475-3081","type":"electronic"}],"subject":[],"published":{"date-parts":[[2011,10,18]]}}}