这个语义表方法是一个正式化属于证明在里面谓词逻辑其工作方式反向链接:即,矛盾证明而不是演绎.在寻求确定句子A是一个逻辑结果一组公理相反,我们假设Γ成立而A为假,然后通过逻辑分解的树方法希望我们的推导被矛盾这些矛盾使我们得出结论,原来的断言(Γ为真但A为假)本身是矛盾的,因此,如果Γ为true,A也必须为(严格说明完整性正确性在本文后面给出;但要做到这一点,需要对该方法进行评估)。当然,我们可能在所有情况下都找不到矛盾之处——如果我们只剩下一个开放的分支,那么该分支描述了一个解释其中Γ可以成立,但A为假,因此A不是逻辑结果(在所有解释中都需要A为真)。

语义表由具有节点s;使用语义表规则,我们可以通过添加节点来扩展树-在某些情况下,这些规则将引入分支但是对于非常简单的证明,可能只有一个分支。目标是实现所有分支关闭通过矛盾-也就是说,分支包含既断言又否定某些公式B的节点。我们的初始节点是公理Γ和否定如果节点被给定一个数字,然后在用于断言新节点时被引用,这会更清楚,但如果您对该过程有信心,那么这是不必要的。请注意,您可以故意滥用系统,使其永远不会在矛盾中结束,因为您可以无用地生成新的斯科勒姆常量,因此避免应用会关闭分支的规则;如果在打开的分支上可能的任何操作最终完成(除非它已经被规则的早期应用关闭),我们将把该方法描述为已经被系统地应用。以下是规则:

语义表规则

  • 如果不是A被拒绝,添加断言A的节点
  • 如果(AB) 则添加两个节点,一个断言A,另一个断言B
  • 如果(AB) 被拒绝,添加两个节点,一个拒绝A,另一个拒绝B
  • 如果(A暗示B)被拒绝,则添加节点断言A并拒绝B
    这是A暗示B可以为假的唯一方式
  • 如果(A和B)被拒绝,则形成两个分支,一个节点拒绝A,另一个节点否认B
  • 如果断言(A或B),则形成两个分支,一个断言A,另一个断言B
  • 如果断言了(A IMPLIES B),则形成两个分支,并在其中一个分支上添加否认A的节点,在另一个分支中添加断言B的节点
  • 这是OR的特例,因为a表示B是(非a)OR;通常这样可以节省时间
  • 如果(A国际金融论坛B) 断言,形成两个分支。在其中一个节点上添加两个节点,分别拒绝A和B;在另一个分支上添加两个节点以断言A和B
  • 如果(A IFF B)被拒绝,则形成两个分支,但现在在一个分支上断言A和否认B;对于另一个,我们断言B而否认A
  • 如果(FORALL X)A(X)被拒绝,则创建一个新的skolem常数c并拒绝A(c)。
    必须至少有一个反例对于NOT FORALL to hold,我们将其称为c。此规则可以重复使用,但您必须发明一个新的skolem常数,而不是使用以前由此类规则生成的常数。
  • 如果断言了(EXISTS X)A(X),则再次发明一个skolem常数c并断言A(c),与前面的规则一样小心,以避免使用现有符号
  • 如果断言了(FORALL X)A(X),并且t是任何变量自由项,则断言A(t)
    这可以对任意数量的可变自由项t进行,例如由上述两个规则生成的自由项。
  • 如果(EXISTS X)A(X)被拒绝,且t是任何变量自由项,则拒绝A(t)

关于规则应用顺序的几点建议

通常,我们希望避免在多个分支上重复工作。作为规则而非替代规则(上面列出的最后两个)只需在分支上应用一次,首先使用这些规则是有意义的;为了最大限度地利用矛盾关闭分支机构的能力,我们将使用一条不增加分支机构数量的规则,而不是增加分支机构的数量。因此,一般方法是按优先顺序降序使用:
  • 提议所有不增加分支数的规则
  • 定量器在分支上创建新skolem常量的规则
  • 增加分支数量的命题规则
  • 替代规则

一些工作示例

首先,让我们尝试证明某件事是真的,即如果(FORALL X)(A(X)-->B(X))和(EXISTS X)(A(X)。
所以我们有两个公理Γ1=(FORALL X)(A(X)-->B(X))和Γ2=(现有X)(A(X))。我们想确定A=(EXISTS X)(B(X))是否是这两个公理的逻辑结果,因此我们通过列出公理和否定然后尝试进行矛盾处理:

1) (对于X)(A(X)-->B(X))这是Γ1
2) (现有X)(A(X))这是Γ2
3) 不(存在X)(A(X))这不是A
4) A(τ)我们通过将规则应用于第2行来创建一个新的skolem常数τ
5) A(τ)-->B(τ将常数τ代入第1行
6) 非B(τ)将常数τ代入第3行
/     \/       \
7) 非A(τ)7)B(τ我们在第5行应用规则进行分支

我们的左手分支被矛盾所封闭,因为4个断言A(τ),而7个否认它;我们的右分支被关于B(τ)的6和7之间的矛盾所封闭。因此,我们证明了Γ和NOT A必然导致矛盾;我们必须得出结论,为了避免这种命运,当Γ为真时,a也必须为真。因此a是Γ的逻辑推论,我们已经完成了证明。

对于一个方法未能获得矛盾的例子(即,存在Γ成立但a不成立的情况),考虑公理P-->P,并让我们希望证明的句子作为逻辑结果为简单的P。然后应用该方法给出:

1) P-->P2) 非P/   \/     \ 3) 非P 3)P来自1
右分支因矛盾而闭合;我们既断言也否认了P。但在左边没有矛盾,进程已经结束系统地(即我们没有更多的规则可供应用)。因此,左侧分支描述了反例; 即P为假的任何解释。我们可以自己验证这是正确的-如果P为假,则P-->P计算为真,但P计算为假,因此在这种情况下,P的真不是P-->P的逻辑结果。

语义表系统有多强大?

因此,我们有一个规则系统,据称,它将使逻辑结果得以确定。但是,对于任何一组公理和句子,我们能肯定语义表系统的有效性吗?事实证明,我们可以通过申请哥德尔的定理完整性正确性。我们希望显示两个条件为真:
  • 正确性-如果ST系统声称A是一组公理的逻辑结果,我们希望情况确实如此。
  • 完整性-如果A是一组公理的逻辑结果,我们希望ST方法表明这一点。
写|=表示“是的逻辑结果”,写|-表示“可以在语义表系统中证明”,这些条件变成

Γ|=A若Γ|-A

注意,试图证明完整性与哥德尔不完全性定理简而言之,这个结果可以说是“标准解释属于一阶算术无法从一阶算术公理“.语义画面系统的不同之处在于,我们寻找的是逻辑结果,即能够容纳的句子一切可能包括公理的解释。因此,如果一个语句有时是真的,有时不是(如一阶算术中无法证明的真语句,在其他一阶语言中是假语句),则不能使用ST方法来证明它(因为它并不总是真的!)。

正确性

假设我们有一个可满足的表T0-也就是说,有一个解释I和表上的分支α,使得在α上断言的所有句子在I中都为真,在α上否认的所有句子都在I中为假0==>温度1给出了一个表格T1这也是令人满意的。
(要看到这一点,请考虑应用规则要么改变α,要么不改变。如果不改变,我们保留我们的可满足分支。如果α已经改变,那么添加的节点是α上早期节点的逻辑结果,因此在I下仍然有效;如果我们引入分支,那么在I中至少有一个是真的。)。
现在,我们可以将这个引理推广到满足定理-如果单个应用程序将可满足的表转换为可满足的,那么任何数量的此类应用程序也会保持可满足性(简单地说感应电动机适用的规则数量)。
现在假设我们已经将规则应用于T表0它断言Γ和NOT A;得到了一个表Tc(c)所有分支都因矛盾而封闭。这在ST系统中构成了一个证明,即我们处于Γ|-a位置。
T型c(c)不能满足,因为它以矛盾结束。因此T0是不可满足的(如果它是,那么Tc(c)必须通过满足定理,我们知道Tc(c)不是。)
所以T0是不可满足的,这意味着没有有效的解释。因此,在所有可能有Γ的解释中,我们不可能有NOT A,因为这会使t0对这种解释感到满意。但如果我们不能有NOT A,我们就必须取A。所以只要Γ成立,A成立。这正是Γ|=A,所以我们对ST系统有正确性。

完整性

我们将通过以下方式证明这一点对位-任何在ST方法中无法从一组公理中证明的句子都不是这些公理的逻辑结果,因此任何逻辑结果的句子都必须是可证明的。
因此,假设A不能从ST方法中的Γ中证明。这意味着从T开始0,断言Γ,否认A,不存在封闭Tc(c)这样T0===>*吨c(c)(即,我们无法通过任何数量的规则应用程序来实现矛盾封闭的表格)。相反,我们有一个表T的级数0==>温度1==>温度2==>....
让Tw个=极限T如i-->∞。(注意,不以矛盾结尾的推导可以是无限的长度如前所述)。然后是Tw个具有至少一个开放分支α;这个分支描述了一种解释I,其中Tw个感到满意。但是T0是T的任何分支的子集w个,因此I是一种解释,其中T0感到满意。但是T0断言Γ,否定A。所以我们在解释中有A不跟随Γ,因此我们没有Γ|=A。
所以NOTΓ|-A意味着NOTГ|=A。所以通过对置,我们得到Γ|=A意味着Γ|-A,这是完备性的要求,我们的证明完成了。

来源和参考资料

登录登记在这里写点什么或联系作者。