CS218 and CS318: Higher-Order Logic Programming
Lecture Schedule and Reading List

There are 19 lectures in all this quarter, and the plan for these is provided below. Relevant references for each lecture are also indicated; links through WWW are provided where these are available. Not all the literature mentioned will be covered in class. References annotated as (Main) contain necessary material, unannotated references contain relevant material that will be touched upon and references with the annotation (Aux) are listed only for further reading. Some of these readings are apt sources for term papers and class presentations if this becomes a component of the required work.

I stress that a lecture schedule set out at the beginning of the course is always a tentative one and this one is no different. Modifications will be made based on the preparedness of students and on specific interests expressed by them. (A request in this regard: Please let the instructor know early of any special topics related to the title of the course that you would like discussed.) The lectures will be delivered in seminar style, i.e. they will tend to overview topics, skipping details such as proofs. These details will usually be found in the references and it is a good idea to familiarize yourself with the listed literature for a lecture before the lecture.


Lectures 1 and 2

Topic
An informal introduction to lambda Prolog and its new programming language features: scoping mechanisms, higher-order programming, lambda terms as data structures.
References
  1. G. Nadathur and D. Miller, Higher-Order Logic Programming. To appear in Handbook of Logic in AI and Logic Programming, D. Gabbay, C. Hogger and A. Robinson (eds.) Only Section 2. (Main)
  2. G. Nadathur, B. Jayaraman and K. Kwon, Scoping Constructs in Logic Programming. To appear in Journal of Logic Programming. Only Section 2. (Main)
  3. D. Miller, Abstractions in Logic Programming. In Logic and Computer Science , P Odifreddi (ed.), Academic Press, pp 329 - 359, 1990.


Lectures 3, 4 and 5

Topic
Introduction to a higher-order logic; simply typed lambda terms, lambda conversion, logical constants and formalization of their semantics via proof rules, comparison to first-order logic, predicate quantification, general and standard semantics.
References
  1. G. Nadathur and D. Miller, Higher-Order Logic Programming. To appear in Handbook of Logic in AI and Logic Programming, D. Gabbay, C. Hogger and A. Robinson (eds.). Only Section 3. (Main)
  2. Other references include [And71], [Chu40], [Hen50] in first reference.


Lectures 6, 7 and 8

Topic
Uniform proofs as a foundation for logic programming, Horn clause logic as an abstract logic programming language, hereditary Harrop formulas
References
  1. D. Miller, G. Nadathur, F. Pfenning and A. Scedrov, Uniform Proofs as a Foundation for Logic Programming, Annals of Pure and Applied Logic 51: 125 - 157, 1991. (Main)
  2. D. Loveland and G. Nadathur, Proof Procedures in Logic Programming. To appear in Handbook of Logic in AI and Logic Programming, D. Gabbay, C. Hogger and A. Robinson (eds.). Only Section 2. (Main)


Lectures 9, 10 and 11

Topic
Higher-order hereditary Harrop formulas, development of a proof procedure, tagged higher-order unification
References
  1. D. Miller, G. Nadathur, F. Pfenning and A. Scedrov, Uniform Proofs as a Foundation for Logic Programming, Annals of Pure and Applied Logic 51: 125 - 157, 1991. (Main)
  2. G. Nadathur, A Proof Procedure for the Logic of Hereditary Harrop Formulas, Journal of Automated Reasoning 11: 115-145, 1993. (Main)
  3. G. Nadathur and D. Miller, Higher-Order Logic Programming. To appear in Handbook of Logic in AI and Logic Programming, D. Gabbay, C. Hogger and A. Robinson (eds.) Only Section 6. (Main)
  4. G. Huet, A Unification Algorithm for Typed lambda-Calculus, Theoretical Computer Science 1:27-57, 1973. (Main)
  5. W. Snyder and J. Gallier, Higher-Order Unification Revisited: Complete Sets of Transformations, Journal of Symbolic Computation 8: 101 - 140, 1989.
  6. D. Miller, Unification under a Mixed Prefix, Journal of Symbolic Computation 14: 321 - 358, 1992.
  7. W. Goldfarb, The Undecidability of the Second-Order Unification Problem, Theoretical Computer Science 13:225-230, 1981. (Aux)
  8. G. Huet, The Undecidability of Unification in Third Order Logic, Information and Control 22:257 - 267, 1973. (Aux)
  9. G. Huet and B. Lang, Proving and Applying Program Transformations Expressed with Second-Order Patterns, Acta Informatica 11: 31 - 55, 1978. (Aux)
  10. G. Dowek, Third-Order Matching is Decidable, Annals of Pure and Applied Logic 69: 135 - 155, 1994. (Aux)


Lectures 12 and 13

Topic
Lambda Prolog as a programming language based on higher-order hereditary Harrop formulas. Applications of lambda Prolog in higher-order programming and meta-programming. Higher-order abstract syntax
References
  1. G. Nadathur and D. Miller, Higher-Order Logic Programming. To appear in Handbook of Logic in AI and Logic Programming, D. Gabbay, C. Hogger and A. Robinson (eds.) Sections 7, 8 and 9 will be covered in Lectures 6, 7 and 8. (Main)
  2. D. Miller and G. Nadathur, A Logic Programming Approach to Manipulating Formulas and Programs. In Proceedings of the IEEE Symposium on Logic Programming, September 1987, pages 379 - 388. (Main)
  3. F. Pfenning and C. Elliott, Higher-Order Abstract Syntax. In Proceedings of the ACM SIGPLAN '88 Symposium on Language Design and Implementation, June 1988, pages 199 - 208.
  4. A. Felty and D. Miller, Specifying Theorem Provers in a Higher-Order Logic Programming Language. In Proceedings of the Ninth International Conference on Automated Deduction, E. Lusk and R. Overbeek (eds.), May 1988, Springer-Verlag LNCS 310, pages 61 - 80.
  5. D. Miller and G. Nadathur, Some Uses of Higher-Order Logic in Computational Linguistics. In Proceedings of the 24th Annual Meeting of the Association for Computational Linguistics, June 1986, 247 -- 255. (Aux)
  6. A. Felty, Specifying and Implementing Theorem Provers in a Higher-Order Logic Programming Language, Ph.D. Thesis, University of Pennsylvania, August 1989. Available as UPenn Tech Report MS-CIS-89-53. (Aux)
  7. J. J. Hannan, Investigating a Proof-Theoretic Meta-Language for Functional Programs, Ph.D Thesis, University of Pennsylvania, January 1991. Available as UPenn Technical Report MS-CIS-91-09. (Aux)
  8. R. Pareschi, Type-Driven Natural Language Analysis, Ph.D. Thesis, University of Edinburgh, 1989. (Aux)
  9. S. Dietzen, A language for Higher-Order Explanation Based Learning, Ph.D. Thesis, School of Computer Science, Carnegie Mellon University, 1991. Available as CMU Technical Report CMU-CS-92-110. (Aux)


Lectures 14 and 15

Topic
A ``demo'' of the lambda Prolog system and an illustration of its specific metalanguage applications. (It is hoped that you would have already tried out the lambdaProlog system before these lectures --- the main purpose of the class time will be to focus attention on some of the intended applications and not to introduce you to lambdaProlog programming.)
References
  1. Handout to be given in a previous lecture.
  2. A. Felty and D. Miller, Specifying Theorem Provers in a Higher-Order Logic Programming Language. In Proceedings of the Ninth International Conference on Automated Deduction, E. Lusk and R. Overbeek (eds.), May 1988, Springer-Verlag LNCS 310, pages 61 - 80. (Main)


Lecture 16 and 17

Topic
Further discussions of metalanguage aspects, the sublanguage L_lambda and its applications
References
  1. G. Nadathur and D. Miller, Higher-Order Logic Programming. To appear in Handbook of Logic in AI and Logic Programming, D. Gabbay, C. Hogger and A. Robinson (eds.) Focus on Sections 8 and 9. (Main)
  2. D. Miller, A Logic Programming Language with lambda-Abstraction, Function Variables, and Simple Unification, Journal of Logic and Computation 1(4): 497 - 536, 1991. (Main)
  3. T. Nipkow, Functional Unification of Higher-Order Patterns. In Proceedings of the Eighth Annual {IEEE} Symposium on Logic in Computer Science, M. Vardi (ed), 1993.


Lecture 18 and 19

Topic
Implementation issues related to lambda Prolog, clause scoping and backtracking, lambda term representation, higher-order unification and branching
References
  1. G. Nadathur, B. Jayaraman and K. Kwon, Scoping Constructs in Logic Programming. To appear in Journal of Logic Programming.
  2. G. Nadathur, B. Jayaraman and D. S. Wilson, Implemention Considerations for Higher-Order Features in Logic Programming, Duke Technical Report CS-1993-16.
  3. K. Kwon and G. Nadathur, An Instruction Set for Higher-Order Hereditary Harrop Formulas (Extended Abstract), Proceedings of the Workshop on the lambda Prolog Programming Language, Philadelphia, 1992. Proceedings available as UPenn Technical Report MS-CIS-92-86.
  4. G. Nadathur and D.S. Wilson, A Notation for Lambda Terms I: A Generalization of Environments, Duke Technical Report CS-1994-03. (Aux)
  5. G. Nadathur, A Notation for Lambda Terms II: Refinements and Applications, Duke Technical Report CS-1994-01. (Aux)
  6. M. Abadi, L. Cardelli, P.-L. Curien and J.-J. Levy, Explicit Substitutions. In Proceedings of the Seventeenth Annual ACM Symposium on Principles of Programming Languages, ACM Press, pages 31 - 46, January, 1990. (Aux)
  7. G. Dowek, T. Hardin and C. Kirchner, Higher-Order Unification via Explicit Substitutions. Proceedings of the Tenth Annual Symposium on Logic in Computer Science, D. Kozen (ed.), IEEE Computer Society Press, June 1995, pages 366--374. (Aux)