Logic 水獭推论
我正在为OTTER编写一个非常简单的输入文件:Logic 水獭推论,logic,theorem-proving,theorem,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:
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
为什么水獭不能推断原因是c2,$c1
编辑:
我从[Nipahx&乙脑]中去掉了方括号,它成功了。这有什么关系?我想用一个问题来回答:为什么你首先使用方括号 查阅水獭手册,第4.3节,列表符号。方括号用于列表,它是扩展为特殊术语的语法糖。在你的例子中,它扩展到
all x y ($cons(Nipah(x) & Encephalitis(y), $nil) -> Causes(x,y)).
为什么水獭不能推断原因是c2,$c1
请注意,解析演算不是完整的,因为在给定理论中可以证明的每个公式都可以由演算推断出来。这是非常不可取的!相反,决议只是反驳完整,这意味着如果一个给定的理论是正确的
那么,决议将找到空条款的证据。因此,即使一个子句C是一组子句T的逻辑结果,也不意味着解析演算可以从T中派生出C。在你的例子中,导致$c2,$c1从输入中派生出来的事实并不意味着Otter必须派生它