A declarative environment for concurrent logic programming
Abstract
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.
Keywords
Data Base Exception Handler Query Message Meta Relation Object CodeReferences
- 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
- Bowen, K.A. (1986), “Meta-level Programming and Knowledge Representation”, In New Generation Computing, 3, pp 359–383.Google Scholar
- CLP Project (1986), “Introduction to the CLF Environment”, USC Information Sciences Institute.Google Scholar
- 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
- 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
- Clocksin, W.F. and Mellish, C.S. (1981), Programming in Prolog, Springer-Verlag, New York.Google Scholar
- 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
- 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
- Foster, I.T. (1986a), “The PARLOG Programming System: Reference Manual”. Dept of Computing, Imperial College, London.Google Scholar
- Foster, I.T. (1986b), “Logic Operating Systems: Design Issues”, Research Report, Dept. of Computing, Imperial College, London. Submitted for publication.Google Scholar
- Foster, I.T. (1986c), “Persistent Parallel Logic”, Research Report (in preparation), Dept. of Computing, Imperial College, London.Google Scholar
- 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
- French, P. (1985), MacProlog User Guide, Logic Programming Associates Ltd.Google Scholar
- 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
- 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
- Goldberg, A. (1983), Smalltalk-80: The Language and its Implementation, Addison Wesley.Google Scholar
- Henderson, P. (1982), “Purely Functional Operating Systems”. In Functional Programming and its Applications, Eds Darlington, Henderson and Turner, CUP.Google Scholar
- Hewitt, C. et al (1973), “A Universal Modular Actor Mechanism for Artificial Intelligence”. In Proc. I JCAI, 1973.Google Scholar
- 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
- 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
- Kauffmann, H., and Grumbach, A. (1986), “MULTILOG: Multiple Worlds in Logic”. In Proc. 7th ECAI, Brighton, UK, pp 291–305.Google Scholar
- Kowalski, R.A. (1979), Logic for Problem Solving, North Holland.Google Scholar
- Kowalski, R.A. (1986), “Logic-Based Open Systems”, Research Report, Dept. of Computing, Imperial College, London.Google Scholar
- Kusalik, A.J. (1986), “Specification and Initialisation of a Logic Computer System”, in New Generation Computing, 4, pp. 189–209, 1986.Google Scholar
- Linton, M. (1984), “Implementing Relational Views of Programs”, Proc ACM SIGSOFT/SIGPLAN Software Engineering Symp. Practical Software Development Environments.Google Scholar
- McCabe, F.G. and Clark, K.L., (1980), Micro-Prolog 3.0 Programmer's Reference Manual, Logic Programming Associates Ltd.Google Scholar
- 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
- Nakashima, H. (1984), “Knowledge Representation in Prolog/KR”. In Proc. Intl. Symp. on Logic P rogramming, IEEE Computer Society, pp 126–130.Google Scholar
- Ramamoorthy, C.V. et al (1985), “GENESIS: An Interactive Environment for Development and Evolution of Software”. In Proc. COMPSAC, 1985.Google Scholar
- Sandewall, E. (1978), “Programming in an Interactive Environment: The Lisp Experience”. In Computing Surveys, 10(1), pp 35–71.Google Scholar
- 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
- Shapiro, E.Y. (1984), “Systems Programming in Concurrent Prolog”, in Proc. 11th ACM POPL Symp., Salt Lake City, Utah.Google Scholar
- 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
- 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
- Stoye, W. (1986), “A New Scheme for Writing Functional Operating Systems”, Research Report, University of Cambridge Computing Laboratory, Cambridge, 1986.Google Scholar
- Teitelbaum, T., and Reps, T. (1981), “The Cornell Program Synthesiser: A Syntax-Directed Programming Environment”. In CACM, 24(9).Google Scholar
- Teitelman, W. and Masinter, L. (1981), “The Interlisp Programming Environment”. In IEEE Computer 14(4), pp 25–33.Google Scholar
- Wulf, W.A. (1981), HYDRA/C.mmp: An Experimental Computer System, McGraw-Hill, N.Y.Google Scholar