联合范式的推理

时间:2014-11-04 02:19:00

标签: prolog conjunctive-normal-form

我有这个代码,我需要将其翻译成CNF(这是为考试做准备,所以不是作业!):

p,q
r :- q
false :- p , s 
s :- t
t

这就是我的所作所为:

p ^ q ^ (r V ~q) ^ (~p V ~s) ^ (s V ~t) ^ t

=  r

我的推理是否正确?

这里还有另一个问题:

  

您想使用r查询数据库。你应该在数据库中添加什么子句?

我根本不明白这一点。简化后,数据库基本上是r。 r是真的,不是吗?

1 个答案:

答案 0 :(得分:1)

问题“您想使用r。什么子句查询数据库,是否应该添加到数据库中?”指所谓的refutation proofs。在反驳证明中,不能证明:

 Database |- Query

而是一个证据:

 Database, ~Query |- f

在经典逻辑中,两者是相同的。所以在你的例子中,你需要证明p ^ q ^(r V~q)^(~p V~s)^(s V~t)^ t ^ ~r导致矛盾。

再见

编辑14.02.2019:
如果有人对Prolog代码感兴趣,可以将propote的公式转换为CNF,请参阅此处https://gist.github.com/jburse/ca8d01e26c7cf176ea65eeb1bf916ea0#file-aspsat-p(第43-87行,需要Prolog Commons列表和ordset),您可以将公式F转换为CNF {{ 1}},通过调用C

已经从普通和包含的条款中清除了所获得的CNF。如果有人对CNF测试用例更感兴趣,请参阅此处http://gist.github.com/jburse/bf99239903847322321fabf6f49a5b84#file-casescls-p,其中包含来自Principia Mathematica的数百个重言式,以及其他十分之一的谬误。