范畴论系列(1)初步认识范畴

174 阅读15分钟

起因

写这个系列起源于自己学习编程语言时遇到的问题,研究编程语言不可避免要与数学打交道,自己大学只学过数学分析高等代数等数学系一年级课程,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 满足的某个性质,则 aAP(a){a \in A \mid P(a)} 是一个集合。
  2. 幂集: 假设 A 是一个集合,则 AAA{A' \mid A' \subseteq A} 是一个集合,称为 A 的幂集。
  3. 其他集合的构造: 对于集合 A 和 B,我们能构造如下集合:
  • (a) 两个元素的集合:{A, B},表示集合包含元素 A 和 B 的集合。
  • (b) 有序对 (A, B),表示按照顺序排列的元素对,即元素 A 在前,元素 B 在后。
  • (c) 集合的交:ABA \cap B,表示同时属于集合 A 和 B 的元素组成的集合。
  • (d) 集合的并:ABA \cup B,表示属于集合 A 或者属于集合 B 的元素组成的集合。
  • (e) 集合的相对补(差):ABA \setminus BABA - B,表示属于集合 A 但不属于集合 B 的元素组成的集合。
  • (f) 笛卡尔乘积:A×BA \times B,表示由所有形式为 (a,b)(a, b) 的有序对组成的集合,其中 aAa \in AbBb \in B

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

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

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

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

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

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

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

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

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

* Ordinal 数

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

定义

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

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

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

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

性质

  1. 整体性质:

    • 如果 α\alpha 是一个 Ordinal 数,则 xαx \in \alpha 当且仅当 xx 是排在 α\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,0, 1, 2, 3, \ldots 是自然数构成的 Ordinal 数序列。
  • ω\omega 表示所有自然数的集合,是第一个无穷的 Ordinal 数。
  • ω+1,ω+2,\omega + 1, \omega + 2, \ldots 是无穷序列中的后继 Ordinal 数。
  • ω2,ω3,\omega \cdot 2, \omega \cdot 3, \ldots 表示 ω\omega 的倍数,是无穷序列中的极限 Ordinal 数。

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

范畴

范畴的定义

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

  1. 类 (O): 它的成员被称为 A\mathbf{A} - 对象(A-objects)。
  2. 对于每一对 A\mathbf{A} - 对象 (A, B): 存在一个集合 hom(A,B)\text{hom}(A, B),其成员被称为 A\mathbf{A} - 态射(A-morphisms),通常用箭头表示,例如 f:ABf: A \to B 表示 f 是从 A 到 B 的态射。
  3. 每个 A\mathbf{A} - 对象 (A\mathbf{A} ): 存在一个态射 idA:AA\text{id}_A: A \to A,称为 A\mathbf{A} - 恒等态射。
  4. 一个与每一对 A\mathbf{A} - 态射 f:ABf: A \to Bg:BCg: B \to C 相关的合成法则: 存在一个态射 gf:ACg \circ f: A \to C,称为 f 和 g 的复合,满足以下条件:
    • (a) 复合是结合的,即对于任意态射 f:AB,g:BC,h:CDf: A \to B, g: B \to C, h: C \to D,等式 h(gf)=(hg)fh \circ (g \circ f) = (h \circ g) \circ f 成立。
    • (b) 恒等态射作为复合的单位元,即对于任意态射 f:ABf: A \to B,有 idBf=f\text{id}_B \circ f = ffidA=ff \circ \text{id}_A = f
    • (c) 任意两个态射集合 hom(A,B)\text{hom}(A, B)hom(C,D)\text{hom}(C, D) 是两两不相交的。

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

范畴的例子

1. Category Set (集合范畴)

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

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

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

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

(b) Grp(群范畴)

  • 对象类 OO: 所有群。
  • 态射集合 hom(G,H)hom(G, H): 所有群同态从群 GGHH
  • 恒等态射 idGid_G:GG 上的恒等群同态。

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

  • 对象类 OO: 所有拓扑空间。
  • 态射集合 hom(X,Y)hom(X, Y): 所有连续函数从拓扑空间 XXYY
  • 恒等态射 idXid_X: 拓扑空间 XX 上的恒等连续函数。

(d) Rel(关系范畴)

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

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

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

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

  • (i) 状态转移关系:对于任意 σΣ\sigma \in \SigmaqQq \in Q,都有 δ(σ,f(q))=f(δ(σ,q))\delta'(\sigma, f(q)) = f(\delta(\sigma, q))
  • (ii) 初始状态:f(q0)=q0f(q_0) = q'_0
  • (iii) 终态:f[F]Ff[F]\subseteq F'

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

3. 对象构造

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

(a) Metric Spaces

  • MetMet(度量空间范畴): 所有度量空间为对象,态射为所有非扩张映射(即收缩映射)。
  • MetuMet_u(度量空间范畴): 所有度量空间为对象,态射为所有一致连续映射。
  • MetcMet_c(度量空间范畴): 所有度量空间为对象,态射为所有连续映射。

(b) Banach Spaces

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

4. 不同结构的范畴

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

(a) Mat 范畴

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

(b) Aut 范畴

  • Aut(自动机范畴): 所有(确定性、顺序、Moore)自动机为对象,对象是六元组 (Q,Σ,Y,δ,q0,y)(Q, \Sigma, Y, \delta, q_0, y),其中 QQ 是状态的集合,Σ\SigmaYY 是输入和输出符号的集合,δ:Σ×QQ\delta: \Sigma \times Q \to Q 是过渡映射,q0Qq_0 \in Q 是初始状态,y:QYy: Q \to Y 是输出映射。从自动机 (Q,Σ,Y,δ,q0,y)(Q, \Sigma, Y, \delta, q_0, y) 到自动机 (Q,Σ,Y,δ,q0,y)(Q', \Sigma', Y', \delta', q'_0, y') 的态射是函数 fQ:QQf_Q: Q \to Q'fΣ:ΣΣf_\Sigma: \Sigma \to \Sigma'fY:YYf_Y : Y \to Y',满足以下条件:
    • (i)保持过渡:δ(fΣ(σ),fQ(q))=fQ(δ(σ,q))\delta'(f_\Sigma(\sigma), f_Q(q)) = f_Q(\delta(\sigma, q))
    • (ii)保持输出:fY(y(q))=y(fQ(q))f_Y(y(q)) = y'(f_Q(q))
    • (iii)保持初始状态:fQ(q0)=q0f_Q(q_0) = q'_0

(c) 类作为范畴

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

(d) 预序类作为范畴

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

(e) 幺半群作为范畴

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

(f) 乘积范畴

  • Product Category(乘积范畴): 对于任意两个范畴 AABB,可以构建 A×BA \times B,或更一般地,对于有限多个范畴 C1,C2,,CnC_1, C_2, \ldots, C_n,可以构建 C1×C2××CnC_1 \times C_2 \times \ldots \times C_nA×BA \times B 的对象是所有集合对 (A,B)(A, B),从 (A,B)(A, B)(A,B)(A', B') 的态射是所有形如 (f,g)(f, g) 的函数对,其中 f:AAf: A \to A'g:BBg: B \to B'。恒等态射由 (idA,idB)(\text{id}_A, \text{id}_B) 给出,而复合由 (f2,g2)(f1,g1)=(f2f1,g2g1)(f_2, g_2) \circ (f_1, g_1) = (f_2 \circ f_1, g_2 \circ g_1) 定义。

对偶原理

定义 :

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

例子 :

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

备注 :

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

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

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

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

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

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

考虑 AA 中态射 AfBA \xrightarrow{f} B 的性质:QA(f)Q_A(f) \equivAA 中存在一个 AA - 态射 BgAB \xrightarrow{g} A,使得 AfBgA=AidAAA \xrightarrow{f} B \xrightarrow{g} A = A \xrightarrow{\text{id}_A}A(即,gf=idAg \circ f = \text{id}_A)。

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

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

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

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

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

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

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

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

同构态射

定义 : 在一个范畴中,如果存在一个态射 f:ABf: A \to B,使得存在一个态射 g:BAg: B \to A,满足 gf=idAg \circ f = \text{id}_Afg=idBf \circ g = \text{id}_B,则称 ff 是一个同构态射。这样的态射 gg 被称为 ff 的逆。

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

命题 : 如果 f:ABf: A \to Bg:BAg: B \to Ah:BAh: B \to A 是范畴 AA 中的态射,且 gf=idAg \circ f = \text{id}_Afh=idBf \circ h = \text{id}_B 成立,则 g=hg = h

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

推论 : 如果 g1g_1g2g_2 是同一个态射 ff 的逆,则 g1=g2g_1 = g_2

备注 : 根据上述推论,我们可以称同构态射 ff 的逆为 f1f^{-1}

例子:

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

命题 :

  1. 如果 AfBA\xrightarrow{f} B 是同构态射,则 Bf1AB \xrightarrow{f^{-1}} A 也是同构态射,且 (f1)1=f(f^{-1})^{-1} = f
  2. 如果 AfBA \xrightarrow{f} BBgCB \xrightarrow{g} C 都是同构态射,则 AgfCA \xrightarrow{g \circ f} C 也是同构态射,且 (gf)1=f1g1(g \circ f)^{-1} = f^{-1} \circ g^{-1}

证明:

  1. 直接根据逆和同构映射的定义得出。
  2. 利用结合律和逆的定义,有:(gf)(f1g1)=g(ff1)g1=gidBg1=gg1=idC(g \circ f) \circ (f^{-1} \circ g^{-1}) = g \circ (f \circ f^{-1}) \circ g^{-1} = g \circ \text{id}_B \circ g^{-1} = g \circ g^{-1} = \text{id}_C,以及 (f1g1)(gf)=f1(g1g)f=f1idBf=f1f=idA(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

定义 :

在一个范畴中,如果存在同构态射 f:ABf: A \to B,则称对象 AABB 是同构的。

备注 :

对于任意范畴 AA," 与之同构 " 显然构成 Ob(A)\text{Ob}(A) 上的等价关系(从恒同态射是同构态射的事实可以得出自反性,而对称性和传递性可通过上述命题直接得到),同构的对象通常被认为是 " 本质上相同的 "。