单子与伴随:通过 Kleisli 和 Eilenberg-Moore 伴随实现分解
一个范畴中的单子可以通过经过中间范畴的伴随函子复合来表示。这种方法揭示了单子的内部结构,并允许通过两种极端伴随关系来分析它:初始的 Kleisli 伴随和终末的 Eilenberg-Moore 伴随。每一种都展示了信息在函子作用下丢失或恢复的独特方式。
忘却函子与自由函子
伴随关系通常被描述为函子的角色:右伴随通常是“忘却”的,而左伴随则是“自由”的。忘却函子会从原始范畴中丢失部分结构,将不同的对象合并为一个。与其相伴的左伴随函子则试图尽可能恢复信息,在中间范畴中构造出‘最一般’的对象。
以幺半群为例:忘却函子 U 将幺半群范畴 Mon(Set) 映射到集合范畴 Set,抹去了乘法运算和结合律。其左伴随函子 F 构造出任意集合 a 的自由幺半群 Fa——一种具有最一般二元运算的结构,使得任何其他幺半群都可以通过态射获得。
这些角色并非严格的数学定义,而是帮助理解伴随如何组织信息:
- 右伴随遗忘差异,合并对象。
- 左伴随自由重建结构,生成最一般对象。
单子伴随关系的范畴
对于一个自函子上的单子 T,可以构造一个范畴 Adj_T,其对象是所有可能生成 T = U∘F 的伴随关系 (D, F, U)。伴随之间的态射是满足 K∘F = F' 且 U'∘K = U 的函子 K: D → D'。
该范畴包含了关于单子 T 所有可能实现的所有信息。一个重要结论:Adj_T 同时拥有初始对象和终末对象,分别代表分解单子的两种极端方式。
Kleisli 伴随
Kleisli 伴随是 Adj_T 中的初始对象。这里的中间范畴是自由 T-代数的范畴。对象仍然是原始范畴 C 中的对象,但态射通过单子的操作进行组织。
Kleisli 伴随的函子 F 将对象 a 映射为自由 T-代数 (Ta, μ_a),其中 μ_a 是单子的乘法。忘却函子 U 则简单地将代数的对象返回到原始范畴,遗忘乘法结构。
Kleisli 伴随的关键特征:
- 中间范畴的结构最小;对象直接对应于 C 中的对象。
- 态射反映了单子操作的作用。
- 该伴随是最大程度的“自由”,不添加额外约束。
Eilenberg-Moore 伴随
Eilenberg-Moore 伴随是 Adj_T 中的终末对象。其间的范畴是所有 T-代数的范畴,其中对象是满足代数公理的对 (a, h: Ta → a)。
在此处,函子 F 将对象 a 映射为自由代数 (Ta, μ_a),与 Kleisli 伴随相同。然而,忘却函子 U 现在将代数 (a, h) 简单映射为对象 a,不仅遗忘乘法结构,也遗忘特定的态射 h。
Eilenberg-Moore 伴随代表了最大程度的“忘却”方法:
- 中间范畴包含所有可能的代数,具有丰富的结构。
- 忘却函子丢失更多信息,将代数简化为其底层对象。
- 该伴随展示了单子如何通过其所有代数构成的完整范畴来表示。
在伴随之间切换
Adj_T 中的态射允许在不同伴随之间转换。一个满足伴随条件的函子 K: D → D',实际上将单子的一种表示转化为另一种。
从 Kleisli 伴随过渡到 Eilenberg-Moore 伴随,可通过一个将自由代数映射到所有代数范畴的函子实现。该函子保持结构,但扩展了上下文。
切换的关键点:
- 任何生成单子 T 的伴随关系,都可以通过 Adj_T 中的态射连接到 Kleisli 和 Eilenberg-Moore 伴随。
- 转换反映了结构“遗忘”与“重建”程度的变化。
- 这使得我们能够在单子所有可能实现的谱系中进行分析。
示例:Option 单子
考虑过滤场景下的 Option 单子。Option 单子的操作可以通过 Kleisli 伴随表示,其中中间范畴由可能包含“缺失值”的对象组成。
在 Eilenberg-Moore 伴随中,Option-代数是配备了一个操作 h: Option a → a 的对象,用于“解决”缺失值,返回具体元素或执行备选逻辑。
对 Option 两种方法的比较:
- Kleisli 伴随关注单子操作本身,结构最小。
- Eilenberg-Moore 伴随考虑了处理缺失值的所有可能方式,通过代数体现。
- 伴随之间的转换展示了抽象的单子操作如何通过不同的处理实现具体化。
重点总结
- 单子可以通过经过中间范畴的伴随函子进行分解。
- 生成给定单子的所有伴随关系的范畴具有初始对象和终末对象——即 Kleisli 伴随和 Eilenberg-Moore 伴随。
- Kleisli 伴随代表最大程度的自由,中间结构最少。
- Eilenberg-Moore 伴随展示最大程度的忘却,拥有丰富的代数范畴。
- 通过 Adj_T 中的态射在伴随之间切换,揭示了单子所有可能实现的完整谱系。
— Editorial Team
暂无评论。