数理逻辑2 -- 量化理论2

来源:互联网 发布:减肥吃什么知乎 编辑:程序博客网 时间:2024/06/05 01:04

上一节笔记给出了一阶逻辑语言的定义,本节笔记将要讨论一阶逻辑语言的满足性(satisfiability)与真假性(truth and falsity)。在讨论之前,必须再给出一些关键定义。

首先,一个好式子wf中的变量符号是有区别的,有的受限于全称量词,因此叫做“受限变量(bound variable)”,有的毫无限制,因而叫做“自由变量(free variable)”,它们的具体定义如下

定义2.5(变量的种类):在一个好式子wf中, 当某个变量符号xi的出现要么是(xi)中的这个xi,要么它在自己xi的限制范围之内(即它出现如xiB的子wf中的B里面),我们就说这个变量符号xi的这次出现是受限的(It has a bound occurance)。如果某个变量符号xi的某次出现不是受限的,那我们就说它的这次出现是自由的(It has a free occurance)。

定义2.6 (变量的种类): 在一个好式子wf中,如果某个变量符号xi存在至少一次自由出现(It has at least one free occurance),那么我们就说这个变量符号xi是自由变量(free variable)。如果它有至少一次受限出现,那么我们就说它是受限变量(bound variable)。

乍看之下,定义2.5和2.6也搞得人云里雾里,一会自由出现,一会自由变量。很多介绍数理逻辑的教科书,往往一上来就会从一阶逻辑语言讲起,一讲就会讲到“自由变量”的概念,看得人眼花,定力好的会坚持看下去,来回反复看,最终理解为什么要如此定义自由变量。定力不好的,直接就放弃了。

要通俗地理解“自由变量”也可以,其实它就是为了后续定义“满足性”时,可以对自由变量做任意替代。简单想想,如果一个变量xi不受任何全称量词限制,那么它就是可替代的,换成什么变量符号都行,都“肯定”不会影响谓词的正确性。但如定义2.5和2.6般那样说得云里雾里,自有它的道理,我们一步一步看吧。

同样,我们给一些例子来巩固一下“自由变量”的概念。
例子(自由变量)
比如好式子A(x1)(x2)B(x1,x2)中,总共有4个变量符号出现(是的,x2这个东东中的x2也算出现了一次。)。注意,我们并不是说上述wf有4个变量符号。它只包含了两个变量符号,即x1x2,但它们加起来一共出现了4次。在这4次出现中,我们从左到右一个个来看,第一个出现的x1,根据定义2.5,它是“自由出现”。第二个出现的x2是“受限出现”,因为它就在x2中。第三个出现的x1也是“自由出现”,它并没有被“自己受限”。第四个出现的“x_2”也是“受限出现”。

说完了“自由出现”与“受限出现”,再来看看什么是“自由变量”。上述wf只有两个变量,根据定义
2.6,x1有一次“自由出现”,所以x1就是自由变量。x2只有受限出现,所以它就是“受限变量”。

注意,一个变量可以即是自由变量,也是受限变量,比如A(x1,x2)(x2)B(x1,x2)中的x2

“自由出现”的定义是为了可以实现“变量替代”。
定义2.7(变量替代, substitution):我们说,在一个wf中,变量替代的操作是指xj替代xi的某一次出现。我们也可以说,用xj替代xi的所有自由出现,或者xi的所有受限出现。

所以,当我们说“用某个变量代替另一个变量”时,指的是代替那个变量的某次出现。
例子
比如还是之前的例子A(x1)(x2)B(x1,x2),我们可以用x3替代x1所有的自由出现,也即变成了A(x3)(x2)B(x3,x2)。当然,也可以用x2替代x1所有的自由出现,变成A(x2)(x2)B(x1,x2)。我们发现A(x3)(x2)B(x3,x2)A(x2)(x2)B(x2,x2)这两者并不是一回事。本来B的第一个变量是不受之前x2限制的,现在用x2替代后,就变成了受限制,所以变换后的wf就完全变了个意思。

现在大约可以看出定义2.5和2.6的良苦用心了,再次强调,“自由出现”的定义是为了可以实现“变量替代”。当然,既可以用一个变量替代另一个变量,也可以用一个项(term)替代另一个变量。在这种替代中,很显然为了保持“自由出现”的性质,代入的项不能引入原先没有的限制。也就是说,代入的项对被替代的对象是自由的。
定义2.8 (项代入的自由属性):在一个好式子B中,如果xi是自由变量,我们说一个项t在B中对xi来说是自由的,或者通俗点讲,t不受xi限制,是指t中包含的变量符号,没有一个是限制xi的自由出现里的xjxj

定义2.8也说得绕来绕去,举个例子就能明白。
例子
还是之前的例子A(x1)(x2)B(x1,x2)x1是自由变量,它有两次自由出现。现在考虑这么个项f21(x2,x3),这个项t包含两个变量x2x3。定义2.8是说,x1的第二次自由出现受到了x2的约束,而t又含有x2这个变量,所以t就是“对x1不自由”,或者说,“tx1限制”。为什么要这么定义呢?显然,你这时候拿t去代替x1的话,就会变成A(x1)(x2)B(f21(x2,x3),x2)。这个新的wf和原来的wf就不是一回事了,因为原来的B(x1,x2)中的第一个输入不受x2限制,而变换后的B(f21(x2,x3),x2)就受x2限制了。

如果tf21(x3,x4),那么t就是不受x1限制的。甚至,t可以是f21(x1,x3),也是不受x1限制的,只要不包含x2就行了。

定义2.8还有一层含义,即如果自由变量xi没有任何受限出现,那么就可以随意替代。

对了,讨论到现在,一直忘了如何处理诸如“某个”,“有的”这样的量词,这种量词叫作“存在量词”,用符号表示,即可以写(xi)B。我们没必要单独定义这个符号,就像,,只是¬,的缩写一样,也是一种缩写,即(xi)B¬((xi)(¬B))的缩写(当然,它也符合我们的日常理解。)

做了这么多准备工作,就是为了要定义wf的“满足性(satisfiability)”。所谓wf的真假,其实是说定义域D中的某个序列,用它们替代变量之后,得出来的东西满足wf里面的那堆谓词关系,也就是wf里面的那些谓词符号B1,B2,...,,它们的输入项都映射到D中的某些元素后,再看这些元素是否在关系B1,B2,...中,然后再根据和命题演算系统类似的真假规则,判定这个wf的真假。

定义2.9(序列映射):L是一个一阶逻辑语言,M是它的一个解释,D是相应的定义域,那么记D中所有可数序列的集合(采用朴素理解即可)。对于中的一个可数序列s=(s1,s2,...,),我们定义一个相应的函数s,使得L中的每个项t根据以下规则映射到D中的一个元素:

  1. 如果t是变量xj,那么s(xj)映射到sj
  2. 如果t是常量aj,那么s(aj)映射到aj在解释M中对应的那个固定元素。也即是说,aj对应的值与序列s无关。
  3. 如果t是函数符号fnj,我们用(fnj)M表示这个函数符号在解释M中对应的函数,那么s(fnj(t1,t2,...,tn))映射到(fnj)M(s(t1),s(t2),...,s(tn))。也即是说,先把函数符号里的项通过s映射成D中元素,再根据D中对应的函数,映射成D中的另一个元素。

    通过定义2.9的序列映射,给定一个序列s,对于任意的wf,我们都可以把里面的项“变成”了定义域D中的元素,剩下判断wf的真假就成了判断每个谓词关系是否成立。

    定义2.10(满足性):L是一个一阶逻辑语言,M是它的一个解释,D是相应的定义域,那么记D中所有可数序列的集合。对于中的一个可数序列s=(s1,s2,...,)和一个好式子B,如果以下条件满足,我们就说s满足B

    1. 如果B是一个原子wf,即仅是一个谓词符号Bnj(t1,t2,...,tn),它对应解释M中的关系为(Bnj)M。那么,序列s满足B,当且仅当,(Bnj)M(s(t1),s(t2),...,s(tn))为真,即(s(t1),s(t2),...,s(tn))在关系(Bnj)M中。
    2. s满足¬B,当且仅当,s不满足B
    3. s满足BD,当且仅当,s不满足B或者s满足D
    4. s满足(xi)B,当且仅当,每一个和序列s最多只在第i个位置不同的序列s都满足B

不要被定义2.10诸多的描述所吓到,通俗点说,要判断一个序列s是否满足B,首先把B中所有的项用s映射成D中的元素,然后再看关系B是否成立。剩下的判断准则,和命题演算系统中判断真假的规则类似,只是定义2.10的第4点对xi做了额外处理。它的意思也很简单,既然有xi,就是说“对于所有的x_i,B都成立”,所以当然要把每个第i个位置不同的序列都试一遍,都满足了,才叫满足了(xi)B成立。

定义了满足性,接下来就能定义真假性。
定义2.11(真假性)::L是一个一阶逻辑语言,M是它的一个解释,D是相应的定义域,D中所有可数序列的集合。我们说,
1. 一个好式子B为真,当且仅当,每一个中的序列都满足B
2. 一个好式子B为假,当且仅当,没有中的序列能满足B
3. M是一个好式子集合Γ的模型,当且仅当,每一个Γ中的好式子在M的解释下都为真。

根据定义2.11,对于一个解释M,可能存在有些好式子既不为真,也不为假。

定义玩到现在,下一节该玩点证明了。