12

我是 PROLOG 的新手,并且在本页练习的最开始。给定规则父(X,Y)和男性(X),我试图将规则母亲(X,Y)定义为

mother(X, Y) :-
    not(male(X)),
    parent(X, Y).

但是,在 GNU Prolog 中,我收到以下错误:

| ?- mother(lina, julia).
uncaught exception: error(existence_error(procedure,not/1),mother/2)
| ?- 
4

2 回答 2

15

\+/1是“否定”的 ISO Prolog 谓词。请注意,“否定”是指此时无法证明。

您可以参考@false 提供的这个出色的答案,以了解有关该主题的更多信息

于 2012-04-13T13:23:06.370 回答
11

解决方案实际上在该页面的练习文件中:

female(X) :- \+ male(X).

正如@Mog 所说,否定是一元运算\+符。

于 2012-04-13T13:27:10.953 回答