2012-04-13 109 views
6

我是PROLOG的新手,在this page的練習剛開始時。由於規則的父(X,Y)和男性(X),我試圖定義一個規則的母親(X,Y)作爲如何在Prolog中否定

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

然而,在GNU Prolog的,我得到了以下錯誤:

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

回答

8

\+/1是「否定」的ISO Prolog謂詞。請注意,「否定」在此意味着此處不可證明。

你可以參考this excellent answer通過@false更多關於這個問題

3

該解決方案實際上是在該網頁上的練習文件:

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

正如@Mog說,否定是一元\+運營商。