Current Trends in Concurrency pp 396-441 | Cite as

# Logic programming: The foundations, the approach and the role of concurrency

## Abstract

This paper is an introduction to the problem of defining the semantics of concurrency in logic programming. The standard semantics of logic programming languages is treated in the first two sections. The unique features of logic programming are then discussed on some examples in typical applications areas. The process interpretation of logic programs and some parallel operational models are considered next. Finally, concurrent logic languages are introduced, by discussing some examples in Concurrent Prolog and the semantics of two relevant mechanisms of concurrent logic languages, i.e. perpetual processes and read-only variables.

## Key words

semantics of logic programs parallel logic programs perpetual processes streams read-only variables concurrent logic languages Concurrent Prolog## Preview

Unable to display preview. Download preview PDF.

## 7. References

- /Abramsky 84/.
**S. Abramsky**, Reasoning about concurrent systems (1984).Google Scholar - /Andreka 83/.
**H. Andreka, M.H. van Emden, I. Nemeti and J. Tiuryn**, Infinite-term semantics for logic programs. Draft manuscript (1983).Google Scholar - /Apt 82/.
**K.R. Apt and M.H. van Emden**, Contributions to the theory of logic programming. J. ACM 29 (1982), 841–862.Google Scholar - /Barbuti 84/.
**R. Barbuti, M. Bellia, G. Levi**and**M. Martelli**, On the integration of logic programming and functional programming. Proc. 1984 Int. Symp. on Logic Programming (IEEE Comp. Society Press, 1984), 160–166.Google Scholar - /Barbuti 85/.
**R. Barbuti, M. Bellia, G. Levi**and**M. Martelli**, LEAF: A language which integrates logic, equations and functions. In Logic Programming: Functions, Relations and Equations, D. DeGroot and G. Lindstrom, Eds. (Prentice-Hall, 1985).Google Scholar - /Bellia 82/.
**M. Bellia, E. Dameri, P. Degano, G. Levi**and**M. Martelli**, Applicative communicating processes in first order logic. Proc. 5^{th}Int. Symp. on Programming, LNCS 137 (Springer Verlag, 1982), 1–14.Google Scholar - /Bellia 85/.
**M. Bellia and G. Levi**, The relation between logic and functional languages: A survey. Techn. Rept. University of Pisa, Dipartimento di Informatica (July 1985).Google Scholar - /Bowen 82/.
**K.A. Bowen**and**R.A. Kowalski**, Amalgamating language and metalanguage in logic programming. In Logic Programming, K.L. Clark and S.-A. Tarnlund, Eds. (Academic Press, 1982), 153–172.Google Scholar - /Burstall 80/.
**R.M. Burstall, D.B. MacQueen and D.T. Sannella**, HOPE: An experimental applicative language. Conference Record of the 1980 LISP Conference (1980), 136–143.Google Scholar - /Chang 71/.
**C.L. Chang and R.T.C. Lee**, Symbolic Logic and Mechanical Theorem Proving (Academic Press, 1971).Google Scholar - /Clark 81/.
**K.L. Clark**and**S. Gregory**, A relational language for parallel programming. Proc. ACM Conf. on Functional Programming Languages and Computer Architecture (1981), 171–178.Google Scholar - /Clark 83/.
**K.L. Clark**and**S. Gregory**, PARLOG: a parallel logic programming language. Imperial College Research Report 83/5 (May 1983).Google Scholar - /Clocksin 81/.
- /Conery 81/.
**J.S. Conery and D.F. Kibler**, Parallel interpretation of logic programs. Proc. ACM Conf. on Functional Programming Languages and Computer Architecture (1981), 163–170.Google Scholar - /vanEmden 76/.
**M.H. van Emden**and**R.A. Kowalski**, The semantics of predicate logic as a programming language. J. ACM 23 (1976), 733–742.Google Scholar - /vanEmden 82/.
**M.H. van Emden**and**G.T. de Lucena Filho**, Predicate logic as a language for parallel programming. In Logic Programming, K.L. Clark and S.-A. Tarnlund, Eds. (Academic Press, 1982), 189–198.Google Scholar - /Falaschi 83/.
**M. Falaschi, G. Levi and C. Palamidessi**, On the fixed-point semantics of Horn clauses with infinite terms. Proc. Logic Programming Workshop 83 (1983), 474–484.Google Scholar - /Falaschi 84/.
**M. Falaschi, G. Levi and C. Palamidessi**, A synchronization logic: Axiomatics and formal semantics of generalized Horn clauses. Information and Control 60 (1984), 36–69.Google Scholar - /Falaschi 85/.
**M. Falaschi, G. Levi and C. Palamidessi**, The formal semantics of processes and streams in logic programming. Colloquia Mathematica Societatis Janos Bolyai 42 (1985).Google Scholar - /Goguen 79/.
**J.A. Goguen**and**J.J. Tardo**, An introduction to OBJ: A language for writing and testing formal algebraic program specifications. Proc. IEEE Conf. on Specifications of Reliable Software (1979), 179–189.Google Scholar - /Goguen 84/.
**J.A. Goguen**and**J. Meseguer**, Equality, types, modules and (why not?) generics for logic programming. J. Logic Programming 1 (1984), 179–210.Google Scholar - /Gordon 79/.
**M. Gordon, R. Milner**and**C. Wadsworth**, Edinburgh LCF. LNCS 78 (Springer Verlag, 1979).Google Scholar - /Hansson 82/.
**A. Hansson, S. Haridi**and**S.-A. Tarnlund**, Properties of a logic programming language. In Logic Programming, K.L. Clark and S.-A. Tarnlund, Eds. (Academic Press, 1982), 267–280.Google Scholar - /Henderson 82/.
**P. Henderson**, Purely functional operating systems. In Functional Programming, J. Darlington, P. Henderson and D. Turner, Eds., (Cambridge University Press, 1982).Google Scholar - /Kahn 77/.
**G. Kahn and D. Mac Queen**, Coroutines and networks of parallel processes. Information Processing 77 (North-Holland, 1977), 993–998.Google Scholar - /Kowalski 74/.
**R.A. Kowalski**, Predicate logic as a programming language. Information Processing 74 (North-Holland, 1974), 569–574.Google Scholar - /Kowalski 79a/.
- /Kowalski 79b/.
- /Levi 83/.
**G. Levi**and**A. Pegna**, Top-down mathematical semantics and symbolic execution. RAIRO Informatique Theorique 17 (1983), 55–70.Google Scholar - /Levi 85/.
**G. Levi**and**C. Palamidessi**, The declarative semantics of logical read-only variables. Proc. 1985 Symp. on Logic Programming (IEEE Comp. Society Press, 1985), 128–137.Google Scholar - /Lloyd 84/.
- /Milner 84/.
**R. Milner**, A proposal for Standard ML. ACM Symp. LISP and Functional Programming (1984), 184–197.Google Scholar - /Monteiro 81/.
**L. Monteiro**, An extension to Horn clause logic allowing the definition of concurrent processes. Proc. Int'l Coll. on Formalization of Programming Concepts, LNCS 107 (Springer-Verlag, 1981).Google Scholar - /Monteiro 84/.
**L. Monteiro**, A proposal for distributed programming in logic. In Implementations of PROLOG, J.A. Campbell, Ed. (Ellis Horwood, 1984).Google Scholar - /Pereira 84/.
**L.M. Pereira and R. Nasr**, Delta-Prolog: A distributed logic programming language. Proc. Int'l Conf. on Fifth Generation Computer Systems (1984), 283–291.Google Scholar - /Reddy 85/.
**U.S. Reddy**, Narrowing as the operational semantics of functional languages. Proc. 1985 Symp. on Logic Programming (IEEE Comp. Society Press, 1985), 138–151.Google Scholar - /Rety 85/.
**P. Rety, C. Kirchner, H. Kirchner**and**P. Lescanne**, NARROWER: A new algorithm for unification and its application to logic programming. Proc. First Int. Conf. on Rewriting Techniques and Applications (1985).Google Scholar - /Robinson 65/.
**J.A. Robinson**, A machine-oriented logic based on the resolution principle. J. ACM 12 (1965), 23–41.Google Scholar - /Robinson 79/.
- /Shapiro 83/.
**E.Y. Shapiro**, A subset of Concurrent Prolog and its interpreter. Techn. Rep. TR-003, ICOT (1983).Google Scholar - /Turner 79/.
**D.A. Turner**, SASL language manual. Dept. of Computational Science, Univ. of St. Andrews (1979).Google Scholar - /Ueda 85/.
**K. Ueda**, Guarded Horn clauses. ICOT Tech. Report TR-103 (1985).Google Scholar