Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!decvax!harpo!seismo!hao!hplabs!sri-unix!DFH@SU-AI From: DFH@SU-AI@sri-unix.UUCP Newsgroups: net.ai Subject: PARLOG Message-ID: <4506@sri-arpa.UUCP> Date: Tue, 23-Aug-83 16:37:00 EDT Article-I.D.: sri-arpa.4506 Posted: Tue Aug 23 16:37:00 1983 Date-Received: Sat, 27-Aug-83 18:00:47 EDT Lines: 42 From: Diana Hall [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.