[net.ai] PARLOG

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.