Programación Lógica /
Logic Programming (2011-2012)
Para los alumnos de la asignatura optativa del Plan 96:
Welcome to the home page of "Programación Lógica / Logic
Programming," a one-semester course on logic programming covering both
practice and theory.
This course is one of the two subjects in the Computational Logic
area of the
Master in Artificial Intelligence
taught at the
School of Computer Science,
Technical University of Madrid
(Department of Artificial
The course is taught this year by:
who are members of the CLIP
(Computational logic, Languages, Implementation and Parallelism) research
Please note that these pages are all under permanent
construction/change. Comments, questions, raves, rants, etc., as well
as administrative questions regarding e.g. grading, changes in the
schedule, etc., regarding this course should be directed by email to
Main information on the course:
- (11-12) Basic course info, bibliography, grading, etc.
The Programación Lógica Mail
Archive (both in English and Spanish).
Contains all email messages to date, including instructions,
homework assignments, grades, etc.
All students must subscribe to this list. The list is
managed automatically by the
- To subscribe, send a message to
containing in the body the word subscribe alone
in one line. Make sure your mailer does not add html
commands to the body.
- To unsubscribe, same as above, but put in the body
unsubscribe alone in one line.
- To see the messages to date, look
- You can also
subscribe using the Mailman interface.
- (08-09) Moodle
pages for the course (used mainly to turn in assignments).
Course Slides (in English)
(note that these notes may be
improved during the course):
Note: 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 pdf-2perpage and
ps-2perpage 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.
- (10-11) Introduction and Motivation.
- (10-11) Course outline.
- (10-11) Bibliography.
- (10-11) A "Hands-on"
Intro to Logic Programming.
- (10-11) The Prolog Programming Language.
- (10-11) Efficiency Issues in Prolog.
- (10-11) Introduction to programming with Ciao.
- Background theoretical material:
Note to web surfers: You are welcome to use all or part of this
course material, but if you do so we ask you to please quote the
origin. We would also very much appreciate if you let us know that
you are using it and send us any errors you may find by email to <email@example.com>. Thanks
General Note: We used to start with basic theory (resolution,
etc..), then Logic Programming, then Prolog. Lately, we have decided
to start directly with a quick introduction to Logic Programming and
Prolog programming, relating things at the end with logic theory. 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
(One of the reasons for doing things the way we do them is that our
students take two semesters of logic prior to this course and are
therefore quite familiar with, e.g., resolution, models. etc., but not
with logic programming.)
Some Free Prolog Systems (incomplete!):
Fast, modular, with many interesting extensions (in fact, it is a
multi-paradigm system that also supports, e.g., functional
programming and constraint programming). Works on
Unix/Linux, Windows, Mac OS X, and others.
Good programming environment. Much more powerful but larger
download than SWI.
Features are added often to Ciao so we recommend
always getting the latest version.
An all around good Prolog system for leaning. Works on Unix/Linux
and Windows. Main disadvantages: relatively slow / fewer features.
GNU Emacs 21 Reference Card
Last modified: Wed Apr 14 21:48:15 2010