High-performance logic programming with the Aquarius Prolog compiler

  title={High-performance logic programming with the Aquarius Prolog compiler},
  author={P. V. Roy and A. 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… Expand
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 CExpand
On the implementation of GNU Prolog
The main issues involved in designing and implementing GNU Prolog are discussed: requirements, system organization, performance, and portability issues as well as its position with respect to other Prolog system implementations and the ISO standardization initiative. Expand
Theory and Practice of Logic Programming
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 andExpand
The GNU Prolog system and its implementation
The GNU-Prolog system is described, a free system consisting of a Prolog compiler and a constraint solver on night domains, based on a low-level mini-assembly platform-independent language that makes it possible for compilation time, and allows to produce small stand alone executable les as the result of the compilation process. Expand
Performance Comparison between Conventional and LogicProgramming Systems
This work compares and analyses conventional and logic programming systems using a qualitative and quantitative approach. Logic programming is known to be easier and simpler than imperativeExpand
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. Expand
Towards Description and Optimization of Abstract Machines in an Extension of Prolog
This paper shows how the semantics of basic components of an efficient virtual machine for Prolog can be described using (a variant of) Prolog which retains much of its semantics, and obtains abstract machine implementations whose performance can match and even exceed that of highly-tuned, handcrafted emulators. Expand
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. Expand
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. Expand
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. Expand


Fast Prolog with an extended general purpose architecture
The 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. Expand
Can Logic Programming Execute as Fast as Imperative Programming?
The purpose of this dissertation is to provide constructive proof that the logic programming language Prolog can be implemented an order of magnitude more efficiently than the best previous systems,Expand
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. Expand
The Occur-Check Problem Revisited
  • J. Beer
  • Computer Science
  • J. Log. Program.
  • 1988
The presented method considerably cuts down on the number of memory references during the execution of PROLOG programs and avoids “trailing” and “untrailing’ of unbound variables altogether. Expand
Foundations of Logic Programming
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 difficultExpand
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, soExpand
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. Expand
Warren's Abstract Machine: A Tutorial Reconstruction
Unification - pure and simple flat resolution Prolog optimizing the design conclusion. Appendices.
High-Performance Prolog Implementation, doctoral dissertation
  • High-Performance Prolog Implementation, doctoral dissertation
  • 1991