头图

起因

写这个系列起源于自己学习编程语言时遇到的问题,研究编程语言不可避免要与数学打交道,自己大学只学过数学分析高等代数等数学系一年级课程,PLT (Programming Language Theroy) 需要的数学基础大致为:抽象代数(Abstract Algebra)拓扑(Topology)范畴(Category Theory) 等代数知识,在阅读相关 PL 书籍时,深感自己的无力。我又是一个 " 死磕 " 的人,万事都要问个为什么,遇到不懂之处模糊跳过总觉得 " 不舒服 ",于是乎,数学基础的补足是 " 迫在眉睫 "。有人可能会 " 杠精 " 一下:你说得这些我也不懂啊,代码照样写得好好地,不妨碍我升职加薪😊。关于程序员编程语言理论学习的重要性,我是这么理解得:编程语言发展这么多年,从大家熟悉的汇编,到 C 语言、C#、C++、JAVA、GO、Dart、Javascript、Python、Dart、Rust…(大家以为我在报菜名😆)几乎每过个几年,就会有一次编程语言的 " 大浪潮 "。如果你无法快速学习,可能就会被无情 " 内卷 " 到死。为了生存下去,掌握一套编程语言方法论至关重要:任何具体的编程语言知识都要内化到自己建立的抽象框架之内,我所找到的就是数学。这有点类似于编译器里中间语言的概念,数学是中间语言,PLT 是编译器前端,具体的编程语言就是我们需要理解的对象。OK,言归正传,让我们开始范畴论的学习之旅吧!

学习参考资源

国内关于范畴论的中文视频我只在 B 站上找到清华大学关于范畴论的讨论班,英文视频比较丰富,大家可以自行搜寻。这里主要说下参考书籍:

  • Abstract and concrete category:The Joy of Cats
  • Saunders Mac Lane - Categories for the Working Mathematician-Springer (2010)
  • (Sigma Series in Pure Mathematics) Horst Herrlich, George Strecker - Category Theory. 1-Helderman Verlag (2007)
  • Horst Herrlich, George Strecker - Category Theory. 1-Helderman Verlag (2007)
  • Emily Riehl - Category Theory in Context-Dover Publications (2017)
  • Category Theory for Programmers -- Bartosz Milewski (2019)

这些书籍里程序员好上手的是 Category Theory for Programmers 这本,里面所有概念都会用 Haskell、Scala、C++ 讲解。Emily Riehl 这本个人认为写得不错,不过数学概念很多,里面的例子都是群、环、域、线性空间、拓扑空间等,非数学系人士会很艰难。本系列可以看作是 The Joy of Cats 部分章节的读书笔记,只介绍范畴论的基础知识。

公理集合论

关于公理集合论的介绍,其实我很纠结,一方面是内容繁多,涉及数理逻辑证明,寥寥几句解释不清楚。另一方面范畴论研究的数学对象往往比集合大得多,为了避免悖论,大家会从 Russell Paradox 切入,引入 Class 的概念;或者使用 Grothendieck Universe 来允许我们在朴素集合论的框架内表达范畴论的一些基本概念,而不引入类的概念。为了叙述的连贯性考虑,这里简单介绍一些集合论的知识,读者不必担心,很好理解 😊。

集合

集合是一个数学对象,下面给出集合的构造方法:

  1. 特定性原理: 假设 A 是一个集合,P 是 A 满足的某个性质,则 \( {a \in A \mid P(a)} \) 是一个集合。
  2. 幂集: 假设 A 是一个集合,则 \( {A' \mid A' \subseteq A} \) 是一个集合,称为 A 的幂集。
  3. 其他集合的构造: 对于集合 A 和 B,我们能构造如下集合:

    • (a) 两个元素的集合:{A, B},表示集合包含元素 A 和 B 的集合。
    • (b) 有序对 (A, B),表示按照顺序排列的元素对,即元素 A 在前,元素 B 在后。
    • (c) 集合的交:\( A \cap B \),表示同时属于集合 A 和 B 的元素组成的集合。
    • (d) 集合的并:\( A \cup B \),表示属于集合 A 或者属于集合 B 的元素组成的集合。
    • (e) 集合的相对补(差):\( A \setminus B \) 或 \( A - B \),表示属于集合 A 但不属于集合 B 的元素组成的集合。
    • (f) 笛卡尔乘积:\( A \times B \),表示由所有形式为 \((a, b)\) 的有序对组成的集合,其中 \(a \in A\) 且 \(b \in B\)。

这些构造方法在集合论中是常见且基础的。很容易地,我们可以推广到针对 " 任意多个 " (指定一个指标函数 \(f:I\to \uplus_{i\in I} A_i\),I为指标集) 集合的相关构造,这里不再赘述。

一个小思考:
所有集合的集合符合集合的定义吗?

参考思路:一个集合的幂集总是大于该集合

类是一个数学对象,拓展了集合的概念,集合是一个特殊的类,不是集合的类称之为真类 (Proper Class),前面关于集合的构造描述都可以扩展到类。关于真类,下面是具体的例子:

  1. 全体集合: 可以定义全体集合,即所有集合的集合。通常表示为 \(\mathbf{V}\) 或 \(\mathbf{S}\)。

    $$\mathbf{V} = \{ x \mid x = x \}$$

    这个集合包含所有的数学对象,是一个真类。

  2. 所有 Ordinal 数的集合: 可以定义所有 Ordinal 数的集合。

    $$\mathbf{On} = \{ \alpha \mid \alpha \text{ 是一个 Ordinal 数} \}$$

* Ordinal 数

在 Zermelo-Fraenkel 集合论中,Ordinal 数是一种数学对象,用于表示集合的排列顺序。Ordinal 数的定义基于集合论的递归构造。

定义

  1. 零(0)是一个 Ordinal 数:

    • \(0\) 表示空集的排列顺序。
  2. 后继 Ordinal 数 \((\alpha + 1)\) 是一个 Ordinal 数:

    • 如果 \(\alpha\) 是一个 Ordinal 数,那么 \((\alpha + 1)\) 表示在 \(\alpha\) 的基础上添加一个元素的排列顺序。
  3. 极限 Ordinal 数是一个 Ordinal 数:

    • 如果 \(S\) 是一个非空的集合,对于每个 \(\beta \in S\),都有 \(\beta\) 是一个 Ordinal 数,那么 \(\sup(S)\)(即 \(S\) 的上确界)也是一个 Ordinal 数。

性质

  1. 整体性质:

    • 如果 \(\alpha\) 是一个 Ordinal 数,则 \(x \in \alpha\) 当且仅当 \(x\) 是排在 \(\alpha\) 之前的某个元素。
  2. 递归性质:

    • 对于任意 Ordinal 数 \(\alpha\),集合 \(\alpha\) 是由排在 \(\alpha\) 之前的所有 Ordinal 数构成的。
  3. 良序性质:

    • 集合 \(\alpha\) 被良序,即对于 \(\beta, \gamma \in \alpha\),要么 \(\beta \in \gamma\),要么 \(\beta = \gamma\),要么 \(\gamma \in \beta\)。

例子

  • \(0, 1, 2, 3, \ldots\) 是自然数构成的 Ordinal 数序列。
  • \(\omega\) 表示所有自然数的集合,是第一个无穷的 Ordinal 数。
  • \(\omega + 1, \omega + 2, \ldots\) 是无穷序列中的后继 Ordinal 数。
  • \(\omega \cdot 2, \omega \cdot 3, \ldots\) 表示 \(\omega\) 的倍数,是无穷序列中的极限 Ordinal 数。

Ordinal 数在集合论中用于描述集合的次序结构,特别是在处理序数性质和集合的良序性时起到关键作用。

范畴

范畴的定义

一个范畴是由四元组 \(\mathbf{A}= (O, \text{hom}, \text{id}, \circ)\) 组成的数学结构,其中:

  1. 类 (O) 它的成员被称为 \(\mathbf{A}\) - 对象(A-objects)。
  2. 对于每一对 \(\mathbf{A}\) - 对象 (A, B): 存在一个集合 \(\text{hom}(A, B)\),其成员被称为 \(\mathbf{A}\) - 态射(A-morphisms),通常用箭头表示,例如 \(f: A \to B\) 表示 f 是从 A 到 B 的态射。
  3. 每个\(\mathbf{A}\) - 对象A: 存在一个态射 \(\text{id}_A: A \to A\),称为 \(\mathbf{A}\) - 恒等态射。
  4. 一个与每一对 \(\mathbf{A}\) - 态射 \(f: A \to B\) 和 \(g: B \to C\) 相关的合成法则: 存在一个态射 \(g \circ f: A \to C\),称为 f 和 g 的复合,满足以下条件:

    • (a) 复合是结合的,即对于任意态射 \(f: A \to B, g: B \to C, h: C \to D\),等式 \(h \circ (g \circ f) = (h \circ g) \circ f\) 成立。
    • (b) 恒等态射作为复合的单位元,即对于任意态射 \(f: A \to B\),有 \(\text{id}_B \circ f = f\) 和 \(f \circ \text{id}_A = f\)。
    • (c) 任意两个态射集合 \(\text{hom}(A, B)\) 和 \(\text{hom}(C, D)\) 是两两不相交的。

为了表示的方便,范畴 A 中所有的对象用 Obj (\(\mathbf{A}\)) 表示,所有的态射用 Mor (\(\mathbf{A}\)) 表示,有时为了特指某个范畴的态射集,明确指出态射集的下标:\(hom_\mathbf{A}(A,B)\)。如果 Obj (\(\mathbf{A}\)) 是一个集合,Mor (\(\mathbf{A}\)) 也是一个集合,我们称范畴 \(\mathbf{A}\) 是小 (small) 的;如果只满足 Mor (\(\mathbf{A}\)) 是集合,那么这个范畴是局部小的 (local-small)。

范畴的例子

1. Category Set (集合范畴)

  • 对象类 \(O\): 所有集合的类。
  • 态射集合 \(hom(A, B)\): 所有从集合 \(A\) 到 \(B\) 的函数的集合。
  • 恒等态射 \(id_A\): 在集合 \(A\) 上的恒等函数。
  • 复合 \(\circ\): 常规的函数复合。

2. 结构化集合与结构保持映射的范畴

(a) Vec(向量空间范畴)

  • 对象类 \(O\): 所有实数向量空间。
  • 态射集合 \(hom(V, W)\): 所有线性变换从向量空间 \(V\) 到 \(W\)。
  • 恒等态射 \(id_V\): 向量空间 \(V\) 上的恒等线性变换。

(b) Grp(群范畴)

  • 对象类 \(O\): 所有群。
  • 态射集合 \(hom(G, H)\): 所有群同态从群 \(G\) 到 \(H\)。
  • 恒等态射 \(id_G\): 群 \(G\) 上的恒等群同态。

(c) Top(拓扑空间范畴)

  • 对象类 \(O\): 所有拓扑空间。
  • 态射集合 \(hom(X, Y)\): 所有连续函数从拓扑空间 \(X\) 到 \(Y\)。
  • 恒等态射 \(id_X\): 拓扑空间 \(X\) 上的恒等连续函数。

(d) Rel(关系范畴)

  • 对象类 \(O\): 所有二元关系 \( (X, \rho) \) ,其中 \(X\) 是一个集合,\(\rho\) 是 \(X\) 上的二元关系。
  • 态射 \(f: (X, \rho) \to (Y, \sigma)\): 关系保持映射,即 \(f: X \to Y\),使得对于任意 \(x, x' \in X\),若 \(x \rho x'\),则 \(f(x) \sigma f(x')\)。
  • 恒等态射 \(id_{(X, \rho)}\): 即集合 \(X\) 上的恒等关系保持映射。

(e) Σ-Seq (状态机范畴)

在Σ-Seq 范畴中,对象是所有(确定性、顺序)Σ-acceptors,其中Σ是输入符号的有限集。对象是四元组 \((Q, \delta, q_0, F)\),其中 \(Q\) 是状态的有限集, \(\delta: \Sigma \times Q \to Q\) 是状态转移映射, \(q_0 \in Q\) 是初始状态, \(F \subseteq Q\) 是终态的集合。

一个态射(称为模拟)\(f: (Q, \delta, q_0, F) \to (Q', \delta', q'_0, F')\) 是一个函数 \(f: Q \to Q'\),它保持以下条件:

  • (i) 状态转移关系:对于任意 \(\sigma \in \Sigma\) 和 \(q \in Q\),都有 \(\delta'(\sigma, f(q)) = f(\delta(\sigma, q))\)。
  • (ii) 初始状态:\(f(q_0) = q'_0\)。
  • (iii) 终态:\(f[F]\subseteq F'\)。

这样的模拟确保了在Σ-Seq 范畴中每个对象都有一个与之相关的态射,同时保持了复合法则。

3. 对象构造

在构造中,一旦对象被定义,往往就清楚了态射应该是什么。然而,并非总是如此。例如:

(a) Metric Spaces

  • \(\text{Met}\)(度量空间范畴): 所有度量空间为对象,态射为所有非扩张映射(即收缩映射)。
  • \(\text{Met}_u\)(度量空间范畴): 所有度量空间为对象,态射为所有一致连续映射。
  • \(\text{Met}_c\)(度量空间范畴): 所有度量空间为对象,态射为所有连续映射。

(b) Banach Spaces

  • \(\text{Ban}\)(巴拿赫空间范畴): 所有巴拿赫空间为对象,态射为所有线性收缩映射。
  • \(\text{Ban}_b\)(巴拿赫空间范畴): 所有巴拿赫空间为对象,态射为所有有界线性映射(即连续线性映射、一致连续线性映射)。

4. 不同结构的范畴

在下列范畴中,对象和态射不是结构化集合和保结构函数:

(a) Mat 范畴

  • Mat(矩阵范畴): 所有自然数为对象,而 \(\text{hom}(m, n)\) 是所有实数 \(m \times n\) 矩阵的集合,\(\text{id}_n\) 是单位对角线 \(n \times n\) 矩阵,矩阵的复合定义为 \(A \circ B = BA\),其中 \(BA\) 表示矩阵的通常乘法。

(b) Aut 范畴

  • Aut(自动机范畴): 所有(确定性、顺序、Moore)自动机为对象,对象是六元组 \((Q, \Sigma, Y, \delta, q_0, y)\),其中 \(Q\) 是状态的集合,\(\Sigma\) 和 \(Y\) 是输入和输出符号的集合,\(\delta: \Sigma \times Q \to Q\) 是过渡映射,\(q_0 \in Q\) 是初始状态, \(y: Q \to Y\) 是输出映射。从自动机 \((Q, \Sigma, Y, \delta, q_0, y)\) 到自动机 \((Q', \Sigma', Y', \delta', q'_0, y')\) 的态射是函数 \(f_Q: Q \to Q'\),\(f_\Sigma: \Sigma \to \Sigma'\) 和 \(f_Y : Y \to Y'\),满足以下条件:

    • (i)保持过渡:\(\delta'(f_\Sigma(\sigma), f_Q(q)) = f_Q(\delta(\sigma, q))\),
    • (ii)保持输出:\(f_Y(y(q)) = y'(f_Q(q))\),
    • (iii)保持初始状态:\(f_Q(q_0) = q'_0\)。

(c) 类作为范畴

  • Classes as Categories(类作为范畴): 每个类 \(X\) 给出一个范畴 \(C(X) = (O, \text{hom}, \text{id}, \circ)\),其中 \(O = X\),\(\text{hom}(x, y) = \emptyset\) 如果 \(x \neq y\),\(\text{hom}(x, y) = {x}\) 如果 \(x = y\),\(\text{id}_x = x\),且 \(x \circ x = x\)。\(C(\emptyset)\) 被称为空范畴,\(C({0})\) 被称为终结范畴。

(d) 预序类作为范畴

  • Preordered Classes as Categories(预序类作为范畴): 每个预序类,即每对 \((X, \leq)\),其中 \(X\) 是类,\(\leq\) 是 \(X\) 上的自反且传递的关系,给出一个范畴 \(C(X, \leq) = (O, \text{hom}, \text{id}, \circ)\),其中 \(O = X\),\(\text{hom}(x, y) = {(x, y)}\) 如果 \(x \leq y\),否则为 \(\emptyset\),\(\text{id}_x = (x, x)\),且 \((y, z) \circ (x, y) = (x, z)\)。

(e) 幺半群作为范畴

  • Monoids as Categories(幺半群作为范畴): 每个幺半群 \((M, \cdot, e)\),即每个具有单位 \(e\) 的半群 \((M, \cdot)\),给出一个范畴 \(C(M, \cdot, e) = (O, \text{hom}, \text{id}, \circ)\),其中 \(O = {M}\),\(\text{hom}(M, M) = M\),\(\text{id}_M = e\),且 \(y \circ x = y \cdot x\)。

(f) 乘积范畴

  • Product Category(乘积范畴): 对于任意两个范畴 \(A\) 和 \(B\),可以构建 \(A \times B\),或更一般地,对于有限多个范畴 \(C_1, C_2, \ldots, C_n\),可以构建 \(C_1 \times C_2 \times \ldots \times C_n\)。\(A \times B\) 的对象是所有集合对 \((A, B)\),从 \((A, B)\) 到 \((A', B')\) 的态射是所有形如 \((f, g)\) 的函数对,其中 \(f: A \to A'\) 且 \(g: B \to B'\)。恒等态射由 \((\text{id}_A, \text{id}_B)\) 给出,而复合由 \((f_2, g_2) \circ (f_1, g_1) = (f_2 \circ f_1, g_2 \circ g_1)\) 定义。

对偶原理

定义 :

对于任何范畴 \(A = (O, \text{hom}_A, \text{id}, \circ)\),其对偶(或反范畴)记作 \(A^{op} = (O, \text{hom}_{A^{op}}, \text{id}, \circ^{op})\),其中 \(\text{hom}_{A^{op}}(A, B) = \text{hom}_A(B, A)\),且 \(f \circ^{op} g = g \circ f\)。这意味着 \(A\) 和 \(A^{op}\) 有相同的对象,唯一的不同在于它们的态射的方向。

例子 :

  1. 如果 \(A = (X, \leq)\) 是一个预序类,被视为一个范畴,那么 \(A^{op} = (X, \geq)\)。
  2. 如果 \(A = (M, \cdot, e)\) 是一个幺半群,被视为一个范畴,那么 \(A^{op} = (M, \hat{\cdot}, e)\),其中 \(a \hat{\cdot} b = b \cdot a\)。

备注 :

对偶范畴的定义方式使得任何关于 \(A^{op}\) 中对象 \(X\) 的语句 \(S_{A^{op}}(X)\) 都可以转化为关于 \(A\) 中对象 \(X\) 的逻辑等价语句 \(S^{op}_A(X)\)。这种潜在性允许将有关范畴中对象和态射的每个性质 \(P\) 关联到一个关于对象和态射的对偶性质,具体解释如下:

考虑 \(A\) 中对象 \(X\) 的性质:\(P_A(X) \equiv\) 对于任何 \(A\) - 对象 \(A\),存在唯一的 \(A\) - 态射 \(f: A \to X\) (\(X\) 是一个终对象)。

步骤 1: 在 \(P_A(X)\) 中,用 \(A^{op}\) 替换所有 \(A\) 的出现,从而获得性质 \(P_{A^{op}}(X) \equiv\) 对于任何 \(A^{op}\) - 对象 \(A\),存在唯一的 \(A^{op}\) - 态射 \(f: A \to X\)。

步骤 2: 将 \(P_{A^{op}}(X)\) 转化为逻辑上等价的语句 \(P^{op}_A(X) \equiv\) 对于任何 \(A\) - 对象 \(A\),存在唯一的 \(A\) - 态射 \(f: X \to A\)。

可以观察到,粗略来说,\(P^{op}_A(X)\) 是通过颠倒 \(P_A(X)\) 中每个箭头的方向和复合态射的顺序得到的。在一般情况下,\(P^{op}_A(X)\) 与 \(P_A(X)\) 不等价。例如,上述性质 \(P_{\text{Set}}(X)\) 当且仅当 \(X\) 是一个单集时成立,而其对偶性质 \(P^{op}_{\text{Set}}(X)\) 当且仅当 \(X\) 是空集时成立。

以类似的方式,关于范畴中态射的任何性质都会导致关于范畴中态射的对偶性质,正如以下示例所演示的:

考虑 \(A\) 中态射 \(A \xrightarrow{f} B\) 的性质:\(Q_A(f) \equiv\) 在 \(A\) 中存在一个 \(A\) - 态射 \(B \xrightarrow{g} A\),使得 \(A \xrightarrow{f} B \xrightarrow{g} A = A \xrightarrow{\text{id}_A}A\)(即,\(g \circ f = \text{id}_A\))。

步骤 1: 在 \(Q_A(f)\) 中,用 \(A^{op}\) 替换所有 \(A\) 的出现,从而获得性质 \(Q_{A^{op}}(f) \equiv\) 在 \(A^{op}\) 中存在一个 \(A^{op}\) - 态射 \(B \xrightarrow{g} A\),使得 \(A \xrightarrow{f} B \xrightarrow{g} A = A \xrightarrow{\text{id}_A}A\)(即,\(g \circ f = \text{id}_A\))。

步骤 2: 将 \(Q_{A^{op}}(f)\) 转化为逻辑上等价的语句 \(Q^{op}_A(f) \equiv\) 在 \(A\) 中存在一个 \(A\) - 态射 \(A \xrightarrow{g} B\),使得 \(A \xrightarrow{g} B \xrightarrow{f} A = A \xrightarrow{\text{id}_A}A\)(即,\(f \circ g = \text{id}_A\))。

例如,上述性质 \(Q_{\text{Set}}(f)\) 当且仅当 \(f\) 是具有非空定义域的单射函数或是空集上的恒等映射时成立,而其对偶性质 \(Q^{op}_{\text{Set}}(f)\) 当且仅当 \(f\) 是满射函数时成立。涉及范畴中对象和态射 \(A, B, …, f, g, …\) 的更复杂的性质 \(P_A(A, B, …, f, g, …)\) 可以通过类似的方式进行对偶。如果 \(P = P_A(A, B, …, f, g, …)\) 对于所有 \(A\) - 对象 \(A, B, …\) 和所有 \(A\) - 态射 \(f, g, …\) 都成立,则我们说范畴 \(A\) 具有性质 \(P\) 或 \(P(A)\) 成立。

对偶原理指出:每当某一性质 \(P\) 对所有范畴都成立时,那么性质 \(P^{op}\) 也对所有范畴成立。这一(极为有用的)原理的证明立即可以从以下事实得出,对于所有范畴 A 和性质 P

  1. \((A^{op})^{op} = A\)
  2. 当且仅当 \(P^{op}(A)\) 成立时,\(P(A^{op})\) 成立。

例如,考虑性质 \(R = R_A(f)\) 的定义:如果 \(P_A(dom(f))\) 成立,则 \(Q_A(f)\) 成立,其中PQ是上文定义的性质。很容易证明对于所有范畴A,\(R(A)\) 都成立,因此根据对偶原理,\(R^{op}(A)\) 对于所有范畴A都成立,其中 \(R^{op}_A(f)\) 的定义为:如果 \(P^{op}_A(cod(f))\),则 \(Q^{op}_A(f)\) 成立。

由于这一原理,范畴论中的每个结果都有两种等价的表述(乍看起来可能非常不同)。然而,只需要证明其中一个,因为根据对偶原理,另一个是自动成立的。

通常,概念 \(P\) 的对偶概念 \(P^{op}\) 被表示为 "co-P"(例如,等值器和余等值器,良构和共良构,积和余积等等)。如果 \(P\) 等于 \(P^{op}\),则概念 \(P\) 被称为自对偶。一个例子是 " 恒等态射 " 的概念。

同构态射

定义 : 在一个范畴中,如果存在一个态射 \(f: A \to B\),使得存在一个态射 \(g: B \to A\),满足 \(g \circ f = \text{id}_A\) 和 \(f \circ g = \text{id}_B\),则称 \(f\) 是一个同构态射。这样的态射 \(g\) 被称为 \(f\) 的逆。

备注 : 从上述定义可以清楚地看出,"\(f\) 是同构态射 " 的陈述是自对偶的;即,\(f\) 在范畴 \(A\) 中是同构映射,当且仅当 \(f\) 在 \(A^{op}\) 中是同构态射。

命题 : 如果 \(f: A \to B\),\(g: B \to A\),\(h: B \to A\) 是范畴 \(A\) 中的态射,且 \(g \circ f = \text{id}_A\) 和 \(f \circ h = \text{id}_B\) 成立,则 \(g = h\)。

证明: \(h = \text{id}_A \circ h = (g \circ f) \circ h = g \circ (f \circ h) = g \circ \text{id}_B = g.\)

推论 : 如果 \(g_1\) 和 \(g_2\) 是同一个态射 \(f\) 的逆,则 \(g_1 = g_2\)。

备注 : 根据上述推论,我们可以称同构态射 \(f\) 的逆为 \(f^{-1}\)。

例子:

  1. 每个恒等态射 \(\text{id}_A\) 都是同构态射,且 \((\text{id}_A)^{-1} = \text{id}_A\)。
  2. 在集合范畴 \(\text{Set}\) 中,同构态射就是双射;在向量空间范畴 \(\text{Vect}\) 中,它们就是线性同构映射;在群范畴 \(\text{Grp}\) 中,它们就是群同构映射;在拓扑空间范畴 \(\text{Top}\) 中,它们就是同胚映射;在关系范畴 \(\text{Rel}\) 中,它们就是关系同构映射。需要注意的是,在所有这些情况下,每个同构态射都是双射,但反之则只有在集合、向量空间和群的情况下成立,而在关系和拓扑的情况下不成立。
  3. 在 \(\text{Ban}_b\) 中,同构态射就是线性同胚映射;而在 \(\text{Ban}\) 中,同构态射就是保范线性双射。
  4. 在矩阵范畴 \(\text{Mat}\) 中,同构态射就是正定矩阵,即行列式非零的方阵。
  5. 在自动机范畴 \(\text{Aut}\) 中,一个态射 \((f_Q, f_{\Sigma}, f_Y)\) 是同构态射,当且仅当其中的每个映射 \(f_Q, f_{\Sigma}, f_Y\) 都是双射。
  6. 在单子范畴中,每个态射都是同构态射当且仅当单子是一个群。

命题 :

  1. 如果 \(A\xrightarrow{f} B\) 是同构态射,则 \(B \xrightarrow{f^{-1}} A\) 也是同构态射,且 \((f^{-1})^{-1} = f\)。
  2. 如果 \(A \xrightarrow{f} B\) 和 \(B \xrightarrow{g} C\) 都是同构态射,则 \(A \xrightarrow{g \circ f} C\) 也是同构态射,且 \((g \circ f)^{-1} = f^{-1} \circ g^{-1}\)。

证明:

  1. 直接根据逆和同构映射的定义得出。
  2. 利用结合律和逆的定义,有:\((g \circ f) \circ (f^{-1} \circ g^{-1}) = g \circ (f \circ f^{-1}) \circ g = g \circ \text{id}_B \circ g^{-1} = g \circ g^{-1} = \text{id}_C\),以及 \((f^{-1} \circ g^{-1}) \circ (g \circ f) = f^{-1} \circ (g^{-1} \circ g) \circ f = f^{-1} \circ \text{id}_B \circ f = f^{-1} \circ f = \text{id}_A\)。

ArrowTuner
1 声望0 粉丝

数学爱好者、无业游民