- Predicate logic
- Inference rules
- Horn clauses
- Unification
- Resolution
- Conjunctive normal form
- Origins of Prolog
- Clauses, predicates and facts
- Queries
- Rules
- Logic variables
- Instantiation
- Logic programming and databases
- Recursion
- Lists and trees
- Symbolic expressions
- Computation model of a logic program
- The unification algorithm
- Abstract interpreter
- Traces
- Search trees
- Negation
- Execution model
- Backtracking
- Rule and goal order
- Termination
- Arithmetic
- Iteration
- Structure inspection
- Meta-logical predicates
- Control: cuts and negation
- Extra-logical predicates
- Non-deterministic programming
- Incomplete data structures
- Meta-interpreters
- Search techniques
- Constraints
- Constraint satisfaction
- Constraints in finite domains.
- Constraint logic programming (CLP)
- Search control
- Variable and value ordering
- Modelling problems in CLP
- Constraint programming using SICStus Prolog
The Logic Programming paradigm is a declarative approach to programming, based on formal reasoning processes, which is more appropriate to address some types of problems. Constraint logic programming allows addressing constraint satisfaction and optimization problems by modeling them in a straightforward and elegant fashion.
Aims: To get acquainted with the Logic Programming and Constraint Programming paradigms. To develop skills for abstract reasoning and declarative problem representation.
The course focuses on first-order logic programming. On the practical side the Prolog programming language is explored. Additionally, constraint logic programming is also introduced, and several application examples are provided.
At the end of this course, students must be able to:
- Identify classes of problems where (Constraint) Logic Programming is particularly relevant.
- Apply Prolog programming and constraint logic programming techniques.
- Build full Prolog applications, with possible connections to other programming languages.
- Sterling, Leon; The Art of Prolog. ISBN: 0-262-69163-9
- Marriot, Kim; Programming with constraints. ISBN: 0-262-13341-5
- Clocksin, W. F.; Programming in prolog. ISBN: 0-387-58350-5
- Christopher Hogger, Essentials of logic programming. ISBN:0-19-853832-4
- Torres, Delfim Fernando Marado; Introdução à programação em lógica. ISBN: 972-8021-93-3
- Bratko, Ivan; Prolog programming for artificial intelligence. ISBN: 0-201-40375-7
- O.Keefe, Richard A.; The craft of Prolog. ISBN: 0-262-15039-5
- Stuart Russell, Peter Norvig; Artificial intelligence. ISBN: 978-0-13-207148-2