On the implementation of GNU Prolog

GNU Prolog is a general-purpose implementation of the Prolog language, which distinguishes itself from most other systems by being, above all else, a native-code compiler which produces stand-alone executables which do not rely on any bytecode emulator or meta-interpreter. Other aspects which stand out include the explicit organization of the Prolog system as a multipass compiler, where intermediate representations are materialized, in Unix compiler tradition. GNU Prolog also includes an extensible and high-performance finite-domain constraint solver, integrated with the Prolog language but implemented using independent lower-level mechanisms. This paper discusses the main issues involved in designing and implementing GNU Prolog : requirements, system organization, performance, and portability issues as well as its position with respect to other Prolog system implementations and the ISO standardization initiative.

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

[2]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[3]  Koen De Bosschere,et al.  jc: An Efficient and Portable Sequential Implementation of Janus , 1992, JICSLP.

[4]  Juliana Freire,et al.  XSB: A System for Effciently Computing WFS , 1997, LPNMR.

[5]  Nicolas Beldiceanu,et al.  Constraint Logic Programming , 1997 .

[6]  Michel Ferreira,et al.  Multiple Specialization of WAM Code , 1999, PADL.

[7]  D. Warren,et al.  Xsb -a System for Eeciently Computing Well Founded Semantics , 1997 .

[8]  Pascal Van Hentenryck Parallel Constraint Satisfaction in Logic Programming: Preliminary Results of CHIP within PEPSys , 1989, ICLP.

[9]  Neng-Fa Zhou,et al.  Linear tabling strategies and optimizations , 2007, Theory and Practice of Logic Programming.

[10]  Philippe Codognet,et al.  WAMCC: Compiling Prolog to C , 1995, ICLP.

[11]  Salvador Abreu,et al.  Casting of the WAM as an EAM , 2010, ArXiv.

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

[13]  Philippe Codognet,et al.  A Minimal Extension of the WAM for clp(FD) , 1993, ICLP.

[14]  Simon L. Peyton Jones,et al.  C-: A Portable Assembly Language , 1997, Implementation of Functional Languages.

[15]  Bogumil Hausman Turbo Erlang: Approaching the Speed of C , 1993, ICLP-Workshops on Implementation of Logic Programming Systems.

[16]  Edward P. K. Tsang,et al.  Foundations of constraint satisfaction , 1993, Computation in cognitive science.

[17]  Daniel Diaz,et al.  Objective: In Minimum Context , 2003, ICLP.

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

[19]  Pascal Van Hentenryck,et al.  Design, Implementation, and Evaluation of the Constraint Language cc(FD) , 1994, Constraint Programming.

[20]  Philippe Codognet,et al.  Compiling Constraints in clp(FD) , 1996, J. Log. Program..

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

[22]  Anderson Faustino da Silva,et al.  The Design of the YAP Compiler: An Optimizing Compiler for Logic Programming Languages , 2006, J. Univers. Comput. Sci..

[23]  Takashi Chikayama,et al.  A Portable and Efficient Implementation of KL1 , 1994, PLILP.

[24]  Hassan Aït-Kaci,et al.  Warren's Abstract Machine: A Tutorial Reconstruction , 1991 .

[25]  Ralph Clarke Haygood Native Code Compilation in SICStus Prolog , 1994, ICLP.