15-819(K)  Logic Programming
Frank Pfenning
12 Units
 

http://www.cs.cmu.edu/~fp/courses/lp

DESCRIPTION:

Logic programming is a paradigm where computation arises from proof
search in a logic according to a fixed, predictable strategy.  It
thereby unifies logical specification and implementation in a way that
is quite different from functional or imperative programming.  This
course provides a thorough, modern introduction to logic programming.
It consists of a traditional lecture component and a project component.
The lecture component introduces the basic concepts and techniques of logic
programming followed by successive refinement towards more efficient
implementations or extensions to richer logical concepts.  We plan
to cover a variety of logics and operational interpretations.  The
project component will be one or several projects related to logic
programming.

PREREQUISITES: For undergraduates 15-399 Constructive Logic or 15-312 Foundations of Programming Languages. No prerequisites for graduate students.

TEXT: There is no textbook, but notes and papers will be handed out. METHOD OF EVALUATION: 40% homework, 20% midterm, 40% project (tentative).

TOPICS TO BE COVERED: Horn logic, intuitionistic logic, linear logic, unification, constraints, backward chaining, backtracking, forward chaining, saturation, proof terms, higher-order patterns, concurrency, resource management, logical compilation. Time permitting: deontic, epistemic, or other modal logics, reasoning about logic programs.