我只是在学习序言,有一件事我不能理解我的头。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