DFH@SU-AI@sri-unix.UUCP (08/23/83)
From: Diana Hall <DFH@SU-AI>
[Reprinted from the SCORE BBoard.]
Parlog Seminar
Keith Clark will give a seminar on Parlog Thursday, Sept. 1 at 3 p.m
in Room 252 MJH.
PARLOG: A PARALLEL LOGIC PROGRAMMING LANGUAGE
Keith L. Clark
ABSTRACT
PARLOG is a logic programming language in the sense that
nearly every definition and query can be read as a sentence of
predicate logic. It differs from PROLOG in incorporating parallel
modes of evaluation. For reasons of efficient implementation, it
distinguishes and separates and-parallel and or-parallel evaluation.
PARLOG relations are divided into two types: and-relations
and or-relations. A sequence of and-relation calls can be evaluated
in parallel with shared variables acting as communication channels.
Only one solution to each call is computed.
A sequence of or-relation calls is evaluated sequentially but
all the solutions are found by a parallel exploration of the different
evaluation paths. A set constructor provides the main interface
between and-relations and or-relations. This wraps up all the
solutions to a sequence of or-relation calls in a list. The solution
list can be concurrently consumed by an and-relation call.
The and-parallel definitions of relations that will only be
used in a single functional mode can be given using conditional
equations. This gives PARLOG the syntactic convenience of functional
expressions when non-determinism is not required. Functions can be
invoked eagerly or lazily; the eager evaluation of nested function
calls corresponds to and-parallel evaluation of conjoined relation
calls.
This paper is a tutorial introduction and semi-formal
definition of PARLOG. It assumes familiarity with the general
concepts of logic programming.