© Patrick Blackburn, Johan Bos & Kristina Striegnitz

Slides:



Advertisements
Similar presentations
© Johan Bos Logic Programming About the course –Taught in English –Tuesday: mostly theory –Thursday: practical work [lab] Teaching material –Learn Prolog.
Advertisements

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 10: Cuts and Negation Theory –Explain how to control Prolog`s backtracking behaviour with.
Lecturer: Dr. Abeer Mahmoud Logic Programming in Prolog.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 6: More Lists Theory –Define append/3, a predicate for concatenating two lists, and illustrate.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 6: More Lists Theory –Define append/3, a predicate for concatenating two lists, and illustrate.
Prolog: List © Patrick Blackburn, Johan Bos & Kristina Striegnitz.
1 Introduction to Prolog References: – – Bratko, I., Prolog Programming.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 1 Introduction to Prolog.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 3: Recursion Theory –Introduce recursive definitions in Prolog –Four examples –Show that there.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 3: Recursion Theory –Introduce recursive definitions in Prolog –Four examples –Show that there.
Prolog: Unification & Recursion © Patrick Blackburn, Johan Bos & Kristina Striegnitz.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 10 Exercises –Solutions to Exercises of LPN chapter 9 Theory –Explain how to control Prolog`s.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Logic Programming About the course –Taught in English –Tuesday: mostly theory –Thursday: practical.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 5: Arithmetic Theory –Introduce Prolog`s built-in abilities for performing arithmetic –Apply.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 7: Definite Clause Grammars Theory –Introduce context free grammars and some related concepts.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 4: Lists Theory –Introduce lists, an important recursive data structure often used in Prolog.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 2 Theory –Unification –Unification in Prolog –Proof search Exercises –Correction exercises.
Search in the semantic domain. Some definitions atomic formula: smallest formula possible (no sub- formulas) literal: atomic formula or negation of an.
Last time Proof-system search ( ` ) Interpretation search ( ² ) Quantifiers Equality Decision procedures Induction Cross-cutting aspectsMain search strategy.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 9: A closer look at terms Theory –Introduce the == predicate –Take a closer look at term structure.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 5: Arithmetic Theory –Introduce Prolog`s built-in abilities for performing arithmetic –Apply.
Logic Programming Part 2: Semantics James Cheney CS 411.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 4: Lists Theory –Introduce lists, an important recursive data structure often used in Prolog.
9.1Concepts of Definite Integrals 9.2Finding Definite Integrals of Functions 9.3Further Techniques of Definite Integration Chapter Summary Case Study Definite.
1 Example 1 Explain why the Intermediate Value Theorem does or does not apply to each of the following functions. (a) f(x) = 1/x with domain [1,2]. Solution.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Horn clauses A literal is an atomic formula or its negation A clause is a disjunction of literals.
CSC 270 – Survey of Programming Languages Prolog Lecture 1 – Facts, Rules, and Queries.
LING 388: Language and Computers Sandiway Fong Lecture 4.
Agile Software Development Lab 2008 Dr. Günter Kniesel, Daniel Speicher, Tobias Rho, Pascal Bihler Spring 2008 R O O T S Prolog - Part 1 Alexis Raptarchis.
CS 403: Programming Languages Lecture 19 Fall 2003 Department of Computer Science University of Alabama Joel Jones.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 3 “Input & Output”, Negation, Search.
30/09/04 AIPP Lecture 3: Recursion, Structures, and Lists1 Recursion, Structures, and Lists Artificial Intelligence Programming in Prolog Lecturer: Tim.
CSC 270 – Survey of Programming Languages Prolog Lecture 2 – Unification and Proof Search.
1 Knowledge Based Systems (CM0377) Lecture 3 (Last modified 5th February 2001)
PROLOG SYNTAX AND MEANING Ivan Bratko University of Ljubljana Faculty of Computer and Info. Sc. Ljubljana, Slovenia.
Rules Statements about objects and their relationships Expess ◦ If-then conditions  I use an umbrella if there is a rain  use(i, umbrella) :- occur(rain).
Review Limits When you see the words… This is what you think of doing…  f is continuous at x = a  Test each of the following 1.
Lab Lecture#4 Lecturer : Sheriff Nafisa TA : Mubarakah Otbi, Duaa al Ofi, Huda al Hakami.
CS 326 Programming Languages, Concepts and Implementation Instructor: Mircea Nicolescu Lecture 21.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 9: A closer look at terms Theory –Introduce the == predicate –Take a closer look at term structure.
Operators in Prolog © Patrick Blackburn, Johan Bos & Kristina Striegnitz.
4.2 – The Mean Value Theorem
Introduction to Prolog
Introduction to Prolog © Patrick Blackburn, Johan Bos & Kristina Striegnitz.
CSE 3302 Programming Languages Chengkai Li Spring 2008 Logic Programming: Prolog Lecture 21 – Prolog, Spring CSE3302 Programming Languages, UT-Arlington.
CS 554: Knowledge base systems Part-4: Prolog- 2 By Dr. Syed Noman Hasany.
Prolog 3 Tests and Backtracking 1. Arithmetic Operators Operators for arithmetic and value comparisons are built-in to Prolog = always accessible / don’t.
Chapter 2 Syntax and meaning of prolog programs Part 1.
Prolog Fundamentals. 2 Review Last Lecture A Prolog program consists of a database of facts and rules, and queries (questions). –Fact:.... –Rule:... :-....
Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 3 1 Logic Programming.
Logic Programming Lecture 2: Unification and proof search.
Pengenalan Prolog Disampaikan Oleh : Yusuf Nurrachman, ST, MMSI.
علمتني الثلوج أن أكون كبياض الثلج لا يحمل قلبي غير الحب والعطف والرحمة لا أسيئ الظن بالأخرين ولا أحكم عليهم من مظهرهم فإذا لم تعاشرهم فأنت تجهلهم !
Matching Matching and unification. Rules for matching terms. Examples of matching. –The most general instantiation. Computation using matching.
Aim: How can we identify linear functions and write linear equations
Unification, Recursion and Lists
Tests, Backtracking, and Recursion
Chapter 11 :: Logic Languages
Artificial Intelligence CS370D
Prolog syntax + Unification
Prolog: cut & fail © Patrick Blackburn, Johan Bos & Kristina Striegnitz.
Prolog Search Strategy
Chapter 12 :: Logic Languages
3-2 Representing Functions
Introduction to Prolog
Chapter 2 Syntax and meaning of prolog programs
All About Functions Chapter 2, Sections 1 & 6.
3.6 - Inverse Functions Notation: Say: “f-inverse of x”…
Lecture 7: Definite Clause Grammars
Chapter 12 :: Logic Languages
Presentation transcript:

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Lecture 2 Theory Unification Unification in Prolog Proof search Exercises Exercises of LPN chapter 2 Practical work © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Aim of this lecture Discuss unification in Prolog Show how Prolog unification differs from standard unification Explain the search strategy that Prolog uses when it tries to deduce new information from old, using modus ponens © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Unification Recall previous example, where we said that Prolog unifies woman(X) with woman(mia) thereby instantiating the variable X with the atom mia. © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Recall Prolog Terms Terms Simple Terms Complex Terms © Patrick Blackburn, Johan Bos & Kristina Striegnitz Constants Variables Atoms Numbers

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Unification Working definition: Two terms unify if they are the same term or if they contain variables that can be uniformly instantiated with terms in such a way that the resulting terms are equal © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Unification This means that: mia and mia unify 42 and 42 unify woman(mia) and woman(mia) unify This also means that: vincent and mia do not unify woman(mia) and woman(jody) do not unify © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Unification What about the terms: mia and X © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Unification What about the terms: mia and X woman(Z) and woman(mia) © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Unification What about the terms: mia and X woman(Z) and woman(mia) loves(mia,X) and loves(X,vincent) © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Instantiations When Prolog unifies two terms it performs all the necessary instantiations, so that the terms are equal afterwards This makes unification a powerful programming mechanism © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Revised Definition 1/3 If T1 and T2 are constants, then T1 and T2 unify if they are the same atom, or the same number. © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Revised Definition 2/3 If T1 and T2 are constants, then T1 and T2 unify if they are the same atom, or the same number. If T1 is a variable and T2 is any type of term, then T1 and T2 unify, and T1 is instantiated to T2. (and vice versa) © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Revised Definition 3/3 If T1 and T2 are constants, then T1 and T2 unify if they are the same atom, or the same number. If T1 is a variable and T2 is any type of term, then T1 and T2 unify, and T1 is instantiated to T2. (and vice versa) If T1 and T2 are complex terms then they unify if: They have the same functor and arity, and all their corresponding arguments unify, and the variable instantiations are compatible. © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Prolog unification: =/2 ?- mia = mia. yes ?- © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Prolog unification: =/2 ?- mia = mia. yes ?- mia = vincent. no ?- © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Prolog unification: =/2 ?- mia = X. X=mia yes ?- © Patrick Blackburn, Johan Bos & Kristina Striegnitz

How will Prolog respond? ?- X=mia, X=vincent. © Patrick Blackburn, Johan Bos & Kristina Striegnitz

How will Prolog respond? ?- X=mia, X=vincent. no ?- Why? After working through the first goal, Prolog has instantiated X with mia, so that it cannot unify it with vincent anymore. Hence the second goal fails. © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Example with complex terms ?- k(s(g),Y) = k(X,t(k)). © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Example with complex terms ?- k(s(g),Y) = k(X,t(k)). X=s(g) Y=t(k) yes ?- © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Example with complex terms ?- k(s(g),t(k)) = k(X,t(Y)). © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Example with complex terms ?- k(s(g),t(k)) = k(X,t(Y)). X=s(g) Y=k yes ?- © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz One last example ?- loves(X,X) = loves(marsellus,mia). © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Prolog and unification Prolog does not use a standard unification algorithm Consider the following query: ?- father(X) = X. Do these terms unify or not? © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Infinite terms ?- father(X) = X. X=father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father( © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Infinite terms ?- father(X) = X. X=father(father(father(…)))) yes ?- © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Occurs Check A standard unification algorithm carries out an occurs check If it is asked to unify a variable with another term it checks whether the variable occurs in the term In Prolog: ?- unify_with_occurs_check(father(X), X). no © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Programming with Unification vertical( line(point(X,Y), point(X,Z))). horizontal( line(point(X,Y), point(Z,Y))). © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Programming with Unification vertical( line(point(X,Y), point(X,Z))). horizontal( line(point(X,Y), point(Z,Y))). ?- © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Programming with Unification vertical( line(point(X,Y), point(X,Z))). horizontal( line(point(X,Y), point(Z,Y))). ?- vertical(line(point(1,1),point(1,3))). yes ?- © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Programming with Unification vertical( line(point(X,Y), point(X,Z))). horizontal( line(point(X,Y), point(Z,Y))). ?- vertical(line(point(1,1),point(1,3))). yes ?- vertical(line(point(1,1),point(3,2))). no ?- © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Programming with Unification vertical( line(point(X,Y), point(X,Z))). horizontal( line(point(X,Y), point(Z,Y))). ?- horizontal(line(point(1,1),point(1,Y))). Y = 1; no ?- © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Programming with Unification vertical( line(point(X,Y), point(X,Z))). horizontal( line(point(X,Y), point(Z,Y))). ?- horizontal(line(point(2,3),Point)). Point = point(_554,3); no ?- © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Exercise: unification © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Proof Search Now that we know about unification, we are in a position to learn how Prolog searches a knowledge base to see if a query is satisfied. In other words: we are ready to learn about proof search © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Example f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Example: search tree f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). ?- k(Y). © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Example: search tree f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). ?- k(Y). © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Example: search tree f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a ?- g(a), h(a). ?- k(Y). © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Example: search tree f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a ?- g(a), h(a). ?- k(Y). © Patrick Blackburn, Johan Bos & Kristina Striegnitz ?- h(a).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Example: search tree f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a ?- g(a), h(a). ?- k(Y). © Patrick Blackburn, Johan Bos & Kristina Striegnitz ?- h(a). †

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Example: search tree f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a X=b ?- g(a), h(a). ?- g(b), h(b). ?- k(Y). © Patrick Blackburn, Johan Bos & Kristina Striegnitz ?- h(a). †

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Example: search tree f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a X=b ?- g(a), h(a). ?- g(b), h(b). ?- k(Y). © Patrick Blackburn, Johan Bos & Kristina Striegnitz ?- h(a). ?- h(b). †

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Example: search tree f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a X=b ?- g(a), h(a). ?- g(b), h(b). ?- k(Y). Y=b © Patrick Blackburn, Johan Bos & Kristina Striegnitz ?- h(a). ?- h(b). †

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Example: search tree f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a X=b ?- g(a), h(a). ?- g(b), h(b). ?- k(Y). Y=b; no ?- © Patrick Blackburn, Johan Bos & Kristina Striegnitz ?- h(a). ?- h(b). †

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Another example loves(vincent,mia). loves(marsellus,mia). jealous(A,B):- loves(A,C), loves(B,C). ?- jealous(X,Y). © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Another example loves(vincent,mia). loves(marsellus,mia). jealous(A,B):- loves(A,C), loves(B,C). ?- jealous(X,Y). ?- jealous(X,Y). © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Another example loves(vincent,mia). loves(marsellus,mia). jealous(A,B):- loves(A,C), loves(B,C). ?- jealous(X,Y). X=A Y=B ?- loves(A,C), loves(B,C). ?- jealous(X,Y). © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Another example loves(vincent,mia). loves(marsellus,mia). jealous(A,B):- loves(A,C), loves(B,C). ?- jealous(X,Y). X=A Y=B ?- loves(A,C), loves(B,C). A=vincent C=mia ?- loves(B,mia). ?- jealous(X,Y). © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Another example loves(vincent,mia). loves(marsellus,mia). jealous(A,B):- loves(A,C), loves(B,C). ?- jealous(X,Y). X=A Y=B ?- loves(A,C), loves(B,C). A=vincent C=mia ?- loves(B,mia). ?- jealous(X,Y). X=vincent Y=vincent © Patrick Blackburn, Johan Bos & Kristina Striegnitz B=vincent

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Another example loves(vincent,mia). loves(marsellus,mia). jealous(A,B):- loves(A,C), loves(B,C). ?- jealous(X,Y). X=A Y=B ?- loves(A,C), loves(B,C). A=vincent C=mia ?- loves(B,mia). ?- jealous(X,Y). X=vincent Y=vincent; Y=marsellus © Patrick Blackburn, Johan Bos & Kristina Striegnitz B=vincent B=marsellus

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Another example loves(vincent,mia). loves(marsellus,mia). jealous(A,B):- loves(A,C), loves(B,C). ?- jealous(X,Y). X=A Y=B ?- loves(A,C), loves(B,C). A=vincent C=mia A=marsellus C=mia ?- loves(B,mia). ?- loves(B,mia). ?- jealous(X,Y). X=vincent Y=vincent; Y=marsellus; © Patrick Blackburn, Johan Bos & Kristina Striegnitz B=vincent B=marsellus

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Another example loves(vincent,mia). loves(marsellus,mia). jealous(A,B):- loves(A,C), loves(B,C). ?- jealous(X,Y). X=A Y=B ?- loves(A,C), loves(B,C). A=vincent C=mia A=marsellus C=mia ?- loves(B,mia). ?- loves(B,mia). …. X=vincent Y=marsellus; X=marsellus Y=vincent © Patrick Blackburn, Johan Bos & Kristina Striegnitz B=vincent B=vincent B=marsellus

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Another example loves(vincent,mia). loves(marsellus,mia). jealous(A,B):- loves(A,C), loves(B,C). ?- jealous(X,Y). X=A Y=B ?- loves(A,C), loves(B,C). A=vincent C=mia A=marsellus C=mia ?- loves(B,mia). ?- loves(B,mia). …. X=marsellus Y=vincent; Y=marsellus © Patrick Blackburn, Johan Bos & Kristina Striegnitz B=vincent B=vincent B=marsellus B=marsellus

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Another example loves(vincent,mia). loves(marsellus,mia). jealous(A,B):- loves(A,C), loves(B,C). ?- jealous(X,Y). X=A Y=B ?- loves(A,C), loves(B,C). A=vincent C=mia A=marsellus C=mia ?- loves(B,mia). ?- loves(B,mia). …. X=marsellus Y=vincent; Y=marsellus; no © Patrick Blackburn, Johan Bos & Kristina Striegnitz B=vincent B=vincent B=marsellus B=marsellus

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Exercises © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Summary of this lecture In this lecture we have defined unification looked at the difference between standard unification and Prolog unification introduced search trees © Patrick Blackburn, Johan Bos & Kristina Striegnitz

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Next lecture Discuss recursion in Prolog Introduce recursive definitions in Prolog Show that there can be mismatches between the declarative meaning of a Prolog program, and its procedural meaning. © Patrick Blackburn, Johan Bos & Kristina Striegnitz