6
我已經很難尋找在序言否定明確的答案,所以我道歉,如果這是一個明顯的問題:SWI-Prolog的否定
我試圖寫一個簡單的代碼,就會很自然地說「如果X喜歡Y,只有Y,則X和Y彼此相愛。」我的特等代碼看起來是這樣的:
likes(mary,john).
likes(mary,chad).
likes(john,mary).
loves(X,Y):- likes(X,Y), \+likes(X,Z).
我再運行了一個程序,簡單地問:
?- loves(X,Y).
,但它永遠是假的。按照我的邏輯,它應該回來說'X =約翰,Y =瑪麗'。
我已經嘗試了用切割分開否定的幾種組合,嘗試用多條線來定義「愛」......我可能缺少否定的一個主要原則,或者甚至有更簡單的方法來實現什麼我正試着在這裏做。請讓我知道如果你能幫助!
我使用的是Debian軟件管理器中的SWI-Prolog(swipl),如果有幫助的話,儘管我懷疑這會產生多大的影響。