范畴逻辑引论

第1章 代数理论

代数理论 (algebraic theory) 是对于结构的描述, 其完全基于操作 (operation) 和等式 (equation). 所有这样的代数概念都共有着一些相当深刻而广泛的性质, 从自由代数的存在性到Lawvere的对偶理论. 这些之中最基本的内容在本章呈现. 这里的发展也充当着函子语义(functorial semantics)的一般模式 (general scheme) 的第一个例子和模板, 之后的章节里也要用于其他逻辑概念.

第1.1节 句法和语义

我们从诸如群, 环, 格之类的代数结构的一般方法开始. 这些是由公理化 (axiomization) 所刻画的, 其只牵涉单一种类 (sort) 的变量和常量, 操作, 以及等式. 操作在每一处都有定义是重要的, 这排除了两个重要的例子: 域, 鉴于0的(乘)逆没有定义, 以及范畴, 鉴于复合只对特定的态射序对有定义.

让我们从相当基础的代数理论开始: 群的理论. 在一阶逻辑之中, 一个群可以被描述为一个集合G带有一个二元操作:G×GG, 其满足两条一阶公理:x,y,zG.(xy)z=x(yz)eG.xG.yG.(ex=xe=xxy=yx=e)更仔细地观察这些公理的逻辑形式, 我们会发现第二条公理 (其表达了单位元和逆元的存在性) 有点不尽如人意, 因为它牵涉嵌套的量词. 不仅这会使得解释复杂化, 而且其也并非真正必要, 鉴于一个群中的单位元和逆元是唯一确定的. 因此, 我们可以将它们添加到结构之中并重新表述如下. 单位元以一个特别 (distinguished) 的常量eG表示, 而逆则是一个幺元操作1:GG. 然后, 我们可以得到一个等价的表述, 其中所有的公理都可以被表达为(全称量化的)等式:(xy)z=x(yz)xe=xex=xxx1=ex1x=e全称量词xG, yG在陈述公理时不再必要, 因为我们可以将所有的变量解释为遍历G的每个元素 (因为我们限制于考虑完全定义操作). 在描述中显式提及特定的集合G也无真正的必要. 最后, 既然常量e可以被视为一个零元操作, 即一个函数e:1G, 对于群的概念的描述可以仅有操作和等式构成. 这将我们引向了以下对于代数理论的一般定义.

定义1.1.1. 一个代数理论的一个签名(signature)Σ由一个集合族{Σk}k构成. Σk的元素被称为k元操作(k-ary operation). 特别地, Σ0的元素被称为零元操作或者常量.
一个签名Σ项(term)是由以下规则归纳构造的表达式:
  1. 变量x,y,z,是项,
  2. 如果t1,,tk是项而fΣk是一个k元操作, 那么f(t1,,tk)是一个项.
定义1.1.2. (参见定义1.2.10). 一个代数理论𝕋=(Σ𝕋,A𝕋)由一个签名Σ𝕋和一个公理A𝕋给出, 其中公理是项之间的等式 (形式化地, 项的序对).

代数理论也被称为等式理论(equational theory). 我们并不假定集合Σk或者A𝕋有限, 但是单独的项和等式只牵涉有限多个变量.

例子1.1.3. 一个含幺交换环的理论是一个代数理论. 存在两个零元操作 (常量) 01, 一个幺元操作, 还有两个二元操作+. 等式为:(x+y)+z=x+(y+z)(xy)z=x(yz)x+0=xx1=x0+x=x1x=xx+(x)=0(x+y)z=xz+yz(x)+x=0z(x+y)=zx+zyx+y=y+xxy=yx
例子1.1.4. 既没有操作也没有等式的或者平凡理论𝕋0是一个集合的理论.
例子1.1.5. 只有一个常量而没有等式的理论是一个带点集合的理论, 参见例子A.4.11.
例子1.1.6. R是一个环. 存在一个左R模的理论. 其有一个常量0, 一个幺元操作, 一个二元操作+, 并且对于每个aR有一个操作a, 其被称为乘上a的标量乘法. 以下等式成立:(x+y)+z=x+(y+z)x+y=y+xx+0=x0+x=xx+(x)=0(x)+x=0对于每个a,bR, 我们也有等式a(x+y)=ax+ay,a(bx)=(ab)(x),(a+b)(x)=ax+bx乘上a的标量乘法通常记作ax而非ax. 如果我们将环R替换为一个域𝔽, 那么我们就得到了𝔽上的一个向量空间的代数理论 (尽管域的理论并非代数的!). {译注: 译者感觉向量空间的代数理论还需要另外的一条公理保证域的幺元和向量空间的元素的标量乘法仍然得到相同的这个向量空间元素.}
例子1.1.7. 在计算机科学之中, 归纳数据类型是代数理论的例子. 例如, 带有以整数标记的叶子的二叉树或许可以在某个编程语言中定义如下:
type tree = Leaf of int | Node of tree * tree
这对应于对于每个整数n都有一个常量Leafn且还有一个二元操作Node的代数理论. 实际上, 当计算机科学家定义像这样的一个数据类型时, 他们在心中有一个特定的理论模型, 称为自由(free)模型.
例子1.1.8. 一个显然的非例 (non-example) 是偏序集的理论,

第2章 命题逻辑

第3章 一阶逻辑

第4章 类型论

第5章 依赖类型论