如何在Prolog中否定

时间:2012-04-13 13:19:34

标签: prolog

我是PROLOG的新手,我正处于this page练习的最开始阶段。给定父(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)
| ?- 

2 个答案:

答案 0 :(得分:12)

\+/1是ISO Prolog谓词“否定”。请注意,“否定”在这里意味着不可证明。

您可以通过@false参考this excellent answer了解有关主题的更多信息

答案 1 :(得分:6)

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

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

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