23-Feb-16 Prolog II Unification and clause order.

Slides:



Advertisements
Similar presentations
Artificial Intelligence: Natural Language and Prolog
Advertisements

CS4026 Formal Models of Computation Part II The Logic Model Lecture 1 – Programming in Logic.
CS4026 Formal Models of Computation Part II The Logic Model Lecture 6 – Arithmetic, fail and the cut.
Prolog Nonmonotonic logic.
Inference Rules Universal Instantiation Existential Generalization
Chapter 11 :: Logic Languages
1 Introduction to Prolog References: – – Bratko, I., Prolog Programming.
Inference and Reasoning. Basic Idea Given a set of statements, does a new statement logically follow from this. For example If an animal has wings and.
1 Logic Programming. 2 A little bit of Prolog Objects and relations between objects Facts and rules. Upper case are variables. parent(pam, bob).parent(tom,bob).
F22H1 Logic and Proof Week 7 Clausal Form and Resolution.
1 Prolog III. 2 Lists [ ] is the empty list. [x, 2+2, [a, b, c]] is a list of three elements. The first element in the list is its “head”. The list with.
CS 330 Programming Languages 12 / 02 / 2008 Instructor: Michael Eckmann.
1 Prolog II. 2 The Notion of Unification Unification is when two things “become one” Unification is kind of like assignment Unification is kind of like.
CS 330 Programming Languages 12 / 12 / 2006 Instructor: Michael Eckmann.
For Friday Read “lectures” 1-5 of Learn Prolog Now: prolog-now/
11-Jun-15 Prolog II Unification and clause order.
Constraint Logic Programming Ryan Kinworthy. Overview Introduction Logic Programming LP as a constraint programming language Constraint Logic Programming.
Lesson 6. Refinement of the Operator Model This page describes formally how we refine Figure 2.5 into a more detailed model so that we can connect it.
Formal Models of Computation Part II The Logic Model
1 Prolog I. 2 Syllogisms “Prolog” is all about programming in logic. –Socrates is a man. –All men are mortal. –Therefore, Socrates is mortal.
Notes for Chapter 12 Logic Programming The AI War Basic Concepts of Logic Programming Prolog Review questions.
CS 321 Programming Languages and Compilers Prolog part 2.
CS 2104 – Prog. Lang. Concepts Logic Programming - II Dr. Abhik Roychoudhury School of Computing.
Patterns in OCaml functions. Formal vs. actual parameters Here's a function definition (in C): –int add (int x, int y) { return x + y; } –x and y are.
14/10/04 AIPP Lecture 7: The Cut1 Controlling Backtracking: The Cut Artificial Intelligence Programming in Prolog Lecturer: Tim Smith Lecture 7 14/10/04.
30/09/04 AIPP Lecture 3: Recursion, Structures, and Lists1 Recursion, Structures, and Lists Artificial Intelligence Programming in Prolog Lecturer: Tim.
15/11/04 AIPP Lecture 14: Database Manipulation1 Database Manipulation Artificial Intelligence Programming in Prolog Lecturer: Tim Smith Lecture 14 15/11/04.
Derived from csc.villanova.edu/~dmatusze/8310summer2001/index.html/prolog1.ppt1 Prolog.
1 Artificial Intelligence Prolog for. 2 SWI-Prolog SWI-Prolog is a good, standard Prolog for Windows and Linux It's licensed under GPL, therefore free.
For Wednesday Read “lectures” 7-10 of Learn Prolog Now Chapter 9, exs 4 and 6. –6 must be in Horn clause form Prolog Handout 2.
Introduction To PROLOG World view of imperative languages. World view of relational languages. A PROLOG program. Running a PROLOG program. A PROLOG.
Prolog Programming in Logic. 2 SWI-Prolog SWI-Prolog is a good, standard Prolog for Windows and Linux Can be installed on Macintosh with a little more.
Prolog. Syllogisms “Prolog” is all about programming in logic. –Socrates is a man. –All men are mortal. –Therefore, Socrates is mortal.
1 CSC 8520 Spring Paula Matuszek Slides taken from David Matuszek,
CS4026 Formal Models of Computation Part II The Logic Model Lecture 2 – Prolog: History and Introduction.
Logic Programming CSC 358/ Outline Pattern matching Unification Logic programming.
The AI War LISP and Prolog Basic Concepts of Logic Programming
Logic Programming and Prolog Goal: use formalism of first-order logic Output described by logical formula (theorem) Input described by set of formulae.
Automated Reasoning Early AI explored how to automated several reasoning tasks – these were solved by what we might call weak problem solving methods as.
Ch. 13 Ch. 131 jcmt CSE 3302 Programming Languages CSE3302 Programming Languages (notes?) Dr. Carter Tiernan.
Programming Languages Third Edition Chapter 4 Logic Programming.
Negation Chapter 5. Stating Negative Conditions n Sometimes you want to say that some condition does not hold n Prolog allows this –not/1this is a predicate.
Prolog Unification and clause order. The notion of Unification Unification is when two things “become one” Unification is kind of like assignment Unification.
9/19/01 1 Prolog Tim Finin Tim Finin University of Maryland Baltimore County.
For Monday Exam 1 is Monday Takehome due Prolog Handout 3 due.
In The Name Of Allah Lab 03 1Tahani Aldweesh. objectives Searching for the solution’s. Declaration. Query. Comments. Prolog Concepts. Unification. Disjunction.
For Friday No reading Prolog Handout 2. Homework.
07/10/04 AIPP Lecture 5: List Processing1 List Processing Artificial Intelligence Programming in Prolog Lecturer: Tim Smith Lecture 5 07/10/04.
Prolog Fundamentals. 2 Review Last Lecture A Prolog program consists of a database of facts and rules, and queries (questions). –Fact:.... –Rule:... :-....
Logic Programming Lecture 2: Unification and proof search.
COSC 2P93 Prolog: Debugging
Prolog Concepts.
For Friday No reading Prolog handout 3 Chapter 9, exercises 9-11.
For Wednesday Read “lectures” 7-10 of Learn Prolog Now:
Tests, Backtracking, and Recursion
Prolog fundamentals Module 14.2 COP4020 – Programming Language Concepts Dr. Manuel E. Bermudez.
Chapter 11 :: Logic Languages
Prolog Lists.
Unification and clause order
Chapter 12 :: Logic Languages
Prolog III.
Prolog Lists.
Programming Techniques
CS2136: Paradigms of Computation
Prolog Concepts.
Chapter 2: Prolog (Introduction and Basic Concepts)
Prolog III Lists 8-Jul-19.
Prolog Concepts.
Chapter 12 :: Logic Languages
Presentation transcript:

23-Feb-16 Prolog II Unification and clause order

The Notion of Unification Unification is when two things “ become one ” Unification is kind of like assignment Unification is kind of like equality in algebra Unification is mostly like pattern matching Example: loves(john, X) can unify with loves(john, mary) and in the process, X gets unified with mary

Unification I Any value can be unified with itself. weather(sunny) = weather(sunny) A variable can be unified with another variable. X = Y A variable can be unified with ( “ instantiated to ” ) any Prolog value. Topic = weather(sunny)

Unification II Two different structures can be unified if their constituents can be unified. female(X) = female(jane) mother(mary, X) = mother(Y, father(Z)) A variable can be unified with a structure containing that same variable. This is usually a Bad Idea. X = f(X)

Unification III The explicit unification operator is = Unification is symmetric: Steve = father(isaac) means the same as father(isaac) = Steve Most unification happens implicitly, as a result of parameter transmission.

Scope of Names The scope of a variable is the single clause in which it appears. The scope of the “ anonymous ” ( “ don ’ t care ” ) variable, _, is itself. loves(_, _) = loves(john, mary) A variable that only occurs once in a clause is a useless singleton; you should either: Replace it with the anonymous variable, or Put an underscore as the first character of the variable name; this tells Prolog you don ’ t intend to use it more than once

Writing Prolog Programs Suppose the database contains loves(chuck, X) :- female(X), rich(X). female(jane). and we ask who Chuck loves, ?- loves(chuck, Woman). female(X) finds a value for X, say, jane rich(X) then tests whether Jane is rich

Clauses as Cases A predicate consists of multiple clauses, each of which represents a “ case ” grandson(X,Y) :- son(X,Z), son(Z,Y). grandson(X,Y) :- son(X,Z), daughter(Z,Y). abs(X, Y) :- X < 0, Y is -X. abs(X, X) :- X >= 0.

Ordering Clauses are always tried in order buy(X) :- good(X). buy(X) :- cheap(X). cheap( ‘ Java 2 Complete ’ ). good( ‘ Thinking in Java ’ ). What will buy(X) choose first?

Ordering II Try to handle more specific cases (those having more variables instantiated) first. dislikes(john, bill). dislikes(john, X) :- rich(X). dislikes(X, Y) :- loves(X, Z), loves(Z, Y).

Ordering III Some "actions" cannot be undone by backtracking over them: write, nl, assert, retract, consult Do tests before you do undoable actions: take(Thing) :- holding(Thing), write('You\'re already holding it!'), nl.

Recursion ancestor(X, Y) :- child(Y, X). (X is an ancestor of Y if Y is a child of X.) ancestor(X, Y) :- child(Z, X), ancestor(Z, Y). (X is an ancestor of Y if Z is a child of X and Z is an ancestor of Y). Handle the base cases first Recur only with a simpler case

Basic and derived clauses You can often choose which facts you want to be "basic" and which derived son(isaac, steven). child(X, Y) :- son(X, Y). male(isaac). child(isaac, steven). son(X, Y) :- male(X), child(X, Y).

Recursive Loops Prolog proofs must be tree structured, that is, they may not contain recursive loops. child(X,Y) :- son(X,Y). son(X,Y) :- child(X,Y), male(X). ?- son(isaac, steven).  May loop! Why? Neither child/2 nor son/2 is basic

Cut and Cut-fail The cut, !, is a commit point. It commits to: the clause in which it occurs (can't try another) everything up to that point in the clause Example: loves(chuck, X) :- female(X), !, rich(X). Chuck loves the first female in the database, but only if she is rich. Cut-fail, ( !, fail ), means give up now and don't even try for another solution.

Negation The negation operator is \+ (or in some Prolog dialects, not(…) ) Consider for example, \ +female(X). If there is some female, say, female(jane), then female(X) will succeed, and X will be tentatively unified with jane Then the success is negated, so \+female(X ) fails; the unification is cancelled, and backtracking occurs This will continue to fail for each female If there is no female in the database, female(X) fails without doing any unifications, then \+female(X) succeeds

What you can ’ t do in Prolog There are no functions, only predicates Prolog is programming in logic, therefore there are few control structures There are no assignment statements; the state of the program is what's in the database

Workarounds I There are few control structures in Prolog, but… You don ’ t need an if statement because you can use multiple clauses with “ tests ” in them You don ’ t need loops because you have recursion You can, if necessary, construct a “ fail loop ”

Fail Loops Use fail loops sparingly, if at all. notice_objects_at(Place) :- at(X, Place), write('There is a '), write(X), write(' here.'), nl, fail. notice_objects_at(_).

Workarounds II There are no functions, only predicates, but… A call to a predicate can instantiate variables: female(X) can either look for a value for X that satisfies female(X), or if X already has a value, test whether female(X) can be proved true By convention, output variables are put last

Workarounds III There are no assignment statements, but… the Prolog database keeps track of program state assert(at(fly, bedroom)) bump_count :- retract(count(X)), Y is X + 1, assert(count(Y)). Don't get carried away and misuse this!

The End