Problems with concurrent prolog

In this paper I argue that pure Horn logic does not provide the correct conceptual framework for concurrent programming. In order to express any kind of useful concurrency some extra-logical apparatus is necessary. The semantics and proof systems for such languages must necessarily reflect these control features, thus diluting the essential simplicity of Horn logic programming. In this context I examine C o n c u r r e n t P r o l o g as a concurrent and as a logic programming language, highlighting various semantic and operational difficulties. My thesis is that C o n c u r r e n t P r o l o g is best thought of as a set of control features designed to select some of the many possible execution paths in an inherently non-deterministic language. It is perhaps not a coherent set of control and data-features for the ideal concurrent programming language. It is not a Horn logic programming language because it docs not distinguish between derivations and refutations, because of its commitment to don't care indeterminism. As a result, soundness of the axioms does not guarantee a natural notion of partial correctness and the failure-as-negation rule is unsound. Because there is no don't know determinism, all search has to be programmed, making it a much more procedural rather than declarative language. Moreover, we show that its proposed '? ' (read-only) annotation is under-defined and there does not seem to be any consistent, reasonable way to extend its definition. We propose and justify alternate synchronisation and commitment annotations. This research was sponsored by the Defense Advanced Research Projects Agency (DOD), ARPA Order No. 4976, monitored by the Air Force Avionics Laboratory Under Contract F33G15-84-K-1520. The views aud conclusions contained in this document are those of the authors and should not be interpreted as representing the oflicial policies, either expressed or implied, of the Defense Advanced Research Projects Agency or the US Government.

[1]  Vijay A. Saraswat,et al.  Partial correctness semantics for CP [ , | , &] , 1985, FSTTCS.

[2]  Neil D. Jones,et al.  Stepwise Development of Operational and Denotational Semantics for Prolog , 1984, International Conference on Spoken Language Processing.

[3]  Ehud Shapiro,et al.  A subset of Concurrent Prolog and its interpreter , 1988 .

[4]  Michael J. Maher,et al.  A Theory of Complete Logic Programs with Equality , 1984, J. Log. Program..

[5]  Bruno Courcelle,et al.  Fundamental Properties of Infinite Trees , 1983, Theor. Comput. Sci..

[6]  John J. Donovan,et al.  Systems programming , 1973, CSC '73.

[7]  Vijay A. Saraswat,et al.  The concurrent logic programming language CP: Definition and operational semantics , 1987, POPL '87.

[8]  Ehud Shapiro Systolic Programming: A Paradigm of Parallel Processing , 1984, FGCS.

[9]  John McCarthy,et al.  A basis for a mathematical theory of computation, preliminary report , 1899, IRE-AIEE-ACM '61 (Western).

[10]  Guy L. Steele,et al.  The definition and implementation of a computer programming language based on constraints , 1980 .

[11]  Michael J. Maher,et al.  Closures and Fairness in the Semantics of Programming Logic , 1984, Theor. Comput. Sci..

[12]  Lisa Hellerstein,et al.  Implementing Parallel Algorithms in Concurrent Prolog: The MAXFLOW Experience , 1984, SLP.

[13]  Kazunori Ueda,et al.  Guarded Horn Clauses , 1986, LP.

[14]  Krzysztof R. Apt,et al.  Contributions to the Theory of Logic Programming , 1982, JACM.

[15]  Keith L. Clark,et al.  PARLOG: parallel programming in logic , 1986, ACM Trans. Program. Lang. Syst..

[16]  Ehud Shapiro,et al.  Systems programming in concurrent prolog , 1984, POPL.