Implementation techniques for Prolog

This paper is a short survey about currently used implementation techniques for Prolog. It gives an introduction to uniication and resolution in Prolog and presents the memory model and a basic execution model. These models are expanded to the Vienna Abstract Machine (VAM) with its two versions, the VAM 2P and the VAM 1P , and the most famous abstract machine, the Warren Abstract Machine (WAM). The continuation passing style model of Prolog, binary Prolog, leads to the BinWAM. Abstract interpretation can be applied to gather information about a program. This information is used in the generation of very specialized machine code and in optimizations like clause indexing and instruction scheduling on each kind of abstract machine.

[1]  Maurice Bruynooghe,et al.  A Practical Framework for the Abstract Interpretation of Logic Programs , 1991, J. Log. Program..

[2]  Joseph A. Fisher,et al.  Trace Scheduling: A Technique for Global Microcode Compaction , 1981, IEEE Transactions on Computers.

[3]  Peter Steenkiste,et al.  Tags and type checking in LISP: hardware and software approaches , 1987, ASPLOS.

[4]  Andreas Krall,et al.  Fast Prolog with VAM1p based Prolog Compiler , 1992, PLILP.

[5]  David H. D. Warren,et al.  Applied logic : its use and implementation as a programming tool , 1978 .

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

[7]  Chris Mellish,et al.  Some Global Optimizations for a Prolog Compiler , 1985, J. Log. Program..

[8]  Chris Hankin,et al.  Abstract Interpretation of Declarative Languages , 1987 .

[9]  S BoyerRoger,et al.  Ttle sharing of structure in theorem proving programs , 1972 .

[10]  Andrew Taylor Removal of Dereferencing and Trailing in Prolog Compilation , 1989, ICLP.

[11]  Ehud Shapiro,et al.  From Decision Trees to Decision Graphs , 1990, NACLP.

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

[13]  I-Peng Lin,et al.  Compiling dataflow analysis of logic programs , 1992, PLDI '92.

[14]  Bart Demoen,et al.  Indexing Prolog Clauses , 1989, NACLP.

[15]  Andrew W. Appel,et al.  Compiling with Continuations , 1991 .

[16]  ROBERT M. COLOMB Enhancing Unification in Prolog through Clause Indexing , 1991, J. Log. Program..

[17]  Peter Van Roy,et al.  1983-1993: The Wonder Years of Sequential Prolog Implementation , 1994, J. Log. Program..

[18]  Timothy J. Hickey,et al.  Global Compilation of Prolog , 1989, J. Log. Program..

[19]  Joachim Beer The Occur-Check Problem Revisited , 1988, J. Log. Program..

[20]  Saumya K. Debray,et al.  A Simple Code Improvement Scheme for Prolog , 1992, J. Log. Program..

[21]  Lee Naish,et al.  NUA-Prolog: An Extension to the WAM for Parallel Andorra , 1991, ICLP.

[22]  Werner Hans,et al.  A Complete Indexing Scheme for WAM-based Abstract Machines , 1992, PLILP.

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

[24]  Robert M. Colomb,et al.  A Clause Indexing system for PROLOG based on Superimposed Coding , 1986, Aust. Comput. J..

[25]  Henry S. Warren,et al.  Instruction Scheduling for the IBM RISC System/6000 Processor , 1990, IBM J. Res. Dev..

[26]  David M. W. Powers,et al.  Indexing Prolog Clauses via Superimposed Code Words and Filed Encoded Words , 1984, SLP.

[27]  Maurice Bruynooghe,et al.  The memory management of PROLOG implementations , 1980 .

[28]  Ehud Shapiro,et al.  A Decision Tree Compilation Algorithm for FCP(!, : , ?) , 1988, ICLP/SLP.

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