我正在为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)]
删除了方括号,但它确实有效。为什么这很重要?
答案 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必须得出它。