Advertisement

Concurrent Prolog: A progress report

  • Ehud Shapiro
Part Three Knowledge Programming
Part of the Lecture Notes in Computer Science book series (LNCS, volume 232)

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

Logic Program Logic Programming Logical Variable Weizmann Institute Output Stream 
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.

Unable to display preview. Download preview PDF.

References

  1. [1]
    W.B. Ackerman, “Data flow languages”, IEEE Computer, Vol. 15, No. 2, 1982, pp. 15–25.Google Scholar
  2. [2]
    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.Google Scholar
  3. [3]
    C. Bloch, “Source to source transformations of logic programs”, Weizmann Institute Technical Report CS84-22, 1984.Google Scholar
  4. [4]
    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.Google Scholar
  5. [5]
    K. Broda and S. Gregory, “PARLOG for discrete event simulation”, Proceedings of the 2nd International Logic Programming Conference, Uppsala, 1984, pp. 77–312.Google Scholar
  6. [6]
    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.Google Scholar
  7. [7]
    K.L. Clark and S. Gregory, “PARLOG: Parallel programming in logic”, Research Report DOC 84/4, April, 1984.Google Scholar
  8. [8]
    K.L. Clark and S. Gregory, “Notes on the implementation of PARLOG”, Research Report DOC 84/16, October, 1984.Google Scholar
  9. [9]
    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.Google Scholar
  10. [10]
    M. Codish and E. Shapiro, “Compiling Or-parallelism into And-parallelism”, Proceedings of the Third International Conference on Logic Programming, Springer LNCS, July 1986.Google Scholar
  11. [11]
    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.Google Scholar
  12. [12]
    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.Google Scholar
  13. [13]
    K. Furukawa, S. Kunifuji, A. Takeuchi and K. Ueda, “The conceptual specification of the Kernel Language version 1”, ICOT Technical Report TR-054, 1985.Google Scholar
  14. [14]
    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.Google Scholar
  15. [15]
    Y. Futamura, “Partial evaluation of computation process — an approach to a compiler-compiler”, Systems, Computers, Controls, Vol. 2, No. 5, 1971, pp. 721–728.Google Scholar
  16. [16]
    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.Google Scholar
  17. [17]
    L. Hellerstein, “A Concurrent Prolog based region finding algorithm”, Honors Thesis, Harvard University, Computer Science Department, May, 1984.Google Scholar
  18. [18]
    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.Google Scholar
  19. [19]
    H. Hirakawa, “Chart parsing in Concurrent Prolog”, ICOT Technical Report TR-008, 1983.Google Scholar
  20. [20]
    M. Hirsch, W. Silverman and E. Shapiro, “Layers of protection and control in the Logix system”, Weizmann Institute Technical Report CS86-??, 1986.Google Scholar
  21. [21]
    C.A.R. Hoare, “Monitors: an operating systems structuring concept”, Communications of the ACM, Vol. 17, No. 10, 1974, pp. 549–557.CrossRefGoogle Scholar
  22. [22]
    C.A.R. Hoare, Communicating Sequential Processes, Prentice-Hall, 1985.Google Scholar
  23. [23]
    J.E. Hopcroft and J.D. Ullman, Introduction to automata theory, Languages, and Computation, Addison Wesley, Reading, MA, 1979.Google Scholar
  24. [24]
    A. Houri, “An abstract machine for Flat Concurrent Prolog”, M.Sc. Thesis, Weizmann Institute of Science, 1986.Google Scholar
  25. [25]
    INMOS Ltd., IMS T424 Transputer Reference Manual, INMOS, 1984.Google Scholar
  26. [26]
    S.D. Johnson, “Circuits and systems: Implementing Communications with streams”, Technical Report 116, Indiana University, Computer Science Department, October, 1981.Google Scholar
  27. [27]
    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.Google Scholar
  28. [28]
    R.A. Kowalski, Logic for Problem Solving, Elsevier North Holland Inc., 1979.Google Scholar
  29. [29]
    H.T. Kung, “Why systolic architectures?”, IEEE Computer, Vol. 15, No. 1, 1982, pp. 37–46.Google Scholar
  30. [30]
    L. Lamport, “A recursive Concurrent Algorithm”, January, 1982, Unpublished note.Google Scholar
  31. [31]
    G. Levi and Palamidessi, “The semantics of the read-only variable”, 1985 Symposium on Logic Programming, IEEE Computer Society, July, 1985, pp. 128–137.Google Scholar
  32. [32]
    J. Levy, “A unification algorithm for Concurrent Prolog”, Proceedings of the Second International Logic Programming Conference, Uppsala, 1984, pp. 333–341.Google Scholar
  33. [33]
    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.Google Scholar
  34. [34]
    R. Milner, A Calculus of Communicating Systems, Lecture Notes in Computer Science, Vol. 92, Springer-Verlag, 1980.Google Scholar
  35. [35]
    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.Google Scholar
  36. [36]
    S. Pappert, Mindstorms: Children, computers, and powerful ideas”, Basic Books, New York, 1980.Google Scholar
  37. [37]
    F. Pereira, “C-Prolog user's manual”, EdCAAD, University of Edinburgh, 1983.Google Scholar
  38. [38]
    Quintus Prolog Reference Manual, Quintus Computer Systems Inc., 1985.Google Scholar
  39. [39]
    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.Google Scholar
  40. [40]
    J.A. Robinson, “A machine oriented logic based on the resolution principle”, Journal of the ACM, Vol. 12, January, 1965, pp. 23–41.CrossRefGoogle Scholar
  41. [41]
    P. Roussel, “Prolog: Manuel reference et d'utilisation”, Technical Report, Groupe d'Intelligence Artificielle, Marseille-Luminy, September, 1975.Google Scholar
  42. [42]
    V.A. Saraswat, “Problems with Concurrent Prolog”, Carnegie-Mellon University CSD Technical Report CS-86-100, January, 1986.Google Scholar
  43. [43]
    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.Google Scholar
  44. [44]
    M. Safra, S. Taylor and E. Shapiro, “Distributed Execution of Flat Concurrent Prolog”, To appear as a Weizmann Institute technical report.Google Scholar
  45. [45]
    S. Safra and E. Shapiro, “Meta-interpreters for real”, to appear in Proceedings of IFIP-86.Google Scholar
  46. [46]
    A. Shafrir and E. Shapiro, “Distributed programming in Concurrent Prolog”, Weizmann Institute Technical Report CS83-12, August, 1983.Google Scholar
  47. [47]
    E. Shapiro, Algorithmic Program Debugging, MIT Press, 1983.Google Scholar
  48. [48]
    E. Shapiro, “Systems programming in Concurrent Prolog”, in Logic Programming and its Applications, D.H.D. Warren and M. van Caneghem (eds.), Ablex, 1986.Google Scholar
  49. [49]
    E. Shapiro, “A subset of Concurrent Prolog and its interpreter”, ICOT Technical Report TR-003, February, 1983.Google Scholar
  50. [50]
    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.Google Scholar
  51. [51]
    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.Google Scholar
  52. [52]
    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.Google Scholar
  53. [53]
    S.Safra, S.Taylor and E.Shapiro, “Distributed Execution of Flat Concurrent Prolog”, To appear as Weizmann Institute technical Report, 1986.Google Scholar
  54. [54]
    W. Silverman, A. Houri, M. Hirsch and E. Shapiro, “Logix user manual, release 1.1”, Weizmann Institute of Science, 1985.Google Scholar
  55. [55]
    E. Shapiro and A. Takeuchi, “Object-oriented programming in Concurrent Prolog”, Journal of New Generation Computing, Vol. 1, No. 1, July, 1983.Google Scholar
  56. [56]
    L. Sterling and E. Shapiro, The Art of Prolog, MIT Press, 1986.Google Scholar
  57. [57]
    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.Google Scholar
  58. [58]
    A. Takeuchi, “How to solve it in Concurrent Prolog”, Unpublished note, 1983.Google Scholar
  59. [59]
    A. Takeuchi and K. Furukawa, “Interprocess communication in Concurrent Prolog”, Proceedings of the Logic Programming Workshop '83, Albufeira, Portugal, June, 1983, pp. 171–185.Google Scholar
  60. [60]
    A. Takeuchi and K. Furukawa, “Partial evaluation of Prolog programs and its application to meta programming”, ICOT Technical Report TR-126, 1985.Google Scholar
  61. [61]
    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.Google Scholar
  62. [62]
    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.Google Scholar
  63. [63]
    S.Taylor, L.Hellerstein, S.Safra and E.Shapiro “Notes on the Complexity of Systolic Programs”, Weizmann Institute Technical Report CS86-??, 1986.Google Scholar
  64. [64]
    S.Taylor, E.Av-Ron and E.Y.Shapiro “Virtual Machines for Process and Code Mapping” Weizmann Institute Technical Report CS86-??, 1986.Google Scholar
  65. [65]
    K. Ueda, “Guarded Horn Clauses”, ICOT Technical Report TR-103, 1985.Google Scholar
  66. [66]
    K. Ueda, “Concurrent Prolog re-examined”, to appear as ICOT Technical Report.Google Scholar
  67. [67]
    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.Google Scholar
  68. [68]
    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.Google Scholar
  69. [69]
    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.CrossRefGoogle Scholar
  70. [70]
    O. Viner, “Distributed constraint propagation”, Weizmann Institute Technical Report CS84-24, 1984.Google Scholar
  71. [71]
    D.H.D. Warren, “Logic programming and compiler writing”, Software-Practice and Experience, Vol. 10, 1980, pp. 97–125.Google Scholar
  72. [72]
    D.H.D. Warren, “An abstract Prolog instruction set”, Technical Report 309, Artificial Intelligence Center, SRI International, 1983.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1986

Authors and Affiliations

  • Ehud Shapiro
    • 1
  1. 1.Department of Computer ScienceThe Weizmann Institute of ScienceRehovotIsrael

Personalised recommendations