DennyQi's Log

一阶逻辑的语法与语义

一个数学定理是由公理出发经过正确的逻辑推导得出的一个结论。我们希望这整个过程是尽可能精确而严格的,因此这整个过程最好是能够被形式化(formalize)的。为此我们要定义一套形式语言来描述公理、证明与定理。

一阶逻辑的语法

我们将会建立的这套形式语言称为一阶语言(first-order language)或一阶逻辑(first-order logic)。对于一个集合,我们把集合的元素(elements)称为一阶对象(first-order objects),它们是构成集合的最基本要素。一阶对象的集合也即集合子集称为二阶对象(second-order objects),相应地二阶对象的集合构成三阶对象,等等。一阶语言规定我们在存在量词中只能提到一阶对象,例如我们可以说“对于集合AA中的每个元素,……”,但不能直接说“对于集合AA的每个子集,……”。这意味着一阶逻辑能够直接表达的数学定理是有限的,有许多涉及高阶两次的数学定理是不能直接翻译为一阶逻辑的。然而,通过一些基于集合论的转化,我们原则上可以用一阶逻辑表达当今世界上的所有数学定理,也就是说本质上对一阶逻辑的讨论就是对所有数学定理的讨论,我们之后会看到如何做到这一点。

一阶逻辑的字母表

在形式语言中,一切讨论的对象都要用符号串(word),符号串就是由字符集(alphabet)中的字符连接而成的字符串。首先定义一阶逻辑的alphabet。一阶逻辑的alphabet包括以下内容:变量(一般记为v0,v1,v_0,v_1,\cdots,一阶逻辑能够使用的变量必须是可数的);逻辑符号——否定(¬\neg),与(\and\and),或(\or\or),推出(\to),等价(\leftrightarrow);存在量词(,\forall,\exists);等号(\equiv);逗号(,);nn元关系符号(可以为空);nn元函数符号(可以为空);常数符号(可以为空)。最后三者比较特殊,我们把他们统称为符号集,记为SS。所有一阶逻辑的形式系统的alphabet只有SS集是不同的,其它都是相同的。注意以上所有符号都是未被赋予任何含义的,等号的含义可能与我们经验中的等号的含义完全相反或完全不同。我们完全可以把等号换成苹果,否定换成香蕉,因为我们只是完全形式化地写出了这一些符号罢了。

将一阶逻辑的字符连接成字符串是要遵循一定规则的,这些规则就称为一阶逻辑的语法。对于固定的SS,我们定义一阶逻辑的term:term只有三种,单个变量viv_i,单个常数viv_i,以及归纳地以term作为自变量的nn元函数f(t1,t2,,tn)f(t_1,t_2,\cdots,t_n)。我们定义一阶逻辑的formula:用等号连接地两个term(t1t2t_1\equiv t_2);以term作为自变量的nn元关系R(t1,,tn)R(t_1,\cdots,t_n);归纳地,如果φ\varphi是formula,¬φ\neg \varphiφ\forall \varphiφ\exists \varphi也是formula;归纳地,如果φ,ψ\varphi,\psi是formula,φψ\varphi \land \psiφ\orψ\varphi\or\psiφψ\varphi\to \psiφψ\varphi \leftrightarrow \psi也是formula。我们依然要注意到term和formula也是没有任何意义的,它们只是按照我们定义的语法连接而成的字符串。

为了今后讨论的方便,还要引入一些概念来方便称呼。 在一个formula中,不出现在存在量词中的那些变量称为自由变元(free variable),它类似于程序中的全局变量。例如v1¬v1v2\forall v_1 \neg v_1\equiv v_2中的v2v_2是自由变元而v1v_1不是(因为按照我们的理解v1v_1的取值其实是被预先fix的,也即它不是自由的)如果一个formula中不存在任何自由变元,就把这个formula称为一个sentence。(可以设想只有sentence这样的formula才刻画某种真正的具有一般性的数学性质。 )

一阶逻辑的语义

根据我们定义的一阶逻辑的语法,我们能写出许多term,term可以组成formula。现在我们要赋予term和formula以“意义”,这意味着我们要对一阶逻辑的所有符号和符号的组合给出“解释”。

意义取决于我们讨论的背景。当我们讨论自然数上的数学命题时,变量自然只能取自然数;如果我们讨论实数上的数学命题时,变量允许取全体实数。因此关于意义的第一个要素就是universe(论域),记为A\mathcal{A}。确定了universe以后,nn元关系就是An\mathcal{A}^n的子集,函数就是AnA\mathcal{A}^n\to\mathcal{A}的映射,常量符号是固定的A\mathcal{A}中的元素。后三者可以看作从关系符号、函数符号到对应的universe上的映射a\mathfrak{a},这样我们就对变量和符号集S做出了解释。这个解释可以看作二元组A=(A,a)\mathfrak{A}=(A,\mathfrak{a}),称为S上的一个structure(结构)。Structure没有对变量和函数关系给出具体的解释,但限制了我们讨论变量和函数关系的范围。

现在我们要更具体地对term和formula做出解释,就需要给每个变量赋值。当我们暂时不考虑有存在量词的情况时(所有变量都是free的),可以简单地理解为每个变量有一个特定的取值。于是我们定义函数β:viA\beta:v_i \to \mathcal{A},这样就给每个变量赋予了一个解释,这称为assignment。把structure和assignment结合起来称为interpretation,记为I=(A,β)\mathfrak{I}=(\mathfrak{A},\beta)。(注意到我们还没对一阶逻辑的其他符号给出意义,这些解释被包括在interpretation对term和formula的解释当中)。

下面定义对term的interpretation。对于单个变量,规定I(vi)=β(vi)\mathfrak{I}(v_i)=\beta(v_i);对于单个常量,规定I(ci)=cA\mathfrak{I}(c_i)=c^{\mathfrak{A}};对于函数,归纳地规定I(f(t1,,tn))=\mathfrak{I}(f(t_1,\cdots,t_n))= fA(I(t1),,I(tn))f^\mathfrak{A}(\mathfrak{I}(t_1),\cdots,\mathfrak{I}(t_n))

对于formula,我们引入符号\modelsIφ\mathfrak{I} \models \varphi表示在I\mathfrak{I}这一解释下φ\varphi是真命题。对于等号,规定It1t2\mathfrak{I}\models t_1\equiv t_2当且仅当I(t1)=I(t2)\mathfrak{I}(t_1)=\mathfrak{I}(t_2);对于关系符号,规定IR(t1,,tn)\mathfrak{I}\models R(t_1,\cdots,t_n)当且仅当RA(I(t1),,I(tn))R^\mathfrak{A}(\mathfrak{I}(t_1),\cdots,\mathfrak{I}(t_n))成立;对于非,归纳地规定I¬φ\mathfrak{I} \models \neg \varphi当且仅当Iφ\mathfrak{I}\models \varphi不成立,记为I⊭φ\mathfrak{I} \not\models \varphi;对于与,归纳地规定Iφψ\mathfrak{I} \models \varphi\land \psi当且仅当Iφ\mathfrak{I}\models \varphi成立且Iψ\mathfrak{I}\models \psi成立;对于或,归纳地规定Iφ\orψ\mathfrak{I} \models \varphi\or \psi当且仅当Iφ\mathfrak{I}\models \varphi成立或Iψ\mathfrak{I}\models \psi成立;对于推出,归纳地规定Iφψ\mathfrak{I} \models \varphi\to \psi当且仅当Iφ\mathfrak{I}\models \varphi成立能推出Iψ\mathfrak{I}\models \psi成立;对于等价,归纳地规定Iφψ\mathfrak{I} \models \varphi\leftrightarrow \psi当且仅当Iφ\mathfrak{I}\models \varphi成立等价于Iψ\mathfrak{I}\models \psi成立。存在量词的情况比较复杂,我们想直观上这样定义:Ixφ\mathfrak{I} \models\exists x \varphi的含义是存在一个universe A\mathcal{A}中的元素aa,把φ\varphi中的xx都用aa代入以后成立。为此我们引入记号Iax\mathfrak{I}\dfrac{a}{x},表示在I\mathfrak{I}的assignment中强制规定β(x)=a\beta(x)=a。所以我们定义Ixφ\mathfrak{I} \models \exists x\varphi当且仅当存在aAa \in \mathcal{A}使得Iaxφ\mathfrak{I}\dfrac{a}{x}\models \varphi;定义Ixφ\mathfrak{I} \models \forall x\varphi当且仅当对于所有的aAa \in \mathcal{A}都有Iaxφ\mathfrak{I}\dfrac{a}{x}\models \varphi

对于\models符号,我们额外规定formula集合的情况。对于formula集合Φ\Phi,如果对于所有的φΦ\varphi \in \Phi都有Iφ\mathfrak{I}\models \varphi,就简记为IΦ\mathfrak{I} \models \Phi。如果对于任何的I\mathfrak{I},只要IΦ1\mathfrak{I} \models \Phi_1就有IΦ2\mathfrak{I} \models \Phi_2,就简记为Φ1Φ2\Phi_1 \models \Phi_2。如果对于任何的I\mathfrak{I}都成立Iφ\mathfrak{I} \models \varphi,就简记为φ\models \varphi。如果存在I\mathfrak{I}使得Iφ\mathfrak{I} \models \varphi,就称φ\varphi是satisfiable的(可满足的)。

语义等价

对于两个命题φ,ψ\varphi,\psi,如果φψ\varphi \models \psiψφ\psi \models \varphi都成立,就称它们是逻辑等价的。逻辑等价意味着它们在语义上的成立是当且仅当的。通过冗长但并不复杂的结构归纳(Homework3),我们发现φψ\varphi \land \psi等价于¬(¬φ\or¬ψ)\neg(\neg\varphi \or \neg\psi)(我们熟知的De Morgan's Law);φψ\varphi\to\psi等价于¬φ\orψ\neg \varphi \or \psi(前者成立时后者成立,或者前者不成立,综合起来就是前者不成立或者后者成立);φψ\varphi \leftrightarrow \psi等价于¬(φ\orψ)\or¬(¬φ\or¬ψ)\neg(\varphi\or \psi)\or \neg(\neg \varphi \or \neg\psi)(同时成立或同时不成立);xφ\forall x \varphi等价于¬x¬φ\neg \exists x\neg \varphi(对任意成立,等价与存在一个不成立的否定)。通过等价变换我们发现逻辑符号中,\and,,,\and,\forall,\to,\leftrightarrow本质上是可以被抛弃的,因此我们只需要¬,\or,\neg,\or,\exists这三个符号就够了。在今后的关于语义的结构归纳中,也只需要对这三个符号做归纳。

现在我们想知道对于两个interpretation I1,I2\mathfrak{I}_1,\mathfrak{I}_2,什么时候它们对一个term tt的解释是相同的(I1(t)=I2(t)\mathfrak{I}_1(t)=\mathfrak{I}_2(t))?容易发现,如果I1\mathfrak{I}_1I2\mathfrak{I}_2对每个变量都有相同的解释,对每个常量有相同的解释,对每个函数符号也有相同的解释, 那么就一定满足I1(t)=I2(t)\mathfrak{I}_1(t)=\mathfrak{I}_2(t)。同样的,什么时候它们对一个formula φ\varphi的解释是相同的(I1φ    I2φ\mathfrak{I}_1\models \varphi \iff \mathfrak{I}_2\models \varphi)?归纳地,我们发现我们只要对每个变量、常量以及关系符号有相同的解释就可以保证这一点。但对于formula的情形,我们还必须考虑自由变元的问题,这里我们发现formula的情形我们并不关系不自由的变元上的解释(理应如此),因此只需要求对所有自由变元有相同的解释。我们可以把以上两点总结成一条定理,称为The Coincidence Lemma:如果I1\mathfrak{I}_1I2\mathfrak{I}_2有相同的universe A\mathcal{A},在共同的符号集上对符号都有相同的解释,那么如果I1\mathfrak{I}_1I2\mathfrak{I}_2在所有tt的变量上有相同解释就成立I1(t)=I2(t)\mathfrak{I}_1(t)=\mathfrak{I}_2(t),如果I1\mathfrak{I}_1I2\mathfrak{I}_2φ\varphi的所有自由变元上有相同解释就成立I1φ    I2φ\mathfrak{I}_1\models \varphi \iff \mathfrak{I}_2 \models \varphi

The Coincidence Lemma描述了interpretation对term和formula等价的条件,它的核心条件是两个interpretation对自由变元有相同的解释。现在考虑sentence的等价条件,这样我们就可以抛弃所有对自由变元的解释,也即可以不考虑assignment而回退到structure的情形了。对于sentence φ\varphi,如果两个structure A,B\mathfrak{A},\mathfrak{B}是isomorphic(同构的),那么成立Aφ    Bφ\mathfrak{A} \models\varphi \iff \mathfrak{B}\models \varphi,这称为The Isomorphism Lemma。其中,isomorphism定义为,对于A\mathfrak{A}B\mathfrak{B},在universe上存在一个AB\mathcal{A}\to\mathcal{B}的双射π\pi,并且满足(a1,,an)RA(a_1,\cdots,a_n)\in R^\mathfrak{A}     (π(a1),,π(an))\iff (\pi(a_1),\cdots,\pi(a_n)) RB\in R^\mathfrak{B}(映射前后关系符号在各自的解释下的成立是当且仅当的),π(fA(a1,,an))=fB(π(a1),,π(an))\pi(f^\mathfrak{A}(a_1,\cdots,a_n))=f^\mathfrak{B}(\pi(a_1),\cdots,\pi(a_n))(函数符号映射后相等),π(cA)=cB\pi(c^\mathfrak{A})=c^\mathfrak{B}(对常数解释相等)。(容易证明isomorphism关系是一种等价关系,也即满足自反、对称、传递三条性质)。

Isomorphism Lemma反向是不对的,不能由Aφ    Bφ\mathfrak{A} \models\varphi \iff \mathfrak{B}\models \varphi推出A,B\mathfrak{A},\mathfrak{B}是isomorphic的。然而这一点在SS有限时是正确的,也即SS有限时Isomorphism Lemma是充分必要的(见Hw4Ex2,需要构造一个能精准刻画structure的sentence。)

Substitution

现在我们要讨论substitution(代入)这一操作。在形式系统中,substitution可以发生在语法上,也可以发生在语义上。语法上的substitution是机械地按照term的formula的结构归纳做字符串上的替换操作,语义上的substitution是对assignment函数β\beta做修改。下面严格地定义这两种substitution。

首先定义对term的语法替换。如果对于term tt,我们要在语法上同时代入x1=t1,,xr=trx_1=t_1,\cdots,x_r=t_r,那么把这一操作记为tt1,,trx1,,xrt\dfrac{t_1,\cdots,t_r}{x_1,\cdots,x_r},它归纳地定义为:如果tt就是单个变量,那么如果它是某个xix_i那么就直接替换成给定的tit_i,否则不变;如果它是常量则不变;如果它是函数f(t1,,tn)f(t_1',\cdots,t_n'),那么对每个tit_i'归纳地代换为tit1,,t2x1,,xrt_i'\dfrac{t_1,\cdots,t_2}{x_1,\cdots,x_r}

接着定义对formula的语法替换。同样的, 我们把这一操作记为φt1,,trx1,,xr\varphi\dfrac{t_1,\cdots,t_r}{x_1,\cdots,x_r}对于等号和关系符号这两种基本情形,直接对每个term做替换tt1,,trx1,,xrt\dfrac{t_1,\cdots,t_r}{x_1,\cdots,x_r};对于¬,\and,\or,,\neg,\and,\or,\to,\leftrightarrow,对每个formula归纳地替换;对于xφ\exists x\varphi,我们只考虑x1,,xrx_1,\cdots,x_r中那些在xφ\exists x\varphi中作为自由变元的变量(这么规定的直观在于,对非自由的变量替换是没有意义的), 只对这些归纳地做替换,同时为了考虑到替换后如果在tit_i中出现xx,这一变量会存在歧义,此时我们要把xx替换成一个在xφ\exists x\varphi的任何地方都从未出现过的变量(这总是做得到的,因为变量的个数是无穷的)。\forall的情形是相同的。

下面定义语义上的替换。如果我们要在某个interpretation I=(A,β)\mathfrak{I}=(\mathfrak{A},\beta)上把x1,,xrx_1,\cdots,x_r替换成universe中的a1,,ara_1,\cdots,a_r,那么我们直接把这一操作修改到β\beta上,记为βa1,,arx1,,xr\beta\dfrac{a_1,\cdots,a_r}{x_1,\cdots,x_r}。对于βa1,,arx1,,xr(v)\beta\dfrac{a_1,\cdots,a_r}{x_1,\cdots,x_r}(v),如果v=xiv=x_i那么函数值为aia_i,否则依然返回β(v)\beta(v)。记Ia1,,arx1,,xr=(A,βa1,,arx1,,xr)\mathfrak{I}\dfrac{a_1,\cdots,a_r}{x_1,\cdots,x_r}=(\mathfrak{A},\beta\dfrac{a_1,\cdots,a_r}{x_1,\cdots,x_r})

重要的问题是,语法上的替换是否等价于语义上的替换?The Substitution Lemma回答了这个问题:对于term tt,始终成立I(tt1,,trx1,,xr)=\mathfrak{I}(t\dfrac{t_1,\cdots,t_r}{x_1,\cdots,x_r})= II(t1),,I(tr)x1,,xr(t)\mathfrak{I}\dfrac{\mathfrak{I}(t_1),\cdots,\mathfrak{I}(t_r)}{x_1,\cdots,x_r}(t);对于formula φ\varphi,始终成立Iφt1,,trx1,,xr    \mathfrak{I} \models\varphi\dfrac{t_1,\cdots,t_r}{x_1,\cdots,x_r} \iff II(t1),,I(tr)x1,,xrφ \mathfrak{I}\dfrac{\mathfrak{I}(t_1),\cdots,\mathfrak{I}(t_r)}{x_1,\cdots,x_r}\models \varphi。换言之,对于某个interpretation,我们先在语法上做替换再做解释,与我们先做语义上的解释修改再重新解释,效果是等价的。(证明依据结构归纳)