The YAP Prolog system

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.

[1]  Ulrich Neumerkel,et al.  A Novel Term Compression Scheme and Data Representation in the BinWAM , 1994, PLILP.

[2]  Arabellastrasse,et al.  Constraint Handling Rules ? , 1995 .

[3]  Luc De Raedt,et al.  On the Efficient Execution of ProbLog Programs , 2008, ICLP.

[4]  Ricardo Rocha,et al.  On applying or-parallelism and tabling to logic programs , 2003, Theory and Practice of Logic Programming.

[5]  Joachim Schimpf Garbage Collection for Prolog based on Twin Cells , 1990 .

[6]  Ulrich Neumerkel,et al.  The Vienna Abstract Machine , 1990, PLILP.

[7]  Bart Demoen,et al.  On the Management of Choicepoint and Environment Frames in the WAM , 1989, NACLP.

[8]  Charles N. Fischer,et al.  Interactive, scalable, declarative program analysis: from prototype to implementation , 2007, PPDP '07.

[9]  Jesse Davis,et al.  Establishing Identity Equivalence in Multi-Relational Domains , 2005 .

[10]  Neng-Fa Zhou,et al.  A Register-Free Abstract Prolog Machine with Jumbo Instructions , 2007, ICLP.

[11]  Miguel Filgueiras A Prolog Interpreter Working with Infinite Terms , 1984, Implementations of Prolog.

[12]  Vítor Santos Costa,et al.  Understanding Memory Management in Prolog Systems , 2001, ICLP.

[13]  Nuno A. Fonseca,et al.  Improving the efficiency of inductive logic programming systems , 2009, Softw. Pract. Exp..

[14]  Ricardo Rocha,et al.  YapTab: A Tabling Engine Designed to Support Parallelism , 2000 .

[15]  Philippe Roussel,et al.  The birth of Prolog , 1993, HOPL-II.

[16]  Micha Meier Compilation of Compound Terms in Prolog , 1990, NACLP.

[17]  Joachim Beer Concepts, Design, and Performance Analysis of a Parallel Prolog Machine , 1989, Lecture Notes in Computer Science.

[18]  Peter Van Roy,et al.  High-performance logic programming with the Aquarius Prolog compiler , 1992, Computer.

[19]  Mats Carlsson Design and implementation of an or-parallel Prolog engine , 1990, RIT / KTH / TRITA-CS.

[20]  Konstantinos Sagonas,et al.  An abstract machine for tabled execution of fixed-order stratified logic programs , 1998, TOPL.

[21]  Vítor Santos Costa,et al.  User Defined Indexing , 2009, ICLP.

[22]  Kazunori Ueda,et al.  Proceedings of the 1991 international symposium on Logic programming , 1991 .

[23]  Michael Kifer,et al.  OpenRuleBench: an analysis of the performance of rule engines , 2009, WWW '09.

[24]  Philippe Codognet,et al.  Design and Implementation of the GNU Prolog System , 2001, J. Funct. Log. Program..

[25]  Anderson Faustino da Silva,et al.  Design, Implementation, and Evaluation of a Dynamic Compilation Framework for the YAP System , 2007, ICLP.

[26]  Bart Demoen,et al.  Fast Frequent Querying with Lazy Control Flow Compilation , 2007, Theory Pract. Log. Program..

[27]  Konstantinos Sagonas,et al.  Demand-Driven Indexing of Prolog Clauses , 2007, ICLP.

[28]  John A. Campbell,et al.  Implementations of Prolog. , 1984 .

[29]  Ricardo Rocha,et al.  YapOr: an Or-Parallel Prolog System Based on Environment Copying , 1999, EPIA.

[30]  Matthew Richardson,et al.  Markov logic networks , 2006, Machine Learning.

[31]  José Meseguer,et al.  Concurrency, Graphs and Models, Essays Dedicated to Ugo Montanari on the Occasion of His 65th Birthday , 2008, Concurrency, Graphs and Models.

[32]  Jan Maluszynski,et al.  Proceedings of the 3rd International Symposium on Programming Language Implementation and Logic Programming , 1991 .

[33]  Ashwin Srinivasan,et al.  ILP: A Short Look Back and a Longer Look Forward , 2003, J. Mach. Learn. Res..

[34]  I. V. Ramakrishnan,et al.  Efficient Access Mechanisms for Tabled Logic Programs , 1999, J. Log. Program..

[35]  André Mariën Improving the compilation of Prolog in the framework of the Warren Abstract Machine , 1993 .

[36]  Jean Carletta Modelling Variations in Goal-Directed Dialogue , 1990, COLING.

[37]  Jos De Roo,et al.  Desirable Features of Rule Based Systems for Medical Knowledge , 2005, Rule Languages for Interoperability.

[38]  Khayri A. M. Ali,et al.  Full prolog and scheduling or-parallelism in muse , 1991, International Journal of Parallel Programming.

[39]  Bart Demoen,et al.  Compiling large disjunctions , 2000 .

[40]  Bart Demoen,et al.  So Many WAM Variations, So Little Time , 2000, Computational Logic.

[41]  Guus Schreiber,et al.  Thesaurus-Based Search in Large Heterogeneous Collections , 2008, SEMWEB.

[42]  Ricardo Rocha,et al.  Dynamic Mixed-Strategy Evaluation of Tabled Logic Programs , 2005, ICLP.

[43]  Manuel V. Hermenegildo,et al.  An Improved Continuation Call-Based Implementation of Tabling , 2008, PADL.

[44]  Mike Rosner,et al.  The , T Framework in Eurotra: A Theoretically Committed Notation for MT , 1986, COLING.

[45]  Enrico Pontelli,et al.  Proceedings of the 24th International Conference on Logic Programming , 2008 .

[46]  Manuel V. Hermenegildo,et al.  Effectivness of abstract interpretation in automatic parallelization: a case study in logic programming , 1999, TOPL.

[47]  Mats Carlsson,et al.  Freeze, Indexing, and Other Implementation Issues in the WAM , 1987, ICLP.

[48]  Peter Van Roy,et al.  Can Logic Programming Execute as Fast as Imperative Programming? , 1990 .

[49]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[50]  Konstantinos Sagonas,et al.  Tabling in Mercury: Design and Implementation , 2006, PADL.

[51]  David Scott Warren,et al.  Query evaluation under the well-founded semantics , 1993, PODS.

[52]  Ricardo Rocha,et al.  Threads and or-parallelism unified , 2010, Theory Pract. Log. Program..

[53]  Manuel V. Hermenegildo,et al.  Comparing tag scheme variations using an abstract machine generator , 2008, PPDP '08.

[54]  Rui Camacho Learning stage transition rules with Indlog , 1994 .

[55]  Juliana Freire,et al.  The XSB Programmer’s Manual , 1800 .

[56]  Vítor Santos Costa The Life of a Logic Programming System , 2008, ICLP.

[57]  Manuel V. Hermenegildo,et al.  An Overview of the Ciao Multiparadigm Language and Program Development Environment and Its Design Philosophy , 2008, Concurrency, Graphs and Models.

[58]  James Cussens,et al.  CLP(BN): Constraint Logic Programming for Probabilistic Knowledge , 2002, Probabilistic Inductive Logic Programming.

[59]  Chris Mungall,et al.  Experiences Using Logic Programming in Bioinformatics , 2009, ICLP.

[60]  Mats Carlsson,et al.  SICStus Prolog User''s Manual , 1993 .

[61]  Ricardo Rocha,et al.  Achieving scalability in parallel tabled logic programs , 2002, Proceedings 16th International Parallel and Distributed Processing Symposium.

[62]  Bart Demoen,et al.  A New Scheme for Unification in WAM , 1991, ISLP.

[63]  Vítor Santos Costa On Just in Time Indexing of Dynamic Predicates in Prolog , 2009, EPIA.

[64]  Bart Demoen,et al.  Heap Memory Management in Prolog with Tabling: Principles and Practice , 2001, J. Funct. Log. Program..

[65]  Robert E. Tarjan,et al.  Depth-First Search and Linear Graph Algorithms , 1972, SIAM J. Comput..

[66]  Yoshitaka Kameya,et al.  Parameter Learning of Logic Programs for Symbolic-Statistical Modeling , 2001, J. Artif. Intell. Res..

[67]  Neng-Fa Zhou,et al.  A Matching Tree Oriented Abstract Machine for Prolog , 1990, ICLP.

[68]  Vítor Santos Costa,et al.  Optimising Bytecode Emulation for Prolog , 1999, PPDP.

[69]  Fabrizio Riguzzi,et al.  A Top Down Interpreter for LPAD and CP-Logic , 2007, AI*IA.

[70]  Bart Demoen,et al.  Indexing in Prolog , 1989 .

[71]  Bart Demoen,et al.  Incremental copying garbage collection for WAM-based Prolog systems , 2006, Theory and Practice of Logic Programming.

[72]  Ricardo Rocha Handling Incomplete and Complete Tables in Tabled Logic Programs , 2006, ICLP.

[73]  Ricardo Rocha On Improving the Efficiency and Robustness of Table Storage Mechanisms for Tabled Evaluation , 2007, PADL.

[74]  Steven Skiena,et al.  Unification factoring for efficient execution of logic programs , 1995, POPL '95.

[75]  Pierre Nugues An Introduction to Language Processing with Perl and Prolog: An Outline of Theories, Implementation, and Application with Special Consideration of English, French, and German , 2006, Cognitive Technologies.

[76]  Vítor Santos Costa Prolog Performance on Larger Datasets , 2007, PADL.

[77]  Mats Carlsson,et al.  Instruction merging and specialization in the SICStus Prolog virtual machine , 2001, PPDP '01.

[78]  Jan Wielemaker,et al.  Native Preemptive Threads in SWI-Prolog , 2003, ICLP.

[79]  Saumya K. Debray,et al.  Proceedings of the 1990 North American conference on Logic programming , 1990 .