CPSC 453, Spring 2003
Third Assignment


This program is due on Monday, February 10. The assignment is based on the file /home/cs453/prolog/isa.pl, which defines a very, very simple conversation program, talk. So far, the talk predicate knows something about an isa relationship, and it can learn new facts about isa. You should extend the program so that it can deal with can and has predicates, as in the statements "a bird can fly," "a penguin can not fly," "a mammal has a tail," and "an ape does not have a tail." It should be able to answer questions such as "does a human have a tail," "can an ostrich fly," and "why does a monkey have a tail."

You should add basic facts about can and has to the program. The program should also be able to learn new facts from statements made by the user. Reasoning about can and has will be based on inheritance using the isa hierarchy. To make this possible, can and has can be three-place predicates. For example:

             can(bird,fly,yes).
             can(penguin,fly,no).
             can(mammal,walk,yes).
             can(whale,walk,no).
             has(mammal,tail,yes).
             has(ape,tail,no).

An alternative would be to use four two-place predicates: can, cannot, has, and hasnot.

We will discuss this assignment further in class.