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 Alice program: Print out picture.  Go back and comment and print programs. Bring them to class on Tuesday, November 28th

 

 

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, alice)

 

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 Alice program and a print out of code to class Tuesday.

It’s also a “good idea” to look at Chapter 16.