Download presentation
Presentation is loading. Please wait.
Published byMaude Fitzgerald Modified over 9 years ago
1
CPSC 433 Artificial Intelligence Rule Based Systems (Prolog) M. Reza Zakerinasab mrzakeri@ucalgary.ca Please include [CPSC433] in the subject line of any emails regarding this course. Slides originally created by Andrew M Kuipers. Some slides adopted from 600.325/425 Declarative Methods - J. Eisner
2
2 Prolog as constraint programming An ordinary constraint between two variables: Person and Food Prolog makes you name this constraint. Here’s a program that defines it: –eats(sam, dal).eats(josie, samosas). –eats(sam, curry).eats(josie, curry). –eats(rajiv, dal). … Now it acts like a subroutine! At the Prolog prompt you can type –eats(Person1, Food1). % constraint over two variables –eats(Person2, Food2). % constraint over two other variables (Person, Food) PersonFood samdal samcurry josiesamosas josiecurry rajivdal CPSC 433 Artificial Intelligence
3
3 Using Prolog –eats(sam, dal).eats(josie, samosas). –eats(sam, curry).eats(josie, curry). –eats(rajiv, burgers).eats(rajiv, dal). … –eats(Person1, Food), eats(Person2, Food). Person1=sam, Person2=josie, Food=curry Person1=josie, Person2=sam, Food=curry … Your program file (compiled) Sometimes called the “database” “Query” that you type interactively Prolog’s answer CPSC 433 Artificial Intelligence
4
Adding more rules… eats(sam, dal).eats(josie, samosas). eats(sam, curry).eats(josie, curry). eats(rajiv, burgers).eats(rajiv, dal). compatible(Person1, Person2) :- eats(Person1, Food), eats(Person2, Food). compatible(Person1, Person2) :- watches(Person1, Movie), watches(Person2, Movie). compatible(hal, Person2) :- female(Person2), rich(Person2).
5
CPSC 433 Artificial Intelligence Basic Prolog Process Negate query, set as current goal. while current goal is non-empty: choose the leftmost subgoal if a rule applies to the subgoal: select the first applicable rule (top-to-bottom) perform resolution on subgoal and selected rule else: backtrack if possible, otherwise fail success
6
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). Logically sound?!! ?- witch(X). Goals
7
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0)
8
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0)
9
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0)
10
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0)
11
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(_G0)
12
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(_G0)
13
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(_G0) floats(_G0)
14
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(_G0) floats(_G0)
15
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(_G0) floats(duck)
16
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(duck)
17
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(duck) woman(duck)
18
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(duck) woman(duck) fail! backtrack...
19
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(_G0) floats(_G0)
20
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(_G0) floats(_G0) floats(_G1) sameweight(_G1, _G0)
21
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(_G0) floats(_G0) floats(_G1) sameweight(_G1, _G0)
22
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(_G0) floats(_G0) floats(duck) sameweight(duck, _G0)
23
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(_G0) floats(_G0) floats(duck) sameweight(duck, _G0)
24
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(_G0) floats(_G0) floats(duck) sameweight(duck, girl)
25
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(_G0) floats(girl)
26
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(_G0) woman(_G0) madeofwood(girl)
27
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(girl) woman(girl)
28
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(_G0) burns(girl) woman(girl) works this time
29
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). Goals witch(girl)
30
CPSC 433 Artificial Intelligence Sir Bedevere’s Infamous Deduction witch(X) :- burns(X),woman(X). woman(girl). burns(X) :- madeofwood(X). madeofwood(X) :- floats(X). floats(duck). floats(Y) :- floats(X),sameweight(X,Y). sameweight(duck,girl). ?- witch(X). X = girl
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.