- Instructor:
Frank Pfenning,
*fp@cs*, WeH 8127, x8-6343 - Times: Tu Th 10:30-11:50
- Room: WeH 5409
- Credits: 1 CU (CS)
- Mailing List:
*comp-ded@cs.cmu.edu*; mail*fp@cs*to be included - Office Hours: By appointment or by chance (Mon, Wed, Fri preferred)
- Course Directory:
`/afs/cs/user/fp/courses/95-lp`

Quick Pointers:

- Lecture plan
- Assigned exercises
- Assigned project duties
- Running Sicstus Prolog
- Running SML of New Jersey
- Handout for Lecture 1 on
*Natural Deduction*(in DVI or PostScript format) - Handout for Lecture 2 on
*Sequent Calculus*(in DVI or PostScript format) - Handout for Lecture 3 on
*Uniform Derivations*(in DVI or PostScript format) - Code for
Lecture 6 on
*Programming in Prolog* - Handout for Lecture 8 on
*A First Prolog Interpreter*(in DVI or PostScript format).

A revised version appeared as:

Conal Elliott and Frank Pfenning.*A semi-functional implementation of a higher-order logic programming language.*In**Topics in Advanced Language Implementation**, Peter Lee (editor), Chapter 12, pages 288-325, MIT Press, 1991.

The root directory for the code of the SML implementation is`/afs/cs/user/fp/courses/95-lp/code/elpsml/`

- Code for
Lecture 9 on
*The Basic WAM Architecture*. - Code for
Lecture 11 on
*The Structure of a Prolog Compiler*. - Code for
Lecture 12 on
*Goals as Data*. - Code for
Lecture 14 on
*Concurrent Programming in Prolog*. - Talk by Peter Van Roy on Issues in Implementing Logic Languages, May 1994, École de Printemps, Châtillon sur Seine, France. PostScript available locally.
- Peter Van Roy,
*1983-1993: The Wonder Years of Sequential Prolog Implementation*, Journal of Logic Programming, Elsevier, Vol. 19/20, May/July 1994, pp. 385-441. Also available as Research Report 36, Digital Equipment Corporation, Paris Research Laboratory, 1994. PostScript available locally. - Slides for
Lecture 21 on
*Linear Resolution and Resource Management*. - Slides for
Lecture 22 on
*Linear Logic Programming Examples*. - Slides for
Lecture 23 on
*Implementing Lolli*. - Examples of linear logic programs.
- Draft paper on Efficient Resource
Management for Linear Logic Proof Search by I. Cervesato, J. Hodas, and
F. Pfenning, to appear at the
*International Workshop on Extensions of Logic Programming*, Leipzig, Germany, March 1996. Also available in PostScript.

This course provides a thorough introduction to logic programming. We will follow two threads: in one thread we will discuss language design, programming techniques, and theoretical foundations, in the other efficient implementation. As a joint project we will construct a compiler, incrementally adding features as the class progresses.

- Computation as Proof Search
- Natural Deduction and Sequent Calculus
- Uniform Derivations
- Resolving Non-Determinism
- A First Interpreter

- Prolog
- Programming with Extra-Logical Constructs
- The Interpreter Revisited
- Common Techniques and Pitfalls
- Warren's Abstract Machine

- Structured Logic Programming
- Types and Polymorphism
- Modes and Directionality
- [Modules]
- [Subtyping]

- Constraint Logic Programming
- The CLP Model
- Some Constraint Domains
- Implementation Techniques

- Linear Logic Programming
- Linear Logic and Uniform Derivations
- Imperative Logic Programming
- Implementation Techniques

- [Reasoning about Logic Programs]
- [Proof Terms and Dependent Types]
- [Inductive Definitions]
- [Abstract Interpretation]
- [Advanced Compilation]

- Richard A. O'Keefe. The Craft of Prolog. MIT Press, 1990.
- Hassan Ait-Kaci. Warren's Abstract Machine: A Tutorial Reconstruction. MIT Press, 1991.

fp@cs