Lecture 24 – November -21-06
Courtesy of Jennifer Leahy
Link to Prolog Slides (also remember
that you have access to the slides from the text if you brought the book)
For
Prolog: It's on
public i.e.
https://users.cs.jmu.edu/adamses/public
PDProlog
In LISP we had
atoms and lists.
In Prolog we
have facts and rules.
ex.
?-asserta(likes(john,mary)). <- asserts a fact
?-likes(john, mary).
either John likes mary,
or Mary likes John but cannot tell which.
asserta -> add assertion at top of list
assertz -> add assertion at bottom of list
constants are all in lowercase, variables start with
an uppercase.
?-asserta(likes(john,sam)).
?-asserta(likes(john,paula)).
When type in: likes(john, Who).
says:
Who = paula
Who = sam
Who = mary
If the list of
facts does not have a matching arguments, it will give you back 'No.'
What else can
we do with the language->
ALL PROLOG
STATEMENTS END WITH A PERIOD
It has facts,
rules
Interactively
enters facts
Interactively
enters rules
comment
enter the language -> click on the exe
get out of the language -> exitsys.
Logic Language
invented in the South of France, most famous guy associated with it is Colmerauer (sp? pg 668)
page 666 In the book-> Declarative languages
page 670 -> Bunch of prolog statements and
language details.
page 671 -> Rules
?-asserta (ancestor(mary, shelley) :- mother(mary, shelly)).
How this reads:
mary is the ancestor of shelly if mary is the mother of shelly
OR
shelly is the ancestor of mary
if shelly is the mother of mary
There is no way
(with out comments) tell the difference
dir p.
-shows all of the predicates
dir
.
-shows all of the constants
listing.
-everything that's been typed in
If
a program is already written, how to get to it?
?-consult('thisData.pro').
comment -> /* */
**************************************************
PROLOG NOTES --> pdprolog.exe
Courtesy of Rachel Murphy
All prolog statements end with a period
/* comments, should be used to explain how the predicates are to be used */ likes(john,mary).
likes is a predicate, john and mary are constants [lower-case]
Variables begin with Capital letters
[Entered interactively]
?- likes(Who, mary).
Who = john
More? (Y/N):
COMMANDS
-to exit:
exitsys.
-to add facts interactively
asserta(fact()). --> inserts at the beginning of database
assertz(fact()). --> inserts at the end of database
-to load a file, file name cannot be more than 8 characters long
consult('name.pro').
-to unload a file
forget('pronotes.pro').
-to show all predicates
dirp
-to show all horn clauses
listing
-show all
dir
FACTS
--are headless Horn clauses.
--facts can have one or many arguments
tall(troy).
short(sarah).
RULES
:- "if"
loves (Male, Female) :- likes (Female, Male).
-can have multiple rules with the same name [works like OR]
parent(Parent,Child) :- mother(Parent,Child).
parent(Parent,Child) :- father(Parent,Child).
- , [comma] is AND
married(Man, Woman) :- mother (Woman,Child) , father (Man,Child).
-lists
[] à empty list
Chapter 16 Declarative Languages
3 basic needs [page
661]
-express proposition
-express relationships between propositions
-describe how new propositions can be inferred from others
Functors
likes(bob,
Example of a clausal statement
likes(bob, trout) :- likes(bob, fish) , fish(trout)
Resolution technique …
Link to notepad file in public directory created in 3:30pm class…
Bring in your favorite screenshot of
your
It’s also a “good idea” to look at Chapter 16.