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.