本节对应原书 PDF 第 326–330 页。定义、定理、公式、例题及其原解答逐字取自原书;解释性文字为 AI 通俗化改写;标有「解读」的引用块为 AI 补充的额外直觉。
上一节把运算本身讲清楚了, 本节把「集合 + 运算」打包成一个整体来研究, 这就是代数系统。围绕它依次讨论四件事: 怎样定义代数系统、怎样对代数系统分类、怎样从已有系统得到子系统与积系统、以及怎样比较两个系统之间的关系(同态与同构)。
14.2.1 代数系统的定义与实例
定义 14.7 非空集合 S 和 S 上 k 个一元或二元运算 f_1,f_2,\cdots,f_k 组成的系统称为一个代数系统, 简称代数, 记作 \langle S,f_1,f_2,\cdots,f_k \rangle.
注意在写出一个代数系统时, 经常将二元运算排在一元运算的前面.
例 14.9 (1) \langle \mathbf{N},+ \rangle,\langle \mathbf{Z},+,\cdot \rangle,\langle \mathbf{R},+,\cdot \rangle 是代数系统, + 和 \cdot 分别表示普通加法和乘法.
(2) \langle \mathbf{M}_n(\mathbf{R}),+,\cdot \rangle 是代数系统, + 和 \cdot 分别表示 n 阶(n\geqslant 2)实矩阵的加法和乘法.
(3) \langle Z_n,\oplus,\otimes \rangle 是代数系统, Z_n=\{0,1,\cdots,n-1\}, \oplus 和 \otimes 分别表示模 n 的加法和乘法.
(4) \langle P(S),\cup,\cap,\sim \rangle 也是代数系统, \cup 和 \cap 分别为集合的并和交, 以 S 为全集, \sim 为集合的绝对补.
解读:定义 14.7 里「非空集合」这个条件不能省。载体为空集时, 空集上虽然可以形式地定义运算, 但那样得到的系统讨论起来没有意义, 所以约定载体非空。此外定义只要求 S 上「k 个」运算, 并没有要求这些运算满足什么算律——算律是下一层的信息, 到 14.2.2 分类时才会用到。
对于代数系统 V=\langle S,f_1,f_2,\cdots,f_k \rangle, 其中的集合 S 称作载体, S 和 f_1,f_2,\cdots,f_k 都是 V 的成分. 对于某些代数系统, 具有某种特异元素(例如关于二元运算的单位元)也作为系统的性质. 为了强调这一点, 可以将这个特异元素作为系统的成分列出来. 例如 \langle A,\circ,e \rangle 就是一个抽象的代数系统, 其中 e 是 \circ 运算的单位元, 这时也称 e 是代数常数. 为了定义抽象的代数系统, 除了列出它的成分之外, 还需要用公理规定系统的性质, 如二元运算满足某条算律, 运算具有某种特异元素等. 在上述代数系统 \langle A,\circ,e \rangle 中就可以规定 \circ 运算满足结合律. 显然代数系统 \langle \mathbf{N},+,0 \rangle 和 \langle A^A,\circ,I_A \rangle 都是这个抽象代数系统的具体实例. 在不发生混淆的情况下, 也可以用载体直接标记代数系统, 如 \mathbf{Q}, Z_n 等.
解读:代数常数之所以要单独列进成分里, 是因为它会被后续定义(如子代数、同态)当作「必须保持的东西」。写成 \langle \mathbf{Z},+,0 \rangle 和写成 \langle \mathbf{Z},+ \rangle 是两个不同的代数系统, 前者多带了一个必须被继承的常数 0。
14.2.2 代数系统的分类
为了研究代数系统, 需要对它们进行分类. 按照代数系统的成分, 首先将它们分成同类型的代数系统. 如果进一步细分, 考虑系统的性质, 可以分成同种的代数系统.
定义 14.8 (1) 如果两个代数系统中运算的个数相同, 对应运算的元数相同, 且代数常数的个数也相同, 则称它们是同类型的代数系统.
(2) 如果两个同类型的代数系统对应的运算所规定的运算性质也相同, 则称为同种的代数系统.
解读:两层分类的差别在于「看成分」还是「看性质」。同类型只看成分(几个运算、几元运算、几个常数), 不看这些运算满足什么算律; 同种则必须在同类型的基础上再要求算律逐条对应。所以同种一定是同类型, 反之不成立。
例如代数系统 V_1=\langle \mathbf{R},+,\cdot,0,1 \rangle, + 和 \cdot 分别为普通加法与乘法; V_2=\langle \mathbf{M}_n(\mathbf{R}),+,\cdot,\boldsymbol{\theta},\boldsymbol{E} \rangle, 其中 + 和 \cdot 分别为矩阵加法与乘法, \boldsymbol{\theta} 为 n 阶全 0 矩阵, \boldsymbol{E} 为 n 阶单位矩阵; V_3=\langle P(B),\cup,\cap,\varnothing,B \rangle, 其中 P(B) 为幂集. 表 14.11 列出了这些代数系统的部分性质. 显然 V_1,V_2,V_3 是同类型的代数系统, 它们都含有 2 个二元运算, 2 个代数常数. 如果在定义抽象的代数系统时规定 3 条公理: 第一个二元运算具有交换律和结合律, 第二个二元运算具有结合律, 第二个二元运算对第一个二元运算具有分配律, 那么这 3 个代数系统都是同种的代数系统. 如果除此之外, 系统还规定第一个二元运算具有单位元, 且每个元素都有逆元, 那么 V_1 与 V_2 是同种的代数系统, 它们与 V_3 不再是同种的代数系统了.
表 14.11
| V_1 | V_2 | V_3 |
|---|---|---|
| + 可交换、可结合 | + 可交换、可结合 | \cup 可交换、可结合 |
| \cdot 可交换、可结合 | \cdot 不可交换、可结合 | \cap 可交换、可结合 |
| + 满足消去律 | + 满足消去律 | \cup 满足消去律 |
| \cdot 满足消去律 | \cdot 不满足消去律 | \cap 不满足消去律 |
| \cdot 对 + 可分配 | \cdot 对 + 可分配 | \cap 对 \cup 可分配 |
| + 对 \cdot 不可分配 | + 对 \cdot 不可分配 | \cup 对 \cap 可分配 |
| + 与 \cdot 没有吸收律 | + 与 \cdot 没有吸收律 | \cup 与 \cap 满足吸收律 |
| + 具有单位元 0 | + 具有单位元 \boldsymbol{\theta} | \cup 具有单位元 \varnothing |
| \cdot 具有单位元 1 | \cdot 具有单位元 \boldsymbol{E} | |
| 对于 +, 每个元素都可逆 | 对于 +, 每个元素都可逆 | 对于 \cup 不一定都可逆 |
解读:表 14.11 里 V_1 与 V_2 唯一的差别是矩阵乘法不可交换、不满足消去律。正是这一点决定了后文的走向:把「可交换」补上, 抽象出来就是域(如 \mathbf{R}); 只保留加法的良好性质, 抽象出来就是环(如 \mathbf{M}_n(\mathbf{R}))。
人的认识过程一般是从对具体事物的认识出发, 通过概括归纳这些具体事物的共同特征抽象出一类新的事物. 对代数系统的认识也是如此, 先学习整数关于加法与乘法构成的系统 \langle \mathbf{Z},+,\cdot \rangle, 然后将这个系统扩大到有理数和实数. 但这些运算对象都是数. 到了线性代数课程, 参与运算的元素不再是数, 而是矩阵. 正如表 14.11 所示, 矩阵运算与数的运算具有很多共同的性质. 为了概括这一类代数系统, 人们引入了抽象代数系统——环的概念. 类似地, 在逻辑代数与集合代数的研究中, 又抽象出具有吸收律、德摩根律等运算性质的代数系统——布尔代数. 这就是抽象代数的研究方法: 通过规定代数系统的成分与公理, 定义一些抽象的代数系统, 然后分别研究这些代数系统的性质. 本章将在后面简要介绍半群、独异点、群、环、域、格、布尔代数等重要的抽象代数系统.
14.2.3 子代数系统与积代数系统
代数系统中的一个重要问题是研究它的子系统, 我们关心的是: 怎样构成一个子系统? 子系统是否能够保持原系统的性质? 下面先给出子代数系统的定义.
定义 14.9 设 V=\langle S,f_1,f_2,\cdots,f_k \rangle 是代数系统, B 是 S 的非空子集, 如果 B 对 f_1,f_2,\cdots,f_k 都是封闭的, 且 B 和 S 含有相同的代数常数, 则称 \langle B,f_1,f_2,\cdots,f_k \rangle 是 V 的子代数系统, 简称子代数. 有时将子代数系统简记为 B. 如果 B=S, 则称 B 是 V 的平凡子代数; 如果 B\subset S, 则称子代数 B 为 V 的真子代数.
例如, \mathbf{N} 是 \langle \mathbf{Z},+ \rangle 的子代数, \mathbf{N} 也是 \langle \mathbf{Z},+,0 \rangle 的子代数. \mathbf{N}-\{0\} 是 \langle \mathbf{Z},+ \rangle 的子代数, 但不是 \langle \mathbf{Z},+,0 \rangle 的子代数, 因为代数系统 \langle \mathbf{Z},+,0 \rangle 中的代数常数 0 不在 \mathbf{N}-\{0\} 中.
解读:\mathbf{N}-\{0\} 的例子最能说明「相同代数常数」这条要求的分量:\mathbf{N}-\{0\} 对加法封闭, 单看封闭性完全合格, 但因为丢掉了常数 0, 它就不再是 \langle \mathbf{Z},+,0 \rangle 的子代数, 而只是 \langle \mathbf{Z},+ \rangle 的子代数。
对任何代数系统 V, 它的子代数一定存在, 起码存在平凡子代数 V. 如果 V 的代数常数构成的集合 K 关于 V 中的所有运算封闭, 这时也称 K 为 V 的平凡子代数.
例 14.10 设 V=\langle \mathbf{Z},+,0 \rangle, 令 n\mathbf{Z}=\{nz \mid z\in \mathbf{Z}\},n 为给定的自然数, 则 n\mathbf{Z} 是 V 的子代数. 当 n=1 和 0 时, n\mathbf{Z} 等于 \mathbf{Z} 或等于 \{0\}, 是 V 的平凡的子代数, 对于其他的 n,n\mathbf{Z} 都是 V 的非平凡的真子代数. 例如 2\mathbf{Z}=\{0,\pm 2,\pm 4,\cdots\} 就是 V 的真子代数.
不难看出, 当原来代数系统的公理指的是二元运算的算律(如交换律、结合律、幂等律、分配律、吸收律等), 那么在它的子代数中也满足相同的算律, 因此子代数与原来的代数系统是同种的代数系统.
由两个同类型的代数系统可以构造积代数系统.
定义 14.10 设 V_1=\langle A,\circ \rangle 和 V_2=\langle B,* \rangle 是同类型的代数系统, \circ 和 * 为二元运算, 在集合 A\times B 上如下定义二元运算 \bullet, \forall\ \langle a_1,b_1 \rangle,\langle a_2,b_2 \rangle\in A\times B, 有
称 V=\langle A\times B,\bullet \rangle 为 V_1 与 V_2 的积代数, 记作 V_1\times V_2. 这时也称 V_1 和 V_2 为 V 的因子代数.
解读:积代数的运算规则是「逐分量各算各的」——第一个分量用 V_1 的 \circ, 第二个分量用 V_2 的 *。正因为两个分量互不干扰, 原来各自的算律才能被逐条继承过来。
考虑代数系统 V=\langle \mathbf{R},+ \rangle, 那么积代数 V\times V=\langle \mathbf{R}\times \mathbf{R},+ \rangle, 例如 \langle 1,3 \rangle+\langle -2,2 \rangle=\langle -1,5 \rangle.
类似地, 也可以对具有多个运算的代数系统 V_1 和 V_2 定义积代数. 积代数中的运算个数与 V_1 和 V_2 的运算个数一样多, 而每个运算的规则与定义 14.10 一样. 如 V_1=\langle \mathbf{Z},+,\cdot \rangle,V_2=\langle \mathbf{M}_2(\mathbf{R}),+,\cdot \rangle, 那么在积代数 V_1\times V_2 中有
还可以把积代数的概念扩充到多个同类型的代数系统, 限于篇幅, 不再赘述, 有兴趣的读者可以参考有关的书籍.
根据定义不难看出积代数与原来的代数系统是同类型的, 而且可以进一步证明积代数可以保持原来代数系统中的许多性质, 如交换律、结合律、幂等律、分配律和吸收律等. 例如, 代数系统 V_1 和 V_2 中对应的运算 \circ 和 * 是可交换的, 那么在 V_1\times V_2 中对应的运算 \bullet 也是可交换的. 但是有一条性质在积代数中不一定能够保持, 那就是消去律. 例如 V_1=\langle Z_2,\otimes_2 \rangle 与 V_2=\langle Z_3,\otimes_3 \rangle 是具有消去律的代数系统, 其中 \otimes_2 和 \otimes_3 分别表示模 2 和模 3 乘法. 容易看到在积代数中 \otimes 运算没有消去律, 例如 \langle 1,0 \rangle\otimes\langle 0,1 \rangle=\langle 1,0 \rangle\otimes\langle 0,2 \rangle, 但是 \langle 0,1 \rangle\neq\langle 0,2 \rangle.
解读:消去律是积代数唯一保不住的性质, 反例的结构很典型:\langle 1,0 \rangle 在第一个分量上是 Z_2 的零元, 于是把它从左边乘上去会把两个元素的第一分量都压成 0, 掩盖了它们在第二分量上的差别。零元一旦在某个分量上出现, 消去律就失效了。
除了保持算律以外, 积代数也可以保持特异元素. 如果 e_1 和 e_2 分别为因子代数 V_1 与 V_2 中对应运算的单位元, 可以证明 \langle e_1,e_2 \rangle 也是积代数中关于对应运算的单位元. 对于零元也有同样的性质. 类似地, 对于 V_1 和 V_2 中可逆的元素 a 和 b,\langle a^{-1},b^{-1} \rangle 在积代数 V_1\times V_2 中是 \langle a,b \rangle 的逆元.
14.2.4 代数系统的同态与同构
同态映射是研究代数系统之间关系的重要工具.
定义 14.11 设 V_1=\langle A,\circ \rangle 和 V_2=\langle B,* \rangle 是同类型的代数系统, f: V_1\to V_2, 且 \forall\ x,y\in A 有
则称 f 是 V_1 到 V_2 的同态映射, 简称同态. 同态映射如果是单射, 则称为单同态; 如果是满射, 则称为满同态, 这时称 V_2 是 V_1 的同态像, 记作 V_1\sim V_2; 如果是双射, 则称为同构, 也称代数系统 V_1 同构于 V_2, 记作 V_1\cong V_2. 对于代数系统 V, 它到自身的同态称为自同态.
类似地可以定义单自同态、满自同态和自同构.
同态映射的概念可以用图 14.1 来说明. 定义 14.11 中等式的左边是 x 与 y 先运算, 得到 x\circ y, 然后将运算结果 x\circ y 映到 V_2 中的 f(x\circ y). 等式右边是先将 x 与 y 映到 f(x) 与 f(y), 然后将映射结果 f(x) 与 f(y) 在 V_2 中进行 * 运算. 对于同态映射来说, 无论 x 与 y 取什么值, 这两种方式都会得到相同的结果.

图 14.1
解读:定义 14.11 的等式 f(x\circ y)=f(x)*f(y) 读作「先运算再映射 = 先映射再运算」。左端用的是 V_1 的运算 \circ, 右端用的是 V_2 的运算 *, 两种走法结果相同, 这正是同态能够「搬运」性质的原因。
例 14.11 (1) 设 V=\langle \mathbf{Z},+ \rangle, \forall a\in \mathbf{Z}, 令 f_a: \mathbf{Z}\to \mathbf{Z}, f_a(x)=ax, 那么 f_a 是 V 的自同态. 因为 \forall x,y\in \mathbf{Z}, 有 f_a(x+y)=a(x+y)=ax+ay=f_a(x)+f_a(y). 当 a=0 时称 f_0 为零同态; 当 a=\pm 1 时, 称 f_a 为自同构; 除此之外其他的 f_a 都是单自同态.
(2) 设 V_1=\langle \mathbf{Q},+ \rangle,V_2=\langle \mathbf{Q}^+,\cdot \rangle, 其中 \mathbf{Q}^+=\mathbf{Q}-\{0\}, 令 f: \mathbf{Q}\to \mathbf{Q}^+, f(x)=e^x, 那么 f 是 V_1 到 V_2 的同态映射, 因为 \forall x,y\in \mathbf{Q} 有 f(x+y)=e^{x+y}=e^x\cdot e^y=f(x)\cdot f(y). 不难看出 f 是单同态.
解读:例 14.11(2) 是「加法变乘法」的经典例子:e^{x+y}=e^x\cdot e^y 把 \mathbf{Q} 上的加法同态地搬到了 \mathbf{Q}^+ 上的乘法。注意它只是单同态而非同构——e^x 取不到负值, 所以不是满射。
例 14.12 V=\langle \mathbf{R}^*,\cdot \rangle, 判断下面的哪些函数是 V 的自同态? 是否为单自同态、满自同态和自同构? 计算 V 的同态像.
(1) f(x)=|x| (2) f(x)=2x
(3) f(x)=x^2 (4) f(x)=1/x
(5) f(x)=-x (6) f(x)=x+1
解 (2),(5),(6)不是自同态.
(1)是自同态,但不是单自同态,也不是满自同态. 不是自同构. f(V)=\langle \mathbf{R}^+, \cdot \rangle.
(3)是自同态,但不是单自同态,也不是满自同态. 不是自同构. f(V)=\langle \mathbf{R}^+, \cdot \rangle.
(4)是自同态、单自同态、满自同态、自同构. f(V)=V.
定义 14.11 的同态概念可以推广到具有多个二元和一元运算的代数系统,有关的例子将在后面的代数系统中给出(见 14.3 节).
同态映射是讨论代数系统之间关系的有力工具. 存在同态映射的代数系统往往具有很多共同的性质. 例如 V_1 到 V_2 存在同态映射 f,那么 f 可以保持运算的可交换性,即如果 V_1 中的 \cdot 运算具有交换性,那么 V_2 中对应的 * 运算也具有交换性. 类似地,同态映射还保持运算的可结合以及幂等的性质. 此外,对于具有两个不同运算的代数系统,同态映射还保持分配和吸收的性质. 注意对于消去律可能有例外. 除了运算性质之外,同态映射 f 也能保持特异元素,如单位元、零元、可逆元素及其逆元. 用等式表示就是:
其中,e_1 和 e_2 分别表示 V_1 和 V_2 中一组对应运算的单位元,\theta_1 和 \theta_2 分别表示 V_1 和 V_2 中一组对应运算的零元,x^{-1} 是 x 在 V_1 中关于某个运算的逆元,f(x)^{-1} 则是 f(x) 在 V_2 中关于对应运算的逆元. 换句话说,如果 x 与 y 在 V_1 中关于某个运算是互逆的元素,那么 f(x) 与 f(y) 在 V_2 中关于对应的运算也是互逆的元素. 例如,在例 14.11(2) 中,有 f(0)=1, f(-x)=x^{-1} 等.
对于同构的代数系统 V_1 与 V_2,不但含有元素的多少是一样的,还可以证明它们具有完全相同的性质. 在抽象的意义上 V_1 与 V_2 是没有区别的,只是采用了不同的符号命名它们的元素和运算罢了. 因此,在抽象代数中认为彼此同构的代数系统就是同一个代数系统,比如说“4 元群有 2 个”,它的含义是“存在 2 个不同构的 4 元群”. 这里的群是一种重要的抽象代数系统,下一节将会加以介绍.
解读:同态保持算律, 但消去律是例外。原因是同态可能把不同的元素映成同一个元素(f 非单射时), 于是 V_1 中原本能被消去律分开的 y 与 z, 映到 V_2 后可能已经重合。这与积代数保不住消去律是同一类现象的两种表现。