High-performance logic programming with the Aquarius Prolog compiler

  title={High-performance logic programming with the Aquarius Prolog compiler},
  author={Peter Van Roy and Alvin M. Despain},
Aquarius Prolog, a high performance compiler designed and built to test the hypothesis that Prolog can be implemented as efficiently as an imperative language by compiling the more powerful features of logic programming only where they are needed, and then only in the simplest form, is described. The authors begin with some background on logic programming and then discuss the Prolog language in more detail. They present an overview of their compiler, giving its structure and the principles… 

Figures and Tables from this paper

Improving Compilation of Prolog to C Using Program Information
We describe the current status and preliminary results of a compiler of Prolog to C. This compiler can use high-level information on the initial Prolog program in order to optimize the resulting C
Compiling Mercury to High-Level C Code
This work describes an alternative approach to compiling logic programs to C, based on continuation passing, that is used in a new back-end for the Mercury compiler, and shows that this approach delivers performance that is more than competitive with the fastest previous implementation, with greater simplicity and better portability and interoperability.
The YAP Prolog system
The general structure and design of the YAP system is presented, focusing on three important contributions to the Logic Programming community, as well as the main techniques used in YAP to achieve an efficient Prolog engine.
The Design of the YAP Compiler: An Optimizing Compiler for Logic Programming Languages
An optimizing compiler that using type feedback proling, dynamic compilation and dynamic deoptimization for improving the performance of logic programming languages is designed.
Description and Optimization of Abstract Machines in a Dialect of Prolog*
It is shown how the semantics of most basic components of an efficient virtual machine for Prolog can be described using (a variant of) Prolog, and how these descriptions are compiled to C and assembled to build a complete bytecode emulator.
A High Performance OR-parallel Prolog System
A layered approach for building a simple and eecient OR-parallel Prolog system by extending any sequential Prolog implementation based on the WAM has been designed and implemented.
The implementation of Mercury , an e cient purely declarative logic programming
The introduction of Mercury, a new purely declarative logic programming language designed to provide the support that groups of application programmers need when building large programs, and a new and relatively simple execution model that takes advantage of the information these systems provide to generate very eecient code.
Improving the compilation of prolog to C using type and determinism information: Preliminary results
The current status of and preliminary performance results for a compiler of Prolog to C are described and the performance of programs compiled by the current version of the system is reported, both with and without analysis information.
Improved Compilation of Prolog to C Using Moded Types and Determinism Information
The current status of and performance results for a prototype compiler of Prolog to C, ciaocc are described, which is designed to accept different kinds of high-level information, typically obtained via an automatic analysis of the initial Prolog program and expressed in a standardized language of assertions.
Técnicas avanzadas de compilación para programación lógica
The objective of this thesis is the development and improvement of advanced techniques for compilation of Prolog, orthogonal to many extensions such as constraint logic programming, Prolog with tabling, CHR over Prolog.


Fast Prolog with an extended general purpose architecture
The authors' goal is to start with a general-purpose architecture and determine a minimal set of extensions for high-performance Prolog execution and develop both the architecture and optimizing compiler simultaneously, drawing on results of previous implementations.
The Occur-Check Problem Revisited
  • J. Beer
  • Computer Science
    J. Log. Program.
  • 1988
Foundations of Logic Programming
Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints
A program denotes computations in some universe of objects. Abstract interpretation of programs consists in using that denotation to describe computations in another universe of abstract objects, so
The Art of Prolog
An example of the advantage of intertwining generating and testing can be seen with programs solving the N queens problem, which requires the placement of N pieces on an Nby-N rectangular board so that no two pieces are on the same line.
Warren's Abstract Machine: A Tutorial Reconstruction
Unification - pure and simple flat resolution Prolog optimizing the design conclusion. Appendices.
Logic for problem solving
This book investigates the application of logic to problem-solving and computer programming. It assumes no previous knowledge of these fields, and may be Karl duncker in addition to make difficult
On the Practicality of Global Flow Analysis of Logic Programs
The design and implementation aspects of two practical abstract interpretation-based flow analysis systems, MA3, the MOO Andparallel Analyzer and Annotator and Ms, an experimental mode inference system developed for SB-Prolog are discussed.