# Computer Science 218 and 318

Higher-Order Logic Programming

Department of Computer Science

The University of Chicago

- Instructor:
Gopalan Nadathur

- Office: Ryerson 166

- Office hours: By appointment. Call me at
*312-702-3497* or send
me email at *(gopalan@cs.uchicago.edu)* to schedule a
meeting.

- Sources for material: There is no text. The paper Higher-Order
Logic Programming will be a primary source. Also see the lecture
schedule and outline of topics for specific references.

## Course Description

The topic of discussion will be the notion of higher-order logic
programming as embodied in the language lambdaProlog. We will
present the language, explain the logical theory underlying it,
examine its applications and discuss issues relevant to its
implementation. Topics to be covered include the following:
- (Simply typed) lambda calculus, higher-order logic
- Sequent calculus, proof-theoretic foundation of logic
programming based on uniform proofs, computation as proof search
- Higher-order hereditary Harrop formulas, abstraction mechanisms
in logic programming, the lambdaProlog and L_lambda languages
- Higher-order unification, pattern unification, handling
quantifier dependencies, interpreters for lambdaProlog (and
L_lambda)
- Higher-order programming in logic programming, comparison with
functional programming, tactic-style theorem provers in
lambdaProlog
- Meta-level and object-level distinctions, lambda calculus as an
encoding language, metalanguage applications of lambdaProlog
- Representations for lambda terms based on explicit
substitutions, abstract machine issues for lambdaProlog

An implementation of lambdaProlog will be available for
experimentation during the course. The required work will include
some combination of assignments, a term paper and exams. (Details to
be announced in the second week of the quarter.)

Last modified: October 3, 2000 by gopalan@cs.umn.edu