A Parallel Prolog Compiler and Its Implementation


Book Description

Abstract: "A logic programming system is presented in the paper. The system consists of a Prolog compiler and a run-time kernel. The Prolog compiler translates a Prolog specification directly into C code which may be executed on a sequential workstation or in a workstation cluster. We investigate techniques to generate efficient C code from a Prolog program as well as to provide a convenient interface with external C modules. We implement a parallel control scheme which appears to be particularly suitable for a coarse-grained parallel architecture. Experimental results show that 1) substantial gain in performance can be achieved through proper handling of determinate predicates in a Prolog program; 2) for a sufficiently large program, parallelism can be expolited effectively in a workstation cluster; and 3) an efficient C interface allows us to tackle problems which usually would not be attempted by using Prolog alone. As a sequential Prolog system, the speed of compiled execution of Prolog programs in our system compares favorably to that of Sicstus Prolog."




P-prolog: A Parallel Logic Programming Language


Book Description

P-Prolog is put forward as an alternative proposal to the difficulties faced in the main research areas of parallel logic programmings, which have been studied. P-Prolog provides the advantages of guarded Horn clauses while retaining don't know non-determinism where required. This monograph presents also an or-tree model and an implementation scheme for it, to combine and- and or- parallelism with reasonable efficiency. The model and implementation scheme discussed can be applied to P-Prolog and other parallel logic languages.




The Implementation of Prolog


Book Description

A semantically well-defined programming language widely used in artificial intelligence, Prolog has greatly influenced other programming languages since its introduction in the late 1970s. A user may find Prolog deceptively easy, however, and there are a number of different implementations. In this book Patrice Boizumault draws from his extensive experience in Prolog implementation to describe for students of all levels the concepts, difficulties, and design limits of a Prolog system. Boizumault introduces the specific problems posed by the implementation of Prolog, studies and compares different solutions--notably those of the schools of Marseilles and Edinburgh--and concludes with three examples of implementation. Major points of interest include identifying the important differences in implementing unification and resolution; presenting three features of Prolog II--infinite trees, dif, and freeze--that introduce constraints; thoroughly describing Warren's Abstract Machine (WAM); and detailing a Lisp imple-mentation of Prolog. Originally published in 1993. The Princeton Legacy Library uses the latest print-on-demand technology to again make available previously out-of-print books from the distinguished backlist of Princeton University Press. These editions preserve the original texts of these important books while presenting them in durable paperback and hardcover editions. The goal of the Princeton Legacy Library is to vastly increase access to the rich scholarly heritage found in the thousands of books published by Princeton University Press since its founding in 1905.




Concepts, Design, and Performance Analysis of a Parallel Prolog Machine


Book Description

This monograph presents a novel execution model for the parallel execution of standard sequential Prolog. In this execution model Prolog procedure calls can be efficiently pipelined, and the author shows how even fully deterministic Prolog programs can be effectively mapped onto the proposed architecture. The design is based on a highly optimized abstract Prolog specific instruction set. A special feature of this work is a sophisticated classification scheme for Prolog variables which substantially reduces the overhead for unification with occur-check. To support the model an architecture consisting of a circular pipeline of independent processors has been designed. This pipeline has been designed to work as a co-processor to a UNIX based workstation. In contrast to other attempts to execute sequential Prolog in parallel, the proposed model does not restrict the use of any of the standard Prolog language features. The book gives a full account of the execution model, the system architecture, and the abstract Prolog instruction set.







Constraint Handling Rules


Book Description

The definitive reference on Constraint Handling Rules, from the creator of the language.




Multiprocessor Execution of Logic Programs


Book Description

Multiprocessor Execution of Logic Programs addresses the problem of efficient implementation of logic programming languages, specifically Prolog, on multiprocessor architectures. The approaches and implementations developed attempt to take full advantage of sequential implementation technology developed for Prolog (such as the WAM) while exploiting all forms of control parallelism present in logic programs, namely, or-parallelism, independent and-parallelism and dependent and-parallelism. Coverage includes a thorough survey of parallel implementation techniques and parallel systems developed for Prolog. Multiprocessor Execution of Logic Programs is recommended for people implementing parallel logic programming systems, parallel symbolic systems, parallel AI systems, and parallel theorem proving systems. It will also be useful to people who wish to learn about the implementation of parallel logic programming systems.




Execution Models of Prolog for Parallel Computers


Book Description

The research described in this book addresses the semantic gap between logic programming languages and the architecture of parallel computers - the problem of how to implement logic programming languages on parallel computers in a way that can most effectively exploit the inherent parallelism of the language and efficiently utilize the parallel architecture of the computer. Following a useful review of other research results, the first project explores the possibilities of implementing logic programs on MIMD, nonshared memory massively parallel computers containing 100 to 1,000 processing elements. The second investigates the possibility of implementing Prolog on a typical SIMD machine, called a Distributed Processor Array. The author's objectives are to define a parallel computational paradigm (the Extended Cellular-Dataflow Model) that can be used to create a Parallel Prolog Abstract Machine as a general starting point for implementing logic programming languages on parallel computers, to exploit the different types of parallelism of these programs, to define an efficient parallel logic machine, to explore the possibilities of implementing logic programming languages on array processors, such as the DAP, to invent parallel implementation techniques for effectively executing Prolog on the DAP, and to define a parallel extension of Prolog that is able to utilize the processor aggregate of the DAP for effectively solving numerical subproblems within logic programs Peter Kacsuk is with Multilogic Computing Ltd. of Budapest, Hungary.




Parallel and Constraint Logic Programming


Book Description

Constraint Logic Programming (CLP), an area of extreme research interest in recent years, extends the semantics of Prolog in such a way that the combinatorial explosion, a characteristic of most problems in the field of Artificial Intelligence, can be tackled efficiently. By employing solvers dedicated to each domain instead of the unification algorithm, CLP drastically reduces the search space of the problem, which leads to increased efficiency in the execution of logic programs. CLP offers the possibility of solving complex combinatorial problems in an efficient way, and at the same time maintains the advantages offered by the declarativeness of logic programming. The aim of this book is to present parallel and constraint logic programming, offering a basic understanding of the two fields to the reader new to the area. The first part of the book gives an introduction to the fundamental aspects of conventional logic programming which is necessary for understanding the parts that follow. The second part includes an introduction to parallel logic programming, architectures and implementations proposed in the area. Finally, the third part presents the principles of constraint logic programming. The last two parts also include descriptions of the supporting facilities for the two paradigms in two popular systems; ECLIPSe and SICStus. These platforms have been selected mainly because they offer both parallel and constraint features. Annotated and explained examples are also included in the relevant parts, offering a valuable guide and a first practical experience to the reader. Finally, applications of the covered paradigms are presented. The authors felt that a book of this kind should provide some theoretical background necessary for the understanding of the covered logic programming paradigms, and a quick start for the reader interested in writing parallel and constraint logic programming programs. However it is outside the scope of this book to provide a deep theoretical background of the two areas. In that sense, this book is addressed to a public interested in obtaining a knowledge of the domain, without spending the time and effort to understand the extensive theoretical work done in the field – namely postgraduate and advanced undergraduate students in the area of logic programming. This book fills a gap in the current bibliography, since there is no comprehensive book of this level that covers the areas of conventional, parallel, and constraint logic programming. Parallel and Constraint Logic Programming: An Introduction to Logic, Parallelism and Constraints is appropriate for an advanced level course on Logic Programming or Constraints, and as a reference for practitioners and researchers in industry.




Implementations of Logic Programming Systems


Book Description

This volume is a collection of research papers in the area of the implementation of logic programming systems. It will be of immediate interest to practitioners who seek an understanding of how to efficiently manage memory, generate fast code, perform sophisticated static analyses, and design high-performance runtime features. A major theme throughout the book is how to effectively leverage host implementation systems and technologies to implement target systems. The book is also beneficial for future reference because it summarizes a wealth of systems implementation experience of the researchers shaping the field over the past ten years. Another theme of the book is compilation techniques to boost performance. The field of static analysis for logic programs is a rapidly developing field that deserves a volume on its own. Implementations of Logic Programming Systems is an excellent reference and may be used as a text for a course on the subject.