Higher-order aspects of logic programming

  • Uday S. Reddy
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 798)


Are higher-order extensions to logic programming needed? We suggest a negative answer by showing that higher-order features are already available in pure logic programming. It is demonstrated that higher-order lambda calculus-based languages can be compositionally embedded in logic programming languages preserving their semantics and abstraction facilities. Further, we show that such higher-order techniques correspond to programming techniques often practiced in logic programming.


Higher-order features functional programming lambda calculus logic variables concurrent logic programming types semantics 


  1. [Abr91]
    S. Abramsky. Computational interpretation of linear logic. Tutorial Notes, International Logic Programming Symposium, San Diego, 1991, 1991.Google Scholar
  2. [Abr93]
    S. Abramsky. Computational interpretations of linear logic. Theoretical Comp. Science, 111(1–2):3–57, 1993.Google Scholar
  3. [Bar91]
    M. Barr.. *-Autonomous categories and linear logic. Math. Structures in Comp. Science, 1:159–178, 1991.Google Scholar
  4. [BW88]
    R. Bird and P. Wadler. Introduction to Functional Programming. Prentice-Hall International, London, 1988.Google Scholar
  5. [CKW89]
    W. Chen, M. Kifer, and D. S. Warren. HiLog: A first-order semantics for higher-order logic programming constructs. In L. Lusk, E and R. A. Overbeek, editors, Logic Programming: Proc. of the North American Conf. 1989, pages 1090–1144. MIT Press, 1989.Google Scholar
  6. [CT77]
    K. L. Clark and S. A. Tarnlund. A first-order theory of data and programs. In Information Processing, pages 939–944. North-Holland, 1977.Google Scholar
  7. [DOPR91]
    A. Dovier, E. G. Omodeo, E. Pontelli, and G. F. Rossi. {log: A logic programming langugae with finite sets. In K. Furukawa, editor, Logic Programming: Proceedings of the Eigth International Conference. MIT Press, 1991.Google Scholar
  8. [Gir87]
    J.-Y. Girard, Linear logic. Theoretical Comp. Science, 50:1–102, 1987.Google Scholar
  9. [Gre87]
    S. Gregory. Parallel Logic Programming in PARLOG: The Language and its Implementation. Addison-Wesley, Reading, Mass., 1987.Google Scholar
  10. [Gun92]
    C. A. Gunter. Semantics of Programming Languages: Structures and Techniques. MIT Press, 1992.Google Scholar
  11. [Hug86]
    R. J. M. Hughes. A novel representation of lists and its application to the function “reverse”. Information Processing Letters, 22:141–144, Mar 1986.Google Scholar
  12. [Laf87]
    Y. Lafont. Linear logic programming. In P. Dybjer, editor, Porc. Workshop on Programming Logic, pages 209–220. Univ. of Goteborg and Chalmers Univ. Technology, Goteborg, Sweden, Oct 1987.Google Scholar
  13. [Lak91]
    T. K. Lakshman. Typed prolog: Type checking/type reconstruction system (version 1.0). Software available by anonymous FTP from cs.uiuc.edu, 1991.Google Scholar
  14. [LM84]
    J.-L. Lassez and M. J. Maher. Closures and fairness in the semantics of programming logic. Theoretical Computer Science, pages 167–184, May 1984.Google Scholar
  15. [LR91]
    T.K. Lakshman and U. S. Reddy. Typed Prolog: A Semantic Reconstruction of the Mycroft-O'Keefe Type System. In V. Saraswat and K. Ueda, editors, Logic Programming: Proceedings of the 1991 International Symposium, pages 202–217. MIT Press, Cambridge, Mass., 1991.Google Scholar
  16. [Mil90]
    R. Milner. Functions as processes. In Proceedings of ICALP 90, volume 443 of Lect. Notes in Comp. Science, pages 167–180. Springer-Verlag, 1990.Google Scholar
  17. [MN86]
    D. A. Miller and G. Nadathur. Higher-order logic programming. In Intern. Conf. on Logic Programming, 1986.Google Scholar
  18. [Nai86]
    Lee Naish. Negation and control in Prolog, volume 238 of Lect. Notes in Comp. Science. Springer-Verlag, New York, 1986.Google Scholar
  19. [Pau91]
    L. C. Paulson. ML for the Working Programmer. Cambridge Univ. Press, Cambridge, 1991.Google Scholar
  20. [PE88]
    F. Pfenning and C. Elliott. Higher-order abstract syntax. In ACM SIGPLAN '88 Conf. Program. Lang. Design and Impl., pages 22–24. ACM, 1988.Google Scholar
  21. [Plo77]
    G. D. Plotkin. LCF considered as a programming language. Theoretical Comp. Science, 5:223–255, 1977.Google Scholar
  22. [Red93a]
    U. S. Reddy. Higher-order functions and state-manipulation in logic programming. In R. Dyckhoff, editor, Fourth Workshop on Extensions of Logic Programming, pages 115–126, St. Andrews, Scotland, Mar 1993. St. Andrews University.Google Scholar
  23. [Red93b]
    U. S. Reddy. A typed foundation for directional logic programming. In E. Lamma and P. Mello, editors, Extensions of Logic Programming, volume 660 of Lect. Notes in Artificial Intelligence, pages 282–318. Springer-Verlag, 1993.Google Scholar
  24. [Sar92]
    Vijay Saraswat. The category of constraint systems is Cartesian-closed. In Proceedings, Seventh Annual IEEE Symposium on Logic in Computer Science, pages 341–345, Santa Cruz, California, 22–25 June 1992. IEEE Computer Society Press.Google Scholar
  25. [Sco69]
    D. S. Scott. A type theoretical alternative to CUCH, ISWIM and OWHY. Unpublished manuscript, Oxford University, 1969.Google Scholar
  26. [Sha83]
    E. Y. Shapiro. A subset of Concurrent Prolog and its interpreter. Technical Report TR-003, ICOT-Institute of New Generation Computer Technology, January 1983. (Reprinted in [Sha87].).Google Scholar
  27. [Sha87]
    E. Shapiro. Concurrent Prolog: Collected Papers. MIT Press, 1987. (Two volumes).Google Scholar
  28. [ST86]
    E. Shapiro and A. Takeuchi. Object-oriented programming in Concurrent Prolog. New Generation Computing, 4(2):25–49, 1986. (reprinted in [Sha87].).Google Scholar
  29. [Ued86]
    K. Ueda. Guarded Horn clauses. In E. Wada, editor, Logic Programming, pages 168–179. Springer-Verlag, 1986. (reprinted in [Sha87].).Google Scholar
  30. [Wad92]
    P. Wadler. The essence of functional programming. In ACM Symp. on Princ. of Program. Lang., 1992.Google Scholar
  31. [War82]
    D. H. D. Warren. Higher-order extensions to Prolog: Are they needed? In D. Michie, editor, Machine Intelligence, 10, pages 441–454. Edinburgh University Press, 1982.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1994

Authors and Affiliations

  • Uday S. Reddy
    • 1
  1. 1.Department of Computer ScienceUniversity of Illinois at Urbana-ChampaignUrbana

Personalised recommendations