OTTER推论

时间:2012-12-10 00:46:56

标签: logic theorem-proving theorem

我正在为OTTER编写一个非常简单的输入文件:

set(auto).

formula_list(usable).

all x y ([Nipah(x) & Encephalitis(y)] -> Causes(x,y)).
exists x y (Nipah(x) & Encephalitis(y)).

end_of_list.

我为搜索输出了这个输出:

given clause #1: (wt=2) 2 [] Nipah($c2).
given clause #2: (wt=2) 2 [] Encephalitis($c1).
search stopped because sos empty

为什么OTTER不推断Causes($c2,$c1)

编辑: 我从[Nipah(x) & Encephalitis(x)]删除了方括号,但它确实有效。为什么这很重要?

1 个答案:

答案 0 :(得分:0)

我回答一个问题:为什么你首先使用方括号?

查看Otter手册,第4.3节,列表符号。方括号用于列表,它的语法糖被扩展为特殊术语。在您的情况下,它扩展到类似

all x y ($cons(Nipah(x) & Encephalitis(y), $nil) -> Causes(x,y)).

  

为什么OTTER不会推断原因($ c2,$ c1)?

请注意,在给定理论中可证明的每个公式都可以通过微积分推断的意义上,分辨率计算不完整。这将是非常不受欢迎的!相反,分辨率只是反驳完整,这意味着如果给定的理论是 矛盾然后决议将找到空条款的证明。因此,即使条款C是一组子句T的逻辑结果,也不意味着分辨率演算可以从C派生T。在你的情况下,Causes($c2,$c1)来自输入的事实并不意味着Otter必须得出它。