Course on Logic Programming (15-810D)
- 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.
Description
Logic programming is a paradigm in which specifications and programs are
expressed within the same language. Traditionally, this language has been
Prolog, a first-order Horn logic augmented with some extra-logical features.
Modern research in logic programming is concerned with languages that are
simultaneously more expressive and purer than Prolog, including types and
modes, higher-order features, constraints, linearity and state, concurrency,
and modules.
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.
Prerequisites
There are no formal prerequisites, but familiarity with Standard ML (the
implementation language for the compiler) will be assumed. Students outside
computer science and enterprising undergraduates are welcome, but require
permission of the instructor.
Evaluation
Grades are based on class participation, homework (for the first part of the
course) and the contribution to the class project.
Outline
- 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]
[Topics in brackets were not covered]
Course Material
Some notes and papers will be handed out and also available from
my secretary (Marge Profeta, WeH 8110). We will also refer to
the two books below, which have been put on reserve in the E&S library.
- 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