定理证明与证明9-不一致的结果

时间:2018-10-14 08:41:24

标签: python nltk theorem-proving

我使用证明人9进行一阶定理证明,并带有nltk python接口。

对于两个等效公式(没有假设),我得到了不同的结果:
让p1:

-exists x0.(-exists x3 x1.(R0(x3,x0) & R0(x1,x1)) & exists x1 x2.(R0(x1,x2) & R0(x1,x0)))

和p2:

-exists x3.(-exists x0 x2.(R0(x2,x2) & R0(x0,x3)) & exists x1 x0.(R0(x1,x0) & R0(x1,x3)))

使用以下python代码:

import nltk as nk
read_expr = nk.sem.Expression.fromstring

prove_command1 = nk.Prover9Command(goal=read_expr(p1),timeout=20, prover=nk.Prover9())
prove_command2 = nk.Prover9Command(goal=read_expr(p2),timeout=20, prover=nk.Prover9())
print(prove_command1.prove()) # False
print(prove_command2.prove()) # True

现在,奇怪的是,当我为它们中的每一个打印证明时,两者的目标是相等的:

-(exists x (-(exists y exists z (R0(y,x) & R0(z,z))) & (exists z exists u (R0(z,u) & R0(z,x))))).

p1和p2的正确答案是False,我不明白这两个表达式如何可能转换为相同的目标,但是答案却有所不同。

有什么建议吗?

0 个答案:

没有答案