A declarative environment for concurrent logic programming

  • Keith L. Clark
  • Ian T. Foster
Session AS3
Part of the Lecture Notes in Computer Science book series (LNCS, volume 250)


A logic programming environment should provide users with declarative control of program development and execution and resource access and allocation. It is argued that the concurrent logic language PARLOG is well suited to the implementation of such environments. The essential features of the PARLOG Programming System (PPS) are presented. The PPS is a multiprocessing programming environment that supports PARLOG (and is intended to support Prolog). Users interact with the PPS by querying and updating collections of logic clauses termed data bases. The PPS understands certain clauses as describing system configuration, the status of user deductions and the rules determining access to resources. Other clauses are understood as describing meta relationships such as inheritance between data bases. The paper introduces the facilities of the PPS and explains the essential structure of its implementation in PARLOG by a top down development of a PARLOG program which reads as a specification of a multiprocessing operating system.


Data Base Exception Handler Query Message Meta Relation Object Code 
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.


  1. Atkinson, M.P., Bailey, P.J., Chisholm, K.J., Cockshott, W.P. and Morrison, R. (1982), “An Approach to Persistent Programming”, The Computer Journal, 26(4), pp 360–365.Google Scholar
  2. Bowen, K.A. (1986), “Meta-level Programming and Knowledge Representation”, In New Generation Computing, 3, pp 359–383.Google Scholar
  3. CLP Project (1986), “Introduction to the CLF Environment”, USC Information Sciences Institute.Google Scholar
  4. Clark, K.L., and Gregory, S. (1984a), “PARLOG: Parallel Programming in Logic”, Research Report DoC 84/4, Department of Computing, Imperial College, London, and in ACM Trans. on P rogramming Languages and Systems, 8 (1), pp. 1–49, 1986.Google Scholar
  5. Clark, K.L., and Gregory, S. (1984b), “Notes on Systems Programming in PARLOG”. In Proc. Intl. Conf. on 5th Generation Computer Systems (Tokyo, November 1984), ed Aiso. H., Elsevier North Holland, pp. 299–306.Google Scholar
  6. Clocksin, W.F. and Mellish, C.S. (1981), Programming in Prolog, Springer-Verlag, New York.Google Scholar
  7. van Emden, M.H., and de Lucena, G.J. (1982), “Predicate Logic as a Language for Parallel Processing”. In Logic Programming, eds Clark, K.L. and Tarnlund, S-A., Academic Press, London, pp 189–198.Google Scholar
  8. Foster, I.T., Gregory, S., Ringwood, G. A., and Satoh, K. (1986). “A Sequential Implementation of PARLOG”. In Proc. of the 3rd Intl. Logic Programming Conf., London, 1986.Google Scholar
  9. Foster, I.T. (1986a), “The PARLOG Programming System: Reference Manual”. Dept of Computing, Imperial College, London.Google Scholar
  10. Foster, I.T. (1986b), “Logic Operating Systems: Design Issues”, Research Report, Dept. of Computing, Imperial College, London. Submitted for publication.Google Scholar
  11. Foster, I.T. (1986c), “Persistent Parallel Logic”, Research Report (in preparation), Dept. of Computing, Imperial College, London.Google Scholar
  12. Foster, I.T. and Kusalik, A.J. (1986), “A Logical Treatment of Secondary Storage”. In Proc. Symp. on Logic Programming, Salt Lake City, pp 58–69.Google Scholar
  13. French, P. (1985), MacProlog User Guide, Logic Programming Associates Ltd.Google Scholar
  14. Furukawa, K., Takeuchi, A., Kunifuji, S., Yasukawa, H., Ohki, M., and Ueda, K. (1984), “Mandala, a Logic Based Knowledge Programming System”. In Proc. Intl. Conf. on 5th Generation Computer Systems (Tokyo, November 1984), ed Aiso. H., Elsevier North Holland, pp 613–622.Google Scholar
  15. Gregory, S., Foster, I.T., Ringwood, G.A. and Burt, A.D. (1986), “The Sequential PARLOG Machine”, Research Report (in preparation), Dept. of Computing, Imperial College, London.Google Scholar
  16. Goldberg, A. (1983), Smalltalk-80: The Language and its Implementation, Addison Wesley.Google Scholar
  17. Henderson, P. (1982), “Purely Functional Operating Systems”. In Functional Programming and its Applications, Eds Darlington, Henderson and Turner, CUP.Google Scholar
  18. Hewitt, C. et al (1973), “A Universal Modular Actor Mechanism for Artificial Intelligence”. In Proc. I JCAI, 1973.Google Scholar
  19. Jones, S.B. (1984), “A Range of Operating Systems Written in a Purely Functional Style”, Technical Monograph PRG-42, Oxford University Computing Laboratory, 1984.Google Scholar
  20. Joseph, M., Prasad, V.R., Narayana, K.T., Ramakrishna, I.V. and Desai, S. (1978), “Language and Structure in an Operating System”. In Proc. 2nd Intl Conf. on Operating System Theory and Practice.Google Scholar
  21. Kauffmann, H., and Grumbach, A. (1986), “MULTILOG: Multiple Worlds in Logic”. In Proc. 7th ECAI, Brighton, UK, pp 291–305.Google Scholar
  22. Kowalski, R.A. (1979), Logic for Problem Solving, North Holland.Google Scholar
  23. Kowalski, R.A. (1986), “Logic-Based Open Systems”, Research Report, Dept. of Computing, Imperial College, London.Google Scholar
  24. Kusalik, A.J. (1986), “Specification and Initialisation of a Logic Computer System”, in New Generation Computing, 4, pp. 189–209, 1986.Google Scholar
  25. Linton, M. (1984), “Implementing Relational Views of Programs”, Proc ACM SIGSOFT/SIGPLAN Software Engineering Symp. Practical Software Development Environments.Google Scholar
  26. McCabe, F.G. and Clark, K.L., (1980), Micro-Prolog 3.0 Programmer's Reference Manual, Logic Programming Associates Ltd.Google Scholar
  27. Mierowsky, C., Taylor, S., Shapiro, E., Levy, J., and Safra, M. (1985), “The Design and Implementation of Flat Concurrent Prolog”, Technical Report CS85-09, Weizmann Institute, Rehovot.Google Scholar
  28. Nakashima, H. (1984), “Knowledge Representation in Prolog/KR”. In Proc. Intl. Symp. on Logic P rogramming, IEEE Computer Society, pp 126–130.Google Scholar
  29. Ramamoorthy, C.V. et al (1985), “GENESIS: An Interactive Environment for Development and Evolution of Software”. In Proc. COMPSAC, 1985.Google Scholar
  30. Sandewall, E. (1978), “Programming in an Interactive Environment: The Lisp Experience”. In Computing Surveys, 10(1), pp 35–71.Google Scholar
  31. Sergot, M.J. (1982), “A Query-the-user Facility for Logic Programming”. DoC Report 82/18, Dept. of Computing, Imperial College. In New Horizons in Educational Computing, Yazdani, M., ed, Ellis Horwood.Google Scholar
  32. Shapiro, E.Y. (1984), “Systems Programming in Concurrent Prolog”, in Proc. 11th ACM POPL Symp., Salt Lake City, Utah.Google Scholar
  33. Shapiro, E.Y. and Safra, S. (1986), “Multiway Merge with Constant Delay in Concurrent Prolog”. In New Generation Computing, 4(2), pp 211–216.Google Scholar
  34. Silverman, W., Hirsch, M., Houri, A., and Shapiro, E.Y. (1986), “The Logix User Manual, Version 1.21”, Technical Report CS-21, Weizmann Institute, Rehovot.Google Scholar
  35. Stoye, W. (1986), “A New Scheme for Writing Functional Operating Systems”, Research Report, University of Cambridge Computing Laboratory, Cambridge, 1986.Google Scholar
  36. Teitelbaum, T., and Reps, T. (1981), “The Cornell Program Synthesiser: A Syntax-Directed Programming Environment”. In CACM, 24(9).Google Scholar
  37. Teitelman, W. and Masinter, L. (1981), “The Interlisp Programming Environment”. In IEEE Computer 14(4), pp 25–33.Google Scholar
  38. Wulf, W.A. (1981), HYDRA/C.mmp: An Experimental Computer System, McGraw-Hill, N.Y.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1987

Authors and Affiliations

  • Keith L. Clark
    • 1
  • Ian T. Foster
    • 1
  1. 1.Dept of ComputingImperial CollegeLondon

Personalised recommendations