next up previous contents
Next: /1 Up: Control and Negation Previous: call/1

The Problem of Negation

To maintain the connection with predicate logic, we would like to be able to represent the negation of a statement. This, however, proves to be problematic.

Consider

 
man(jim).

man(fred).

?- man(bert).

no

To say that man(bert) is not true we have to assume that we known all that there is to know about man/1. The alternative is to say the the no indicates don't know and this is not a possible truth value!

Turning to Prolog, If we try to solve a goal for which there is no clause (as in the case above) then we assume that we have provided Prolog with all the necessary data to solve the problem. This is known as the Closed World Assumption.

This enables us to stick to the desirable property that a goal can have only two outcomes.





Paul Brna
Mon May 24 20:14:48 BST 1999