我有序言谓词male, female, parent
,如下所示:现在扩展Prolog的谓词
parent(bob, rick).
parent(jane, rick).
parent(rick, alice).
parent(betsy, alice).
male(rick).
female(jane).
,一种方式来推断残缺的性别信息是看如果父母一方是男性,那么其他的必须是女性,副反之亦然,所以我试图延长女:
female(X) :- parent(X, Y), parent(Z, Y), male(Z).
因此,我最后female
谓语是:
female(jane).
female(X) :- parent(X, Y), parent(Z, Y), male(Z).
但是,当我尝试:
?- female(jane).
true ;
false.
?- female(betsy).
true ;
false.
为什么错误会出现在那里?当我尝试为male
做类似的事情时会出现更多问题,因为这会导致无限递归。
谢谢,明白了。我很困惑,因为'真的;虚假“似乎表明”简“是一个逻辑女性而不是另一个女性,这不应该是女性。现在我明白,这意味着它意味着没有更多的解决方案。并且很好的了解我忘记了'X \ == Z'的条件。 – forumulator