证明论和逻辑代数

第1章 相继式系统

在第1.1节给出预备评注和对于本书范围的简要解释之后, 我们将分别为古典逻辑和直觉主义逻辑引入两个相继式系统LKLJ. 这两个相继式系统对于第I部分的证明论研究都是基础性的, 其最初由G. Gentzen在他的论文 (Gentzen 1935) 里引入. 基本的证明和可证明性的概念首先被引入. 然后对于LK的完备性和切消的初等证明被给出, 通过使用古典逻辑的一个可逆相继式系统LK*, 其是LK的一种替代. 这将会是展现证明论式论证如何进行的一个简明例子.

第1.1节 开篇

基本概念和记号

我们将会使用, , , ¬分别表达基本的逻辑联结词合取, 析取, implication, 否定. {译注: 为了避免各种可能的混淆, implication就不翻译了.} 若有必要, 例如当我们讨论模态逻辑和亚结构逻辑的时候, 我们将会引入额外的逻辑联结词和逻辑常量. 我们从外部取一个固定的命题变量的可数集. 公式和通常情况一样通过归纳定义, 从命题变量和逻辑常量开始, 然后反复应用逻辑联结词. 括号会按照通常方式进行省略, 只要不至于引起误解. 为了简化表达式, 我们采取约定, ¬比其他逻辑联结词都结合得更紧密. 因此, 例如, 公式p¬q表示p(¬q). 我们将会使用小写希腊字母表达公式. 当一个公式β出现在一个公式α的归纳定义之中, 公式β被称为α的一个子公式. 除开α之外的α的每个子公式被称为α的一个真子公式. 例如, p,q,¬q,p¬q都是p¬q的子公式, 而前三个则是p¬q的真子公式.

有时我们按照以下方式对于公式的构造施行归纳论证. 也就是说, 为了确保每个公式都具有某个给定的性质P, 我们要表明 (1) 每个命题变量 (以及每个常量) 都具有P (2) 对于每个β, 若β的每个真子公式γ都具有P, 那么β也具有P. 这种形式的归纳也可以表达为对于公式的长度进行归纳. 这里某个给定公式α的长度的含义是α中的逻辑符号的总数目. 可能公式β在某个给定的α中作为子公式出现不止一次, 但是在不同的地方出现. 例如, 公式p在公式p¬p里出现了两次. 如果我们需要进行区分, 那么我们会使用术语公式出现. 然后, 我们可以说p¬p拥有p的两次公式出现. 一般而言, 当我们不只是关心表达式本身也关心其出现的位置时, 我们就会使用词汇出现. 在本书中, 我们有时使用iff作为if and only if的缩写. {译注: 当然了, 我们都会将其翻译为当且仅当, 这是Paul Halmos所创制的表达.}

逻辑的句法方法和语义方法之比较

在以下内容里, 我们将简要介绍主题的背景, 特别是本教科书的第I部分和第II部分的区别和联系. 熟悉这部分内容的读者可以跳过.

引入一个逻辑的标准方式时将其描述为一个形式系统. 一个形式系统通常由公理推理规则构成, 其确定了系统中的公式的可证明性. 一个给定公式α在系统中是可证的, 如果α可以在系统中被推导出来, 即通过从系统的公理开始, 反复应用系统的规则得到. 一个对于α证明 (或者推导) 是一个有限的figure, 其表明了α在系统中是如何推导出来的. 证明和可证明性的概念由此是句法性的概念, 其由符号和机械过程构成.

作为形式系统的一个例子, 以下我们将给出古典逻辑的一个标准Hilbert风格系统HK. 其由作为单一规则的modus ponens和以下给出的公理模式构成. 这里的modus ponens是说一个公式β可以由ααβ共同推导出来. 另外, 每个公理模式不是单一的公式, 而是具有模式所表示的相同句法形式的所有公式. 因此, 一个公理模式的每个实例都可以视为一个公理. (出于简单性的考量, ¬α在本节的剩余部分里将被视为α0的缩略, 其中0是一个逻辑常量, 其表达了一个矛盾.) {原注: 为了避免符号太过复杂, 我们使用相同的符号表达公式和公式模式.}

现在HK的公理模式列出如下, 其看上去和标准的有些许不同. 不过, 我们的选择是为了容易看出其与下一节要引入的古典逻辑的相继式系统LK之间的联系.

  1. α(βα) (左弱化公理)
  2. (α(αγ))(αγ) (收缩公理)
  3. (α(βγ))(β(αγ)) (交换公理)
  4. 0α
  5. (αβ)((γα)(γβ))
  6. (αγ)((βγ)((αβ)γ))
  7. α(αβ)
  8. β(αβ)
  9. (γα)((γβ)(γ(αβ)))
  10. (αβ)α
  11. (αβ)β
  12. ¬¬αα (双重否定律)

呈现Hilbert风格系统的另一种方式是取modus ponens和替换规则作为规则, 然后取公理而非公理模式. 通过这里的替换规则我们可以根据α对于任意的一致替换σ推出σ(α). {原注: 这里的σ是一个从命题变量的有限集合{p1,,pm}到某个公式集合的映射, 而σ(α)代表由α通过将α中的每个pi同时替换为σ(pi)得到的公式, 其中i=1,,m. 这样一个公式σ(α)被称为α的一个替换实例 (或者更简单地说, 实例).} 在这种情况下, 例如弱化公理就是通过一个单独的公理p(qp)给出的, 其中pq是不同的命题变量. 其他的弱化公理则是通过这条公理应用替换规则得到的.

第1.2节 古典逻辑的相继式系统LK

我们将要引入古典逻辑的一个相继式系统LK. 与Hilbert风格系统不同的是, 相继式系统中的基本表达式是相继式. LK中的每个相继式都是具有以下形式的表达式, 其中每个αi (im) 和每个βj (jn) 都是公式, 而m,n0. 这里的逗号,和箭头都是元逻辑符号.α1,,αmβ1,,βn因此, 每个相继式都是由逗号分隔的公式的有限序列, 而相继式又由划分为前件(antecedents)α1,,αm后件(succedents)β1,,βn.

大致来说, 前件和后件可以分别理解为假设结论. 但是, 这里我们必须要小心, 因为前件是合取式(conjunctive-like)理解而后件是析取式(disjunctive-like)理解. 也就是说, 上述的相继式从直觉上来理解即(β1βn)可由假设α1,,αm推出, 或者等价地说, 可由假设(α1αm)推出. 当后件为空时, 相继式α1,,αm的含义是根据假设α1,,αm可以推出一个矛盾. 从另一方面来说, 如果前件为空, 相继式β1,,βn应该理解为(在没有任何假设的情况下)可以推出β1βn.

在相继式系统里, 我们讨论相继式的可证明性和有效性, 而非公式的, 它们分别代表了句法和语义的视角. 每个相继式系统都由初始相继式规则构成. 前者对应于Hilbert风格系统中的公理模式. 一个给定的相继式系统的每条规则确定了一个相继式何时以及如何由其他已经推得的相继式推出 (通常来说, 是从有限数目的相继式推出). 在我们的系统LK中, 如下所示, 每条规则由一或两个上相继式(upper sequent)和一个下相继式(lower sequent)构成, 意即下相继式可由这些上相继式推出. 以下的大写希腊字母代表(可能为空的)公式的有限序列. LK具有以下三个种类的规则{原注: 切规则经常被视为一种结构规则, 但是本书将其从结构规则中分离出来, 因为接下来介绍亚结构逻辑的时候会更加方便.}:

  1. 逻辑联结词,,,¬的(左和右)规则,
  2. 切规则,
  3. (左和右)结构规则.

LK具有以下初始相继式和规则.

0. 初始相继式: LK的每个初始相继式都是一个具有形式αα的相继式.

1. 逻辑联结词的规则:α,ΓΠβ,ΓΠαβ,ΓΠ()ΓΛ,αΓΛ,αβ(1)ΓΛ,βΓΛ,αβ(2)α,ΓΠαβ,ΓΠ(1)β,ΓΠαβ,ΓΠ(2)ΓΛ,αΓΛ,βΓΛ,αβ()ΓΛ,αβ,ΔΠαβ,Γ,ΔΛ,Π()α,ΓΛ,βΓΛ,αβ()ΓΛ,α¬α,ΓΛ(¬)α,ΓΛΓΛ,¬α(¬)

2. 切规则ΓΛ,αα,ΔΠΓ,ΔΛ,Π(cut)

3. 结构规则

出于方便的考量, 我们为每条规则附加了一个诸如()这样的名字. 在每条规则里, 使用小写希腊字母αβ的公式被称为活跃(active)公式. 另外, 每条规则里的下相继式里显式呈现的使用小写希腊字母的公式被称为规则的主(principal)公式. 例如, αβ是规则()的主公式, 而α是规则(w)的主公式. 其他的公式都被称为副(side)公式. 切规则的活跃公式被称为切公式. 对于逻辑联结词的规则而言, 主公式出现在前件里的是左规则. 对于结构规则, 活跃公式都出现在前件里的是左规则. 将前件替换为后件, 可以得到右规则的定义. 左规则的名字具有形式(), 右规则的名字具有形式().

每条规则都是说当上相继式可证明时, 其下相继式也是可证明的. 例如, 规则(1)是说每当相继式α,ΓΠ可证明时, 相继式αβ,ΓΠ也是可证明的. 类似地, 规则()是说 (为了简洁, 假定Λ为空) 每当ΓαΓβ都是可证的, 那么Γαβ也是可证的. 以这种方式, 每个逻辑联结词的公式精确地描述了这个联结词的功能.

切规则表达了演绎推理的一种基础原则. 实际上, 其是在说 (又一次为了简洁, 假定Λ为空) 如果Γα是可证明的, 并且α,ΔΠ是可证明的, 那么Γ,ΔΠ也是可证明的. 所有的结构规则作为一个整体控制了给定相继式里的前件和后件里的公式的顺序, 重复和省略. 特别地, 每条左结构规则从直觉上来说含义如下:

定义1.1. (证明和可证明性) LK中的某个相继式ΓΔ的一个证明P是一个有限树状图形, 以如下方式定义, 其展现了该相继式在LK中是如何从初始相继式推导出来的.一个相继式ΓΔLK中是可证明的当且仅当存在一个对于ΓΔ的证明. 另外, 当相继式αLK中可证明时, 我们也称公式αLK是可证明的.

我们注意到一个相继式在可证明时或许拥有数个不同的证明. 对于某个相继式ΓΔ的一个给定证明P, 设ΣΘ是出现在P中的一个相继式. 那么, 证明P中相继式ΣΘ之上 (也包括自身) 的子图形Q构成了一个终相继式为ΣΘ的证明. 作为Q这样的一个证明被称为P的一个子证明.

在给出证明的具体例子之前, 我们给出为了简化对于证明的描述的约定. 我们注意到在我们所列出的LK的规则里, 上相继式里的活跃公式总是置于前件的最左边或者后件的最右边, 除了交换规则. 理由只是为了简化规则的呈现, 因而这些限制不是本质性的. 实际上, 只要活跃公式出现在相应的前件或者后件的任何位置, 规则就可以应用. 这是因为, 我们可以首先对于上相继式应用交换规则, 将活跃公式移至前件的最左边或者后件的最右边, 然后应用所牵涉的规则, 最后再用交换规则将活跃公式移回去. 为了解释这种调整, 让我们考虑以下形式的规则(1):Σ,α,ΓΔΣ,αβ,ΓΔ以下是从这上相继式得到下相继式的方式.Σ,α,ΓΔα,Σ,ΓΔαβ,Σ,ΓΔ(1)Σ,αβ,ΓΔ这里的点代表对于交换规则的数次应用. 以这种方法, 我们将允许应用每条规则而不管其活跃公式出现在哪里.

例子1.2.
练习1.1.LK中给出对于以下相继式的证明.
  1. α(βα)
  2. α(βγ)(αβ)(αγ)
解答.
  1. ααβ,αα(w)αβα()α(βα)()
  2. ααααββγγβγ,βγ()α(βγ),α,βγ()β,α,α(βγ)γ(e)αβ,α,α,α(βγ)γ()αβ,α,α(βγ)γ(c)α,αβ,α(βγ)γ(e)αβ,α(βγ)αγ()α(βγ)(αβ)(αγ)()
练习1.2.LK中给出对于以下相继式的证明. (检查你的证明中是否存在某个相继式在后件里至少拥有两个公式.)
  1. α¬α
  2. ¬(αβ)¬α¬β
  3. (αβ)αα
解答.
  1. ααα,¬α(¬)α¬α,¬α(1)α¬α,α¬α(2)α¬α(c)是的, 的确存在相继式在后件中拥有两个及以上的公式.
评注1.3.

使用公式的多重集的一个对于LK的改进呈现

在给定证明的长度上进行归纳

可逆系统LK*

第2章 相继式系统的切消

第3章 逻辑性质的证明论式分析

第4章 模态逻辑和亚结构逻辑

第5章

第6章 从代数到逻辑

逻辑的句法或者说符号方法起源于19世纪中叶. G. Boole在他的书 (Boole 1854) 中试图将逻辑推理表达为代数计算. 又过了几十年我们才有了Hilbert风格的系统. 尽管并非以其完备形式, Boole通过引入一些代数等式 (作为逻辑公理) 和一些用于从代数等式推导其他代数等式的规则 (作为推理规则) 建立了代数逻辑的公理基础. 我们应该注意到大约在那个时期, 诸如群, 环, 域这样的抽象代数结构得到了引入, 而对于这些结构的研究开始了. 尽管如此, 那时数学家主要关注具体的代数结构, 例如整数集, 有理数集, 实数集, 等等. 本章所介绍的布尔代数是一种抽象代数结构, 其基本上是由Boole引入的. 显然, 布尔代数的定义来源于对于古典逻辑的行为的代数描述.

在给出包括格与布尔代数等的一些基本代数结构之后, 我们将会在第6.2节引入三个代数概念, 其基本上贯穿了我们整个第二部分的讨论. 本章的最后两节我们给出了逻辑与代数的联系的一些例子, 这是第二部分的主题.

第6.1节 格与布尔代数

以下我们 先引入一些代数结构的基本概念, 然后呈现其性质.

定义6.1. (偏序) 一个集合A上的一个偏序A上的一个二元关系, 其满足以下性质: 对于所有的x,y,zA, 我们有
  1. xx (自反性);
  2. 如果xyyz, 那么yz (传递性);
  3. 如果xyyx, 那么x=y (反对称性).

一个偏序集A,是由一个集合A和一个其上的偏序构成的序对. 一个集合上的一个偏序是一个全序 (或者说线序), 如果对于所有的x,yA, xy或者yx总是成立. 在这种情况下, A,被称为是一个全序集, 或者说. 关系x<y由条件xy但不yx定义, 其被称为(由偏序导出的)严格序. 显然, xy当且仅当x<yx=y成立. 以下每张图 (Hasse图) 都表示了一个偏序集, 只有最左边的是一个链.

例子6.1.是自然数集, 即正整数集, 而是自然数上的通常序. 显然,

定义6.2. (格) 一个偏序集A,是一个, 如果对于所有的x,yA, 存在xy (join) 和xy (meet) 满足:
  1. xxyyxy;
  2. 对于zA, 如果xzyz, 那么xyz;
  3. xyxxyy;
  4. 对于zA, 如果zxzy, 那么zxy.
以上定义中的第一个条件是说xyxy的一个上界, 即一个元素其既大于等于x又大于等于y. 第二个条件是说xy小于等于xy的任何上界. 因此, xy的join xyxy最小上界. 类似地, 第三个条件是说xy的meet xyxy的一个下界, 而第四个条件和第三个条件连在一起是说xy的meet xyxy最大下界. 显然, 以下等价在每个格中都成立: xy=y当且仅当xy当且仅当xy=x. 由此我们可以推出, 一个给定格的偏序可以完全由或者确定. 因此, 我们可以安全地说A,,而非A,是一个格. 一个给定的格是有界的, 如果其存在最大元素和最小元素, 往往我们分别将其记作. 在以下三种偏序集里, 左边的和中间的是格, 右边的不是.
例子6.2. 1. 每个全序集都构成了一个格, 只要定义xy=max{x,y}xy=min{x,y}. 全序集,具有最小元素1, 但是没有最大元素, 因而其不是有界的.
2. 例子6.1里的第二个例子, 即偏序集
练习6.1. 证明在任意的格中, xy可以推出对于每个zxzyzxzyz.
解答. 根据yz的定义, 我们知道yyzzyz. 另外, 我们还知道xy, 于是根据传递性可知xyz. 那么, yzxz的一个上界, 所以xzyz. 根据xz的定义, xzxxzz. 另外根据xy和传递性可知xzy. 于是, xzyz的一个下界. 那么, 我们有xzyz.

我们将给出格的基本等式.

引理6.1. 以下等式在任意的格中成立. 对于所有的x,y,z, 我们有
练习6.2. 给出引理6.1的(3a)和(4a)的证明.
解答.
评注6.3. (格的另一种定义) 根据定义6.2, 一个格是一个偏序集且对于由其成员构成的序对, join和meet总是存在. 然后, 引理6.1说的是对于每个格而言, 这八个等式总是成立. 实际上, 定义格的另一种方式是取一个具有形式A,,的代数, 其两个运算总是满足这八个等式.
为了表明这种等价性, 有必要引入一个偏序使得在这样的代数之中运算分别表达了(相对于这个偏序而言的)join和meet. 事实上, 对于八个等式成立的代数A,,我们可以证明以下三条陈述总是成立:
  1. 对于所有的xy, xy=y当且仅当xy=x.
  2. 根据xy=x定义A上的一个二元关系xy, 那么是一个偏序. (我们将其称为由格运算导出的偏序.)
  3. xyxy分别是xy相对于这个偏序的join和meet. {译注: 当然了, join和meet的另外说法分别是最小上界和最大下界.}
练习6.3. 证明以上三条陈述成立.
解答.
  1. xy=y推出xy=x: 将xy=y带入(4b)可得xy=x;
    xy=x推出xy=y: 根据(4a)和替换可得y(yx)=y, 根据(2b)可知y(xy)=y, 带入xy=x得到yx=y, 然后再应用(2a)就有xy=y.
定义6.3. (分配格) 一个格A,,分配的, 如果等式x(yz)=(xy)(xz) (即分配律) 对于每个x,y,zA成立.
评注6.4. 以下三条陈述成立.
  1. 每个全序集都是分配格.
  2. 在每个格中对于任意的x,y,z不等式x(yz)(xy)(xz)都成立.
  3. 定义6.3中的分配律可以替换为其对偶形式:
定义6.4. (完备格) 一个格A,,完备的, 如果对于A的任意(可能为空的)子集S, 其最小上界 (记作S) 和最大下界 (记作S) 均存在. 这里的A的一个元素a是一个集合S最小上界, 如果最大下界可以对偶地定义. 因此, S的最大下界是一个大于等于S的任意下界的S的下界.

根据定义, 分别是A的最小元素和最大元素. 因此, 完备格必然是有界的.

例子6.5.
练习6.6.
例子6.6.

布尔代数

让我们回忆一下古典逻辑的逻辑联结词, , 的真值表, 其中01分别代表falsehoodtruth.a\b10111010a\b10110000a\b10110011现在我们在集合{0,1}上定义一个自然的偏序, 即0<1. 那么, 左边和中间的真值表是说析取ab与合取ab分别是相对于该偏序的join和meet. 当然, 我们注意到这种情况下join和meet也可以表达为ab=max{a,b}ab=min{a,b}.

运用代数的术语, 我们可以说{0,1},,,,0是一个代数, 其中{0,1},,,0是一个带有最小元素0的格, 并且这个代数还有一个额外的运算, 其满足如果abab=1, 不然的话ab=0. 藉由最小元素0, 我们定义¬a=a0. 显然, ¬a=1当且仅当a=0. 并且, 很容易看出来对于a{0,1}我们有¬¬a=a. 通过泛化, 我们按照以下方式引入了古典逻辑的代数.

定义6.5. (布尔代数) 一个代数A=A,,,,0是一个布尔代数当且仅当
  1. A,,是一个格且其最小元素是0;
  2. 剩余律成立, 即对于所有的a,b,cA, abc当且仅当abc;
  3. 双重否定律成立, 即对于每个aA, ¬¬a=a, 其中¬a被定义为a0.

由以上真值表所确定的代数{0,1},,,,0是一个布尔代数. 为了确认这点, 只需表明剩余律成立. 实际上, 我们可以看到1bc当且仅当bc当且仅当1bc, 也就是当a=1时的剩余律成立, 另外a=00bc0bc总是都成立的. 这个由01构成的布尔代数被称为二值的, 记作2.

剩余律是说对于每个b,c而言集合U={x|xbc}中的最大元素总是存在且就等于bc. 实际上, 根据剩余律, 对于每个x而言, 如果xbc, 那么xbc. 这意味着bcU的一个上界. 另一方面, 鉴于bcbc, 我们有(bc)bc, 通过使用剩余律的另一方向. 这意味着bcU, 故bc=max{xA|xbc}. 现在考虑b=c这一特定情形. 鉴于xbb总是成立, 具有形式bb必然都是A的最大元素, 记作1. 这就推出了每个布尔代数既有最小元素0也有最大元素1. 布尔代数的一个病态例子是满足0=1的布尔代数. 这种布尔代数由单独一个元素0构成, 其被称为退化布尔代数. 之后的文本里我们提及布尔代数时, 除非另有说明, 不然我们总指的是一个非退化布尔代数. 以下的图片展示一个8-值布尔代数.

我们可以证明以下的引理6.2对于布尔代数成立, 但不需要使用双重否定律. 因此, 实际上这些结果对于Heyting代数也成立, 而Heyting代数的定义不过就是从布尔代数的定义里去掉双重否定律. Heyting代数将会在第7章详细讨论.

引理6.2. 下列陈述对于任何布尔代数之中的所有x,y,z成立.
  1. x(xy)y总是成立, 因而x¬x=0作为其一特殊情形而成立.
  2. xy可以推出zxzyyzxz. 因此, xy可以推出¬y¬x.
  3. 分配律x(yz)=(xy)(xz)成立.
证明. 这里我们只会给出对于第三条陈述的证明. 根据评注6.4, 在任意的格中x(yz)都是xyxz的一个上界. 因此, 只需说明x(yz)是这些上界之中最小的那个. 设uxyxz的任意一个上界, 那么xyuxzu. 根据剩余律, yxuzxu成立. 因此, yzxu. 再次以相反方向使用剩余律, 我们有x(yz)u. 于是, 我们就得到了想要的结果.
译者注记. 补充一下对于前两条陈述的证明.
  1. x(xy)y根据剩余律等价于xyxy, 而这不过就是自反性.
  2. 根据1, z(zx)x. 又因为xy和传递性, z(zx)y, 于是根据剩余律可知zxzy. 根据1, y(yz)z, 又因为xy和练习6.1, x(yz)y(yz), 于是x(yz)z. 应用剩余律, 就得到yzxz.
引理6.3. 下列陈述在每个布尔代数之中都成立.
  1. 对于所有的x,y, xy=¬(¬x¬y)成立.
  2. 对于所有的x,y, xy=¬xy成立. 特别地, 对于每个x, x¬x=1.
证明. 我们来证明第二条陈述. 很容易看出来xy¬xy的一个上界. 设w¬xy的任何一个上界. 根据¬xw, 可以推出¬w¬¬x=x, 因而不等式xy¬wy¬ww成立, 这些是根据引理6.2的第二条得到的. 另一方面, 鉴于¬w(¬ww)¬ww=0, 我们有¬ww¬w0=¬¬w=w. 将两个不等式结合在一起, 我们就得到了xyw. 换言之, xy¬xy的最小上界, 故xy=¬xy.
译者注记. 这个证明中的¬w(¬ww)¬ww=0卡住了译者好一会儿. 不过, 实际上没那么困难. 根据引理6.1的第一条, ¬w(¬ww)w. 另外, ¬w(¬ww)根据的定义本来就有¬w(¬ww)¬w. 于是, ¬w(¬ww)¬ww的一个下界, 那么¬w(¬ww)¬ww.
译者注记. 让我们来证明引理6.3的第一条陈述. 首先我们想要证明¬(¬x¬y)xy的一个上界. 如何证明x¬(¬x¬y)呢? 根据¬的定义我们将其改写为等价的x(¬x¬y)0. 根据剩余律, 其等价于x(¬x¬y)0. 根据引理6.2的第一条陈述里的x¬x=0, 这个不等式的左边就等于0, 因而总是成立. y¬(¬x¬y)可以按照类似的方式进行证明.
现在设uxy的任意一个上界, 我们想要证明¬(¬x¬y)u. 根据引理6.2的第二条陈述和双重否定律, 这等价于证明¬u¬x¬y. 这个实际上可由uxy的上界这一事实推得. 因为xu, 所以¬u¬x, 同理¬u¬y. 换言之, ¬u¬x¬y的一个下界, 故¬u¬x¬y. Q.E.D.

我们注意到引理6.3中出现的等式x¬x=1表达了排中律 (见第1.1节) 的某种代数类比. 另外, 以上的引理6.3是说可以基于¬定义, 也就是说在任何布尔代数之中都是冗余的. 另一方面, 为了使得布尔代数和之后章节将要引入的其他代数之间的比较更加清晰, 我们保留了将布尔代数定义为具有形式A,,,,0的五元组.

练习6.7. 表明以下陈述在每个布尔代数之中都成立.
  1. 对于任意的x,y, (xy)(yx)=1.
  2. 对于任意的x,y, (xy)xx.
解答.
  1. (xy)(yx)=(¬xy)(¬yx)=(x¬x)(y¬y)=11=1
  2. (xy)x=(¬xy)x=¬(¬xy)x=(x¬y)x=x换言之, 在布尔代数之中实际上可以将加强为=.

第6.2节 子代数, 同态和直积

为了进一步发展我们的代数研究, 我们要引入三个基本的代数概念. 鉴于这些概念可以对于多种代数进行定义, 我们要在一般的上下文中进行定义. 代数的一个语言L是一个运算符号的集合, 每个运算符号都有一个固定的元数, 元数是一个非负整数. 具有元数0的运算符号被称为常量符号. 以下我们假定L是一个有限有序集f1,f2,,fm, 遵循约定n1n2nm, 其中nifi的元数. 一个类型为L的代数A是一个具有形式(A,f1A,f2A,,fmA)的结构, 其中A是一个非空集合, 被称为A宇宙或者潜在集合, 而fiAA上的一个ni元运算, 其中1im. 每个fiA都应该理解为L的运算符号fiA中的解释. 出于简洁性的考量, 有时我们会省略fiA的角标A, 如果不至于引起误解.

举个例子, 前一节我们取了一个语言,,,0来描述所有布尔代数的类, 其元数分别为2,2,2,0. 以下的三个定义里, 我们将假定代数AB具有相同的类型.

定义6.6. (子代数) 一个代数BA的一个子代数, 如果BA的一个子集, 而对于每个i而言fiBfiAB上的限制. 也就是说, 对于所有的ib1,,bniB而言, fiB(b1,,bni)=fiA(b1,,bni).
例子6.7.A=A,,为一个格, 而BA的一个非空子集. 那么, B=B,,A的一个子代数 (一般称为格A的一个子格) 当且仅当对于任意的b1,b2B, b1b2=b1b2b1b2=b1b2, 其等价于对于任意的b1,b2B, b1b2b1b2都属于B. 让我们考虑练习6.4
定义6.7. (同态和同态像) 一个映射h:AB是一个从AB同态, 如果h(fiA(a1,,ani))=fiB(h(a1),,h(ani))对于所有的ia1,,aniA成立. 当h是一个单射时, h被称为是一个(从AB的)嵌入(embedding). 在这种情形下, A被称为是由h嵌入B之中. 如果h是满射的, 即每个元素bB都可以表达为对于某个aAh(a), 那么B被称为是A的一个同态像 (由同态h). 当h是双射的, h被称为是一个同构A被称为是同构B (由同构h).
评注6.8.h是从一个格A到一个格B的一个同态, 那么h保序的, 即对于所有的a,aA, aAa可以推出h(a)Bh(a), 其中AB分别是AB由其格运算导出的序关系. 这是因为如果aAa成立, 那么aAa=a, 因而有h(a)Bh(a)=h(aAa)=h(a). 这意味着h(a)Bh(a).
练习6.8.
定义6.8. (直积) 对于给定的代数AB, 定义直积A×B为一个代数A×B,f1A×B,,fmA×B, 其中A×B={(a,b)|aAbB}, 并且对于每个i, 令fiA×B((a1,b1),,(ani,bni))=(fiA(a1,,ani),fiB(b1,,bni))也就是说, fiA×B是逐分量定义的. 更一般地, 代数Aj (jJ) (J可能无限) 的直积被定义为这样一个代数A (记作jJAj), 其宇宙A是集合Aj (jJ) 的直积jJAj, 而fiA(a1,,ani)的第j分量fiA(a1,,ani)(j)是由fiAj(a1(j),,ani(j))给出的, 其中jJakA. 这里的ak(j)Aj的一个元素, 其为ak的第j分量.
例子6.9.
练习6.9.f是从AC的格同态, g是从BD的格同态. 定义从A×BC×D的映射hh(a,b)=(f(a),g(b)). 证明h是一个格同态.
解答.

在由所有布尔代数构成的类这一情形下, B是一个布尔代数A的一个子代数当且仅当BA的一个子集, 其包含0A且在,,下封闭. 显然每个非退化的布尔代数都有一个同构于二值布尔代数2的子代数. 当AB都是布尔代数时, 一个映射h:AB是一个从AB的同态当且仅当对于每个{,,}h(aAa)=h(a)Bh(a), 而且h(0A)=0B.

对于任意的布尔代数A, A的每个子代数也是一个布尔代数. 另外, 如果BA藉由某个同态h的一个同态像, 那么B也是一个布尔代数. 为了证明后者, 我们验证B满足布尔代数的三个条件. 对于第三个条件, 取任意元素aB. 然后, 对于某个元素aA而言a具有形式h(a). 那么, ¬¬a=¬¬h(a)=h(¬¬a)=h(a)=a, 鉴于A是一个布尔代数. 至于剩余律, 对于给定的a,b,cB, 取a,b,cA使得a=h(a), b=h(b), c=h(c), 因为BA的一个同态像. 首先设abc, 这等价于条件h(ab)h(c). 既然ba(ab)A之中成立, 不等式h(b)h(a)h(ab)h(a)h(c)成立, 鉴于h是保序的. 因此, bac. 反过来, 设bac. 然后, h(b)h(ac). 那么, 我们有h(a)h(b)h(a)h(ac)h(c), 鉴于a(ac)cA中成立. 因此, abc成立.

译者注记. 这个证明里有一个gap, 也就是没有说明布尔代数的第一个条件成立. 换言之, 我们要证明带最小元0的格结构A,,,0保持同态像. 之所以这个是重要的, 是因为证明中的序关系及其性质依赖于这个事实. 然而, 从泛代数的角度来看, 这是平凡的, 因为带最小元的格结构只需要通过等式进行定义, 而不是像布尔代数的第二个条件那样还依赖于等式之间的关系. (所以说, 对于布尔代数的第三个条件的验证也是平凡的.) 其中比较有趣的是最小元0也有一个等式刻画, 即其为运算的单位元. 另外说一句, 之所以格同态h保持序关系, 是因为这个序关系也是用等式定义的, 而泛代数的同态皆保持等式.

如果B是布尔代数Aj (jJ) 的一个直积jJAj, 那么B也是一个布尔代数, 这是因为B的每个运算都是逐分量定义的. {译注: 并且, 布尔代数的定义也只是用到等式和等式之间的关系.} 为了总结, 我们按照以下方式陈述这些结果. 这个主题将会在第8.2节里以更泛化的方式进行讨论.

定理6.4. 由所有布尔代数构成的类在子代数, 同态像, 直积下封闭.

第6.3节 布尔代数的表示

在例子6.5和练习6.6中, 我们表明了任意一个集合C的幂集P(C)相对于并和交构成了一个分配格P(C),,, 其中是最小元. 对于C的每个子集X, 令XX的补. 对于X,YC, 定义XY=XY. 那么, P(C)=P(C),,,,形成了一个布尔代数. 具有这种形式的布尔代数被称为幂集布尔代数.

练习6.10.
练习6.11.

有限布尔代数

C是任意一个具有m个元素的有限集合, 例如{ak|1km}. {译注: 这默认了当ij时, aiaj.} 那么, 幂集布尔代数P(C)是一个2m-值布尔代数. 如果D是另一个具有m个元素的集合, 那么显然P(D)同构于P(C). 我们注意到

无限布尔代数

第6.4节 古典逻辑的代数完备性

第1.1节所讨论的二值语义的每个赋值都确定了一种对于公式的解释. 赋值和有效性的概念可以自然地扩展至任意的布尔代数. 令A是一个布尔代数. 一个A上的赋值h是从所有命题变量的集合到A的任意映射. 赋值h可以自然地延拓成一个从所有公式的集合到集合A的映射, 通过定义h(αβ)=h(α)Ah(β), h(αβ)=h(α)Ah(β), h(αβ)=h(α)Ah(β), 以及h(0)=0A. (藉由符号滥用, 对于这个延拓的映射我们也使用符号h. 以上的符号, , , 0代表逻辑联结词和常量, 而A, A, A, 0A则代表相应的A的代数运算以及A的最小元素, 以避免歧义.) 一个公式φ在某个布尔代数A中是有效的, 如果其总是取值1A, 即对于每个A上的赋值h总有h(φ)=1A. 公式有效性的概念也可以自然地扩展至相继式的有效性. 显然, 第1章所讨论的重言式不过就是在二值布尔代数2中有效的公式和相继式.

定理6.6. (代数完备性) 对于任意给定的非退化布尔代数B, 以下三个条件互相等价. 对于每个公式φ,
  1. φ在古典逻辑中是可证明的;
  2. φ在所有布尔代数之中都是有效的;
  3. φ在布尔代数B中是有效的.
证明.

第6.5节 多值链和剩余律

从代数角度而言, 询问如何将我们的二值语义 (即基于二值布尔代数的代数语义) 推广为多值语义是自然的. 本节我们将会考虑将二值语义扩展至多值语义的两种可能方式, 其将会取决于我们维持何种形式的剩余律. 我们将会引入两种类型的多值链, 即定义在全序集上的带有剩余律的代数. 它们分别是Gödel链和Łukasiewicz链. 之前章节引入的代数方法也可应用于这两种代数, 而两类不同的多值逻辑的基本结果也将呈现. 之后的章节我们将会进一步将这种想法推广至定义在格上的剩余代数, 并最终将我们引向Heyting代数和剩余格的概念.

作为对于二值语义的一种推广, 我们考虑如何为和古典逻辑相同的语言引入多值语义. 我们将我们这里的注意力限制于真值集合A为全序集的情况 (但可能无限), 即一个链, 并且带有最小元素0和最大元素1. 例如, 如果是三值语义, 我们可以取A{0,1/2,1}. 在这种情形下, 1/2会被视为halfway truth, 如果我们将真值理解为degree of truth. 因为我们假定了A为全序集, 那么abab分别可以表达为max{a,b}min{a,b}. 因此, 主要的问题在于如何在这个集合上定义implication . 一种想法不过就是保持合取与implication之间的剩余律. {译注: 虽然这里的用辞是conjunction和implication, 但是实际上它们指的是代数运算而不是逻辑联结词, 只不过一般其会使用相同的符号罢了.}

首先设满足剩余律, 那么的定义必然要满足对于给定的a,bA, 对于所有的dA都有dab当且仅当dab. 这等价于说对于所有的dA都有min{d,a}b当且仅当dab. 若是的确如此 {译注: 指剩余律成立}, 我们可以表明如果ab就有ab=1, 否则的话ab=b. 这里我们注意到如果ab不成立, 那么a>b成立, 因为是全序的. 现在, 如果ab, 那么min{d,a}b对于任意的d总是成立, 因而dab必然对于任意的d成立. 这意味着ab=1. 接着, 如果a>b, 那么min{b,a}=b, 而对于所有满足d>bd都有min{d,a}>b. 因此, ab必然等于b. {译注: 这里的讨论和布尔代数定义下面的讨论是如出一辙的.} 反过来, 设运算满足 (1) 当ab时有ab=1 (2) 否则的话, ab=b. 那么, 我们可以表明剩余律成立. 这是因为, 如果ab, 那么一边不等式min{d,a}ab对于任意的d总是成立, 另一边不等式d1=ab也对于任意的d总是成立. 当a>b时, 根据我们的假设有min{d,a}b当且仅当db当且仅当dab. 最终, 我们也就是证明了以下结论.

译者注记. 这是有点离题的译注. 根据原文, a<b被定义为(ab)¬(ba). 根据这个定义, 可以在直觉主义逻辑下证明¬(ab)b<a是等价的, 无需诉诸排中律.
引理6.7.A,,是一个链并且其具有最大元素1, 那么之间的剩余律成立当且仅当对于所有的a,bA, 我们有abab=1而其他情况下ab=b.
译者注记. 当且仅当的后半部分条件唯一地确定了一个运算.

Gödel链和Gödel逻辑

引理6.7暗示了以下定义. 现在设A是任意的链且具有最小元素0和最大元素1. 按照以下方式定义A上的三个运算, , :

那么, 代数A=A,,,,0被称为一个Gödel链. {原注: 这些链在Gödel (1932) 中进行了讨论.} 对于n>0, 当A恰有n+1个元素时, A被称为一个(n+1)-值Gödel链. 很容易看出来, 每个(n+1)-值Gödel链是同构的. 对于(n+1)-值Gödel链的标准呈现是对于A取集合Gn+1={0,1/n,2/n,,(n1)/n,1}. 另一方面, 无限的Gödel链不总是同构的, 因为可以存在具有任意基数的Gödel链.

A是任意的Gödel链. 我们可以按照和布尔代数相同的方式定义A上的赋值. 我们称一个公式αA中是有效的当且仅当对于A上的每个赋值f都有f(α)=1. A中所有有效公式的集合记作L(A). 如果对于某个数字m, A同构于Gm, 那么集合L(A)被称为m-值Gödel逻辑, 当A无限时则称其为一个无限Gödel逻辑 (其由链A确定). 显然L(G2)等于经典逻辑Cl. 这些Gödel逻辑实际上在第5.4节的意义下是超直觉主义逻辑.

练习6.13.
引理6.8. 如果BA的一个子代数, 那么L(A)L(B).
证明. 设一个公式φA中是有效的. 令fB上的任意赋值.

Łukasiewicz链

J. Łukasiewicz在他的论文 (Łukasiewicz, 1920) 中引入了一种链上的多值语义, 其和前一小节的并不相同. 他先引入了三值语义, 之后这被扩展为多值语义. 这一次, 三值情形里01之间的第三个值1/2被理解为了undeterminded或者说indeterminate.

第7章 代数逻辑的基本

第7.1节 Heyting代数

定义7.1. (Heyting代数) 一个代数A=A,,,,0是一个Heyting代数当且仅当
  1. A,,是一个具有最小元0的格.
  2. 剩余律成立, 即对于所有的a,b,cA, abc当且仅当abc.

每个Heyting代数也(一定)有最大元素1, 并且对于每个元素a都有1等于aa. 另外, ¬a被定义为a0. 显然, 每个布尔代数都是一个Heyting代数.

第7.2节 Lindenbaum-Tarski代数

第7.3节 局部有限代数

第7.4节 有限可嵌入性质和有限模型性质

第7.5节 Heyting代数的canonical扩张

第8章 Logics and Varieties

第8.1节 超直觉主义逻辑的格结构

第8.2节 由所有Heyting代数构成的variety HA

第9章 剩余结构 (Residuated Structures)

本章我们将会给出对于剩余结构的简短引论, 其是亚结构逻辑的代数结构. 布尔代数和Heyting代数被定义为是带有二元运算的格结构, 其满足之间的剩余律, 即abc当且仅当abc对于任意的a,b,c成立. 从另一方面来说, 第6章引入的Łukasiewicz推出并不总是满足此律. 但是, 其仍然满足融合运算之间的剩余律.

本章我们将会讨论一般形式的剩余律成立的代数结构, 并且将注意力主要集中于剩余格. 这个概念是从代数角度理解亚结构逻辑的关键所在.

第9.1节 剩余格和FL-代数

第10章 模态代数

对于模态逻辑的语义研究已经藉由使用Kripke语义而发展得相当成功.

第10.1节 模态代数