Computational Logic Course Material

Resolution, Logic Programming, and Constraint Logic Programming

This page provides some course material in Computational Logic, covering both theory and practice.

Different parts of this material come from undergraduate and graduate courses taught by us at our institutions (School of Computer Science, Technical University of Madrid and Departments of Computer Science and Electrical and Computer Engineering, University of New Mexico) as well as in several other institutions.

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, Implementation and Parallelism) research group and our Computational Logic Software.

In particular, we use the Ciao Prolog system for teaching these courses since it allows covering within one system pure logic programming, Prolog, CLP, verification, partial evaluation, tabling, etc.

Please note that these pages are all under permanent construction/change. Suggestions, comments, questions, raves, rants, etc., should be directed by email to <>.

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.

Computational Logic Slides:

The pdf pointers point to the full size PDF versions, suitable for viewing on-line with, for example, acroread, xpdf, ghostscript/ghostview, etc. The ps pointers point to the full size PostScript versions, suitable for viewing on-line with, for example, ghostscript/ghostview. The pdf2perpage and ps2perpage pointers point to reduced PDF/PostScript versions (two or more slides per page), which are suitable for printing. The html pointers point to the html versions, suitable for WWW browsing.
  • Introduction and Motivation (w/verification). [pdf, html]
  • Introduction and Motivation (older). [pdf, html]
  • Some Textbooks and References. [pdf, html]
  • "Hands-on" Intro to Logic Programming. [pdf, html] Code.
  • The Prolog Programming Language. [pdf, html] Code.
  • Efficiency Issues in Prolog. [pdf, html]
  • The Ciao Programming System. [pdf, html].
  • The LPdoc Automatic Documenter. [pdf, html].
  • Automated Deduction Fundamentals. [pdf, html]
  • First Order Logic and Logic Programming Theory. [pdf, html]
  • Same, but just the model and fixpoint semantics. [pdf, html]
  • Constraint Logic Programming. [pdf, html] Program Examples (in Ciao).
  • Constraint Programming: Finite Domains. [pdf, html]
  • CLP: operational, model, and fixpoint semantics. [pdf, html]
  • WWW programming using LP/CLP systems. [pdf, html] Code.
  • Intro to Prolog Implementation: The WAM, from Hassan Ait-Kaci. [slides pdf, book pdf, book website]
    Manuel Hermenegildo's 1989 original slides. [pdf]
  • Parallel Execution of Logic Programs. [pdf, html]
  • Global Analysis of LP/CLP by Abstract Interpretation. [pdf, html]
  • The Ciao System Preprocessor (CiaoPP). [pdf, html].
  • Abstract Specialization and its Applications. [pdf, html].
  • Operational and Axiomatic Semantics (very simple intro). [pdf, html].
  • Concurrent (Constraint) Logic Programming. [pdf, html]
  • Distributed/Internet programming using LP/CLP systems. [pdf, html].
  • 5-day seminar on CLP.
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. This is the version in these pages -- which is not very different from the previous one, except for the order. If you prefer to start with theory, just use the lp_theory slides first and remove 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.)