Rule Based Systems (Prolog) - PowerPoint PPT Presentation

About This Presentation
Title:

Rule Based Systems (Prolog)

Description:

Rule Based Systems (Prolog) M. Reza Zakerinasab mrzakeri_at_ucalgary.ca Please include [CPSC433] in the subject line of any emails regarding this course. – PowerPoint PPT presentation

Number of Views:76
Avg rating:3.0/5.0
Slides: 31
Provided by: amkuiper
Category:
Tags: based | prolog | rule | systems

less

Transcript and Presenter's Notes

Title: Rule Based Systems (Prolog)


1
Rule Based Systems(Prolog)
  • M. Reza Zakerinasab
  • mrzakeri_at_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
Prolog as constraint programming
Person Food
sam dal
sam curry
josie samosas
josie curry
rajiv dal
(Person, Food)


  • An ordinary constraint between two variables
    Person and Food
  • Prolog makes you name this constraint. Heres 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

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).
  • Person1sam, Person2josie, Foodcurry
  • Person1josie, Person2sam, Foodcurry

Your program file (compiled) Sometimes called the
database
Query that you type interactively
Prologs answer
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
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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Sir Bedeveres 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
Write a Comment
User Comments (0)
About PowerShow.com