CLIP

Computational Logic Course Material

Logic Programming, Prolog, Constraint Logic Programming, Resolution, Verification, ...


This site provides some course material on Logic Programming, Prolog, CLP, and Computational Logic in general, covering both theory and practice. Different parts of this material come from undergraduate and graduate courses taught by us at different institutions, including the Technical University of Madrid (UPM -- CS / AI Dept.), the IMDEA Software Institute, UT Austin (CS Dept.), and the University of New Mexico (CS and ECE Depts).

We use the Ciao Prolog system and the Prolog Playground for teaching these courses, since they allow covering within one system pure logic programming, different search rules, Prolog, CLP, analysis, verification, partial evaluation, tabling, etc., but most of the programs can also be run on any system supporting ISO-Prolog, constraint libraries, etc.

See also Some Thoughts on How to Teach Prolog (and this video) for some of the rationale behind this course material and Teaching Prolog with Active Logic Documents (both in the book Prolog - The Next 50 Years) for some of the tools that we have developed for teaching Prolog, LP, CLP, etc.

These courses have been developed and are taught by members of the CLIP group and other contributors. There is much more information available on the CLIP (Computational Logic, Languages, Implementation, and Parallelism) research group and our Computational Logic Software pages. Please note that these pages are all under permanent construction/change. Suggestions, comments, questions, raves, rants, etc., should be directed by email to <clip@cliplab.org>. You are welcome to use all or part of this course material, we only ask you to please quote the origin. We would also very much appreciate if you let us know that you are using it and also that you send us by email to the address above any error corrections or improvements you may make to this material. Thanks in advance.


Introduction(s):

Pure Logic Programming

  • A "hands-on" Introduction to Logic Programming. [pdf] [Code for examples.]
  • Developing Programs with a Logic Programming System [pdf]

Prolog

LP Theory

  • Automated Deduction Fundamentals. [pdf]
  • First Order Logic and Logic Programming Theory. [pdf]
  • Same, but just the model and fixpoint semantics. [pdf]

Constraint Logic Programming

Some (older) Ciao tutorials

Other topics

  • Global Analysis by Abstract Interpretation. [pdf]
  • Abstract Specialization and its Applications. [pdf]
  • Parallel Execution of Logic Programs. [pdf]
  • Intro to Prolog Implementation:
    WAM tutorial, by Hassan Ait-Kaci. [Slides pdf] [Book website]
    Manuel Hermenegildo's original 1989 tutorial. [slides pdf]
  • Distributed/Internet programming using LP/CLP systems. [pdf]
  • WWW programming using LP/CLP systems. [pdf] [Code for examples.]
  • A very brief intro to Operational and Axiomatic Semantics [pdf]

General Note: We used to start with basic theory (resolution, etc..), then Logic Programming, then Prolog, CLP(*), and Concurrent LP. Eventually, we decided to start directly with a quick introduction to Logic Programming and Prolog programming, presenting only afterwards theory, CLP, and Concurrent (C)LP. If you prefer to start with theory, just use the lp_theory slides first and skip some slides (first order languages and unification, mainly) from logic_programming.tex.

(One of the reasons for doing things this way is that our students take a semester of formal logic prior to this course and are therefore quite familiar with, e.g., resolution, but not with logic programming. We feel it is best for student motivation to get as quickly as possible to the practical use of the programming tools.)

------------