【发布时间】:2013-01-20 19:47:45
【问题描述】:
假设我们有以下程序:
a(tom).
v(pat).
和查询(返回 false):
\+ a(X), v(X).
跟踪时,我可以看到X 被实例化为tom,谓词a(tom) 成功,因此\+ a(tom) 失败。
我在一些教程中读到,Prolog 中的 not (\+) 只是一个测试,不会导致实例化。
-
有人可以为我澄清上述观点吗?我可以看到实例化。
-
我了解非(否定为失败)和逻辑否定之间存在差异。您能否参考一篇好文章来解释它们在哪些情况下表现相同以及它们何时表现不同?
【问题讨论】:
标签: prolog logic negation-as-failure