我只是在學習序言,有一件事我不能理解我的頭。Prolog統一不是()
假設我有以下程序
value(v).
a(X) :- not(value(X)).
所以a(v).
給我假的,因爲value(v)
可以證明是正確的。
a(w)
給我的真實,因爲沒有事實value(w)
,因此,即使在嘗試時,它不能被證明是正確的。
據我瞭解,要求a(X).
應該給我第一個可能的值,使得value(X)
不可證實。應該有無限的可能性,因爲只有value(v)
是正確的。
但是爲什麼Prolog會繼續回答false
?
這取決於你如何查看***僞造***,什麼是假的?你如何證明某件事是假的?一種觀點認爲,*不可證明的一切都是錯誤的*,這是一種觀點,你可以想象你生活在一個真實的***可證明的世界裏(這是有爭議的課程)。在序言中,'\ +'運算符與否定作爲失敗語義,這正是我上面所描述的。希望能夠給出一些線索。 – Limmen
是的,如果我們將false定義爲不可證明的話,那麼Prolog可以通過提供它無法證明正確的例子來實現目標? – user3207838
但我想問題是,Prolog總是希望讓事情**真實**,在這種情況下,我們基本上會顛倒引擎? – user3207838