你好,类型(四):Propositional logic


前两篇中,我们介绍了演算和(组合子逻辑),

我们采用了公理化的方法,先定义系统中的公理,然后定义推导规则,

最终得到了两个形式系统,系统以及系统。


值得注意的是,公理系统不仅仅包含由公理和推导构成的形式系统,

还包含给这个形式系统所选择的语义。


给形式系统选择一个可靠的语义,是复杂的,我们将在后文再详细介绍。

从这一篇开始,我们先开始介绍数理逻辑,

看看逻辑学是怎么看待形式化问题的。


1. 命题逻辑形式系统



下文中,我们采用与系统,系统相同的方式,

来介绍命题逻辑(propositional logic)。


命题逻辑,是在研究命题的证明和推理的过程中抽象出来的,

先不考虑语义,仅仅从符号的角度(形式化)来考虑它,则是更简单直接的。


1.1 公理和推导规则

首先我们给出命题逻辑形式系统中的公理,

(1)

(2)

(3)


然后,我们给出命题逻辑形式系统中的推导规则,

(1)


以上推导规则可以理解为,

如果成立,则成立。


这里我们采用了推导规则的常用写法,

横线上面的部分“”称为规则的前提(premise),

横线下面的部分“”,称为结论(conclusion)。


在命题逻辑中,根据公理和推导规则,得到的公式称为定理

根据公理,定理和推导规则,得到的公式也是定理。


1.2 例子

下面我们来看一个例子,

求证:是一个定理。


证明:

首先,我们使用公理(1),我们有下式成立,


然后,我们使用公理(2),并令其中的


最后,我们结合以上两个结论,再使用推导规则(1),就得到了,


证毕。


2. Hilbert-style和Gentzen-style



以上的证明过程中,每一行断言,是一个不包含条件的定理,

这种风格的演绎系统(deduction system)称为具有Hilbert-style


如果是有限的公式集合,则,

,称为一个序贯(sequent)。

其中,称为序贯的前提(antecedent),称为序贯的结论(succedent)。

它表示,如果公式集都成立,那么中至少有一个成立。


如果证明过程中,每一行断言是一个序贯,

这种风格的演绎系统,称为具有Gentzen-style


Hilbert-style演绎系统,通常具有较多的公理,但是具有较少的推导规则,

Gentzen-style演绎系统,则反之,具有较少的公理,却具有较多的推导规则。


如果中总是只包含一个公式,

则称该演绎系统为自然演绎系统(natural deduction system)。


如果有限序列,,满足,

(1)为有限公式集

(2)为公式

(3)每个,都是它之前若干个,应用某条推导规则得到的


我们就称这个有限序列,为的一个(形式)证明序列

此时,也称可由(形式)证明


3. 命题逻辑的自然演绎系统



以上定义的形式系统,称为命题逻辑形式系统

下面我们再定义一个与之等价的,命题逻辑的自然演绎系统


3.1 语法

(1)可数个命题符号:

(2)5个联接词符号:

(3)2个辅助符号:


3.2 合法的公式

我们使用BNF来定义,



3.3 推导规则

(1)包含律:

(2)消去律:

(3)消去律:

(4)引入律:

(5)消去律:

(6)引入律:

(7)消去律:

(8)引入律:

(9)消去律:

(10)引入律:


3.4 例子

以上,我们定义了命题逻辑的自然演绎系统

它比命题逻辑形式系统更复杂一些,但是这两个系统是等价的。


我们来看一个例子。

求证,是一个定理。


证明:

首先,我们根据包含律有,


然后,根据这两个结论,以及消去律,就有,


证毕。


4. 系统的等价性



本文我们介绍了两个形式系统,

命题逻辑形式系统,以及命题逻辑的自然演绎系统

可以证明,对于(或)中的公式当且仅当


因此,这两个系统中的定理集是一样的,

某个定理在中可证,当且仅当在中也可证。


其中,我们令,

,表示

,表示

,表示


对于这两个系统而言,如上文所示,

我们只进行了符号的推导操作,即对公式进行形式证明,

至于这些符号到底代表什么意思,我们却故意没有提及。


我们并没有说表示“或”,也没有说表示“与”,

在学数理逻辑的时候,一开始就将形式系统与它的语义模型相区分,

是非常有益的,后文我们将看到这样做的好处。


5. 总结

本文介绍了命题逻辑,以及与之相关的两个形式系统

一样,我们采用了公理化的方式构建它们,

这样得到的形式系统,只是符号演算,还没有被赋予特定的语义,

下文我们开始介绍一阶谓词逻辑。


参考

离散数学教程

数理逻辑

Proof calculus

Hilbert system

Natural deduction

Sequent calculus

Practical Foundations for Programming Languages

Lambda-Calculus and Combinators,an Introduction