我有序言謂詞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