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.