Abstract
Concurrent Prolog is a logic programming language designed for concurrent programming and parallel execution. It is a process oriented language, which embodies dataflow synchronization and guarded-command indeterminacy as its basic control mechanisms.
The paper outlines the basic concepts and definition of the language, and surveys the major programming techniques that emerged out of three years of its use. The history of the language development, implementation, and applications to date is reviewed. Details of the performance of its compiler and the functionality of Logix, its programming environment and operating system, are provided.
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
Preview
Unable to display preview. Download preview PDF.
References
W.B. Ackerman, “Data flow languages”, IEEE Computer, Vol. 15, No. 2, 1982, pp. 15–25.
Arvind and J.D. Brock, “Streams and managers”, in M. Makegawa and L.A. Belady (eds.), Operating Systems Engineering, Springer-Verlag, 1982, pp. 452–465. Lecture Notes in Computer Science, No. 143.
C. Bloch, “Source to source transformations of logic programs”, Weizmann Institute Technical Report CS84-22, 1984.
D.L. Bowen, L. Byrd, L.M. Pereira, F.C.N. Pereira and D.H.D. Warren, “PROLOG on the DECSystem-10 user's manual”, Technical Report, University of Edinburgh, Department of Artificial Intelligence, October, 1981.
K. Broda and S. Gregory, “PARLOG for discrete event simulation”, Proceedings of the 2nd International Logic Programming Conference, Uppsala, 1984, pp. 77–312.
K.L. Clark and S. Gregory, “A relational language for parallel programming”, in Proceedings of the ACM Conference on Functional Programming Languages and Computer Architecture, October, 1981.
K.L. Clark and S. Gregory, “PARLOG: Parallel programming in logic”, Research Report DOC 84/4, April, 1984.
K.L. Clark and S. Gregory, “Notes on the implementation of PARLOG”, Research Report DOC 84/16, October, 1984.
K.L. Clark and S.-A. Tarnlund, “A first-order theory of data and programs”, in B. Gilchrist (ed.), Information Processing, Vol. 77, North-Holland, 1977, pp. 939–944.
M. Codish and E. Shapiro, “Compiling Or-parallelism into And-parallelism”, Proceedings of the Third International Conference on Logic Programming, Springer LNCS, July 1986.
S. Edelman and E. Shapiro, "Quadtrees in Concurrent Prolog”, Proceedings of the International Conference on Parallel Processing, IEEE Computer Society, August, 1985, pp. 544–551.
D.P. Friedman and D.S. Wise, “An approach to fair applicative multiprogramming”, in G. Kahn (ed.), Semantics of Concurrent Computations, Springer-Verlag, 1979. Lecture Notes in Computer Science, No. 70.
K. Furukawa, S. Kunifuji, A. Takeuchi and K. Ueda, “The conceptual specification of the Kernel Language version 1”, ICOT Technical Report TR-054, 1985.
K. Furukawa, A. Takeuchi, S. Kunifuji, H. Yasukawa, M. Ohki and K. Ueda, “Mandala: A logic based knowledge programming system”, Proceedings of FGCS '84, Tokyo, Japan, 1984, pp. 613–622.
Y. Futamura, “Partial evaluation of computation process — an approach to a compiler-compiler”, Systems, Computers, Controls, Vol. 2, No. 5, 1971, pp. 721–728.
C.C. Green, “Theorem proving by resolution as a basis for question answering”, in B. Meltzer and D. Michie (eds.), Machine Intelligence, Vol. 4, Edinburgh University Press, Edinburgh, 1969, pp. 183–205.
L. Hellerstein, “A Concurrent Prolog based region finding algorithm”, Honors Thesis, Harvard University, Computer Science Department, May, 1984.
L. Hellerstein and E. Shapiro, “Implementing parallel algorithms in Concurrent Prolog: The MAXFLOW experience”, Proceedings of the International Symposium on Logic Programming, Atlantic City, New Jersey, February, 1984.
H. Hirakawa, “Chart parsing in Concurrent Prolog”, ICOT Technical Report TR-008, 1983.
M. Hirsch, W. Silverman and E. Shapiro, “Layers of protection and control in the Logix system”, Weizmann Institute Technical Report CS86-??, 1986.
C.A.R. Hoare, “Monitors: an operating systems structuring concept”, Communications of the ACM, Vol. 17, No. 10, 1974, pp. 549–557.
C.A.R. Hoare, Communicating Sequential Processes, Prentice-Hall, 1985.
J.E. Hopcroft and J.D. Ullman, Introduction to automata theory, Languages, and Computation, Addison Wesley, Reading, MA, 1979.
A. Houri, “An abstract machine for Flat Concurrent Prolog”, M.Sc. Thesis, Weizmann Institute of Science, 1986.
INMOS Ltd., IMS T424 Transputer Reference Manual, INMOS, 1984.
S.D. Johnson, “Circuits and systems: Implementing Communications with streams”, Technical Report 116, Indiana University, Computer Science Department, October, 1981.
G. Kahn and D.B. MacQueen, “Coroutines and networks of parallel processes”, in G. Gilchrist (ed.), Information Processing, Vol. 77, North-Holland, 1977, pp. 993–998.
R.A. Kowalski, Logic for Problem Solving, Elsevier North Holland Inc., 1979.
H.T. Kung, “Why systolic architectures?”, IEEE Computer, Vol. 15, No. 1, 1982, pp. 37–46.
L. Lamport, “A recursive Concurrent Algorithm”, January, 1982, Unpublished note.
G. Levi and Palamidessi, “The semantics of the read-only variable”, 1985 Symposium on Logic Programming, IEEE Computer Society, July, 1985, pp. 128–137.
J. Levy, “A unification algorithm for Concurrent Prolog”, Proceedings of the Second International Logic Programming Conference, Uppsala, 1984, pp. 333–341.
C. Mierowsky, S. Taylor, E. Shapiro, J. Levy and M. Safra, “The design and implementation of Flat Concurrent Prolog”, Weizmann Institute Technical Report CS85-09, 1985.
R. Milner, A Calculus of Communicating Systems, Lecture Notes in Computer Science, Vol. 92, Springer-Verlag, 1980.
T. Miyazaki, A. Takeuchi and T. Chikayama, “A sequential implementation of Concurrent Prolog based on the shallow binding scheme”, 1985 Symposium on Logic Programming, IEEE Computer Society, 1985, pp. 110–118.
S. Pappert, Mindstorms: Children, computers, and powerful ideas”, Basic Books, New York, 1980.
F. Pereira, “C-Prolog user's manual”, EdCAAD, University of Edinburgh, 1983.
Quintus Prolog Reference Manual, Quintus Computer Systems Inc., 1985.
R. Ramakrishnan and A. Silberschatz, “Annotations for Distributed Programming in Logic”, in Conference Record of the Thirteen Annual ACM Symposium on Principles of Programming Languages, January, 1986.
J.A. Robinson, “A machine oriented logic based on the resolution principle”, Journal of the ACM, Vol. 12, January, 1965, pp. 23–41.
P. Roussel, “Prolog: Manuel reference et d'utilisation”, Technical Report, Groupe d'Intelligence Artificielle, Marseille-Luminy, September, 1975.
V.A. Saraswat, “Problems with Concurrent Prolog”, Carnegie-Mellon University CSD Technical Report CS-86-100, January, 1986.
V.A. Saraswat, “Partial Correctness Semantics for CP[?,¦,]”, Proceedings of the Fifth Conference on Foundations of Software Technology and Theoretical Computer Science, New Delhi, 1985, Springer LNCS 206.
M. Safra, S. Taylor and E. Shapiro, “Distributed Execution of Flat Concurrent Prolog”, To appear as a Weizmann Institute technical report.
S. Safra and E. Shapiro, “Meta-interpreters for real”, to appear in Proceedings of IFIP-86.
A. Shafrir and E. Shapiro, “Distributed programming in Concurrent Prolog”, Weizmann Institute Technical Report CS83-12, August, 1983.
E. Shapiro, Algorithmic Program Debugging, MIT Press, 1983.
E. Shapiro, “Systems programming in Concurrent Prolog”, in Logic Programming and its Applications, D.H.D. Warren and M. van Caneghem (eds.), Ablex, 1986.
E. Shapiro, “A subset of Concurrent Prolog and its interpreter”, ICOT Technical Report TR-003, February, 1983.
E. Shapiro, “Systolic programming: A paradigm of parallel processing”, Proceedings of FGCS '84, Ohmsha, Tokyo, 1984. Revised as Weizmann Institute Technical Report CS84-16, 1984.
E. Shapiro and C. Mierowsky, “Fair, biased, and self-balancing merge operators: Their specification and implementation in Concurrent Prolog”, Journal of New Generation Computing, Vol. 2, No. 3, 1984, pp. 221–240.
E. Shapiro and S. Safra, “Fast multiway merge using destructive operations”, Proceedings of the International Conference on Parallel Processing, IEEE Computer Society, August, 1985, pp. 118–122.
S.Safra, S.Taylor and E.Shapiro, “Distributed Execution of Flat Concurrent Prolog”, To appear as Weizmann Institute technical Report, 1986.
W. Silverman, A. Houri, M. Hirsch and E. Shapiro, “Logix user manual, release 1.1”, Weizmann Institute of Science, 1985.
E. Shapiro and A. Takeuchi, “Object-oriented programming in Concurrent Prolog”, Journal of New Generation Computing, Vol. 1, No. 1, July, 1983.
L. Sterling and E. Shapiro, The Art of Prolog, MIT Press, 1986.
N. Suzuki, “Experience with specification and verification of complex computer hardware using Concurrent Prolog”, in Logic Programming and its Applications, D.H.D. Warren and M. van Caneghem (eds.), Ablex, 1986.
A. Takeuchi, “How to solve it in Concurrent Prolog”, Unpublished note, 1983.
A. Takeuchi and K. Furukawa, “Interprocess communication in Concurrent Prolog”, Proceedings of the Logic Programming Workshop '83, Albufeira, Portugal, June, 1983, pp. 171–185.
A. Takeuchi and K. Furukawa, “Partial evaluation of Prolog programs and its application to meta programming”, ICOT Technical Report TR-126, 1985.
H. Tamaki, “A distributed unification scheme for systolic logic programs”, in Proceedings of the 1985 International Conference on Parallel Processing, pp. 552–559, IEEE, 1985.
J. Tanaka, T. Miyazaki and A. Takeuchi, “A sequential implementation of Concurrent Prolog — based on Lazy Copying scheme”, The 1st National Conference of Japan Society for Software Science and Technology, 1984.
S.Taylor, L.Hellerstein, S.Safra and E.Shapiro “Notes on the Complexity of Systolic Programs”, Weizmann Institute Technical Report CS86-??, 1986.
S.Taylor, E.Av-Ron and E.Y.Shapiro “Virtual Machines for Process and Code Mapping” Weizmann Institute Technical Report CS86-??, 1986.
K. Ueda, “Guarded Horn Clauses”, ICOT Technical Report TR-103, 1985.
K. Ueda, “Concurrent Prolog re-examined”, to appear as ICOT Technical Report.
K. Ueda and T. Chikayama, “Efficient stream/array processing in logic programming languages”, Proceedings of the International Conference on 5th Generation Computer Systems, ICOT, 1984, pp. 317–326.
K. Ueda and T. Chikayama, “Concurrent Prolog compiler on top of Prolog”, 1985 Symposium on Logic Programming, IEEE Computer Society, July, 1985, pp. 119–126.
M.H. van Emden and R.A. Kowalski, “The semantics of predicate logic as a programming language”, Journal of the ACM, Vol. 23, October, 1976, pp. 733–742.
O. Viner, “Distributed constraint propagation”, Weizmann Institute Technical Report CS84-24, 1984.
D.H.D. Warren, “Logic programming and compiler writing”, Software-Practice and Experience, Vol. 10, 1980, pp. 97–125.
D.H.D. Warren, “An abstract Prolog instruction set”, Technical Report 309, Artificial Intelligence Center, SRI International, 1983.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1986 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Shapiro, E. (1986). Concurrent Prolog: A progress report. In: Bibel, W., Jorrand, P. (eds) Fundamentals of Artificial Intelligence. Lecture Notes in Computer Science, vol 232. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0022685
Download citation
DOI: https://doi.org/10.1007/BFb0022685
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-16782-2
Online ISBN: 978-3-540-39875-2
eBook Packages: Springer Book Archive