当前位置: 首页 > news >正文

译有关态射的一切

上一篇:米田嵌入

原文地址: https://bartoszmilewski.com/2...

如果我还没有使你已经确信范畴论就是所有和态射有关的东西,那就是我的失职。因为下一个主题是伴随,而伴随是用hom集的同构定义的,所以回顾一下有关hom集的那些积木是很有意义的。而且你会看到伴随为描述我们之前研究的很多构造提供了一种更一般的语言,所以复习一下它们也很有必要。

函子

首先,你其实应该把函子看作态射的映射——这个观点有在Haskell的Functor类型类的定义中得到强调,也就是fmap。当然,函子也映射对象——态射的端点——否则我们就没法谈论保持复合。对象告诉了我们哪些态射对是可复合的。其中一个态射的终点必须等于另一个态射的起点——如果它们能复合。所以如果我们想把态射的复合映为提升后的态射的复合,端点的映射就很大程度上被决定了。

交换图

态射的很多性质都是用交换图的方式表达的。如果一个特定的态射被以超过一种方式描述为其他态射的复合,那么我们就有一个交换图了。

特别地,交换图构成了几乎所有泛构造的基础(初始对象和终端对象是明显的例外)。我们已经在积、余积、很多其他(余)极限、指数对象和自由幺半群等等的定义中看到过它了。

积是泛构造的一个简单例子。我们挑选两个对象ab,看看是否存在一个带上一对态射pq的具有成为它们积的泛性质的对象c

productranking

积是极限的一个具体例子。极限是用锥的观念定义的。泛锥是构建在交换图之上的。这些图表的交换性可以被一个恰当的函子的映射的自然性条件所代替。这种方式下交换性被降为了汇编语言的角色,而高级语言是自然变换。

自然变换

一般来说,当我们需要从态射映为交换四方图的时候,自然变换会非常方便。自然四方图的两个对边是某个态射f在两个函子FG作用下的像。另外的边则是自然变换的分量(当然这也是态射)。

naturality

自然性意味着当你移动到“相邻”分量(相邻的意思是说由一个态射连接)上时,你不会违背范畴的结构,也不会违背这两个函子的。你是先用自然变换的分量桥接对象,再用函子跳到它的邻居上;还是反过来,这一点关系也没有。这两个方向是正交的。自然变换让你左右移动,函子让你上下活着前后移动——打个比方说。你可以设想一个函子的就是靶范畴里的一页纸。自然变换就把对应于F的这样一页纸映为对应G的另一页。

sheets

我们已经见过Haskell中这个正交性的例子了。在Haskell中函子在不改变容器形状的条件下修改了容器的内容,而自然变换把这些内在的内容重新打包到另一个不同的容器中。这些操作的顺序并不重要。

我们已经在极限的定义中见到过用自然变换表示的锥了。自然性确保了每个锥的边是可交换的。然而,极限使用锥之间的映射定义的。这些映射也必须满足交换性条件(比如,积的定义中的三角形必须交换。)

这些条件也可以被自然性所代替。你可能会想起锥,或者说极限,被定义成一个自然变换,这个自然变换是(逆变)hom函子:

F :: c -> C(c, Lim D)

和把C的对象映为锥的(逆变)函子(当然锥本身就是自然变换):

G :: c -> Nat(Δ_c, D)

之间的。这里,Δ_c是常函子,而D是定义了C中的图表的那个函子。函子FG都在C的态射上定义良好。非常碰巧的是这个FG之间特别的自然变换是一个同构

自然同构

自然同构——每个分量都是可逆的自然变换——是范畴论里描述"两个东西一样"的方法。这样的一个变换的分量必须是对象间的同构——可逆的态射。如果你把函子的像想成纸张,自然同构就是一个这些纸张间的一一可逆映射。

Hom集

但什么是态射呢?它们比对象具有更多的结构:不像对象那样,态射有两个端。如果你固定住源对象和靶对象,这两个对象间的态射就构成了一个无聊的集合(至少对于局部小的范畴来说)。我们可以给这个集合的元素一些像fg这样的名字来区分它们——但究竟是什么让它们区别于彼此?

在一个给定的hom集上,态射间的本质区别表现在它们与其他态射(来自相邻的hom集)的复合上。如果有一个态射h,它与f的复合(前复合或后复合)与g不同,例如:

h ∘ f ≠ h ∘ g

这样我们就能够直接“观察”fg的不同。然而就算这个区别不能直接观察,我们也可以使用函子去放大hom集。函子F可以把这两个态射映为不同的态射:

F f ≠ F g

在更富的范畴里,相邻的hom集会提供更高的分辨率,比如,

h' ∘ F f ≠ h' ∘ F g

其中h'不在F的像里。

Hom集同构

很多范畴论的构造依赖于hom集间的同构。但因为hom集仅仅只是集合,它们之间一般的同构并不会告诉你更多的东西。对于有限集,同构只是说他们有相同多的元素。如果集合是无限的,它们的基数必须是相同的。但是,任意有意义的hom集同构必须考虑复合。而复合涉及了不止一个hom集。我们需要定义跨在所有hom集的集族上的同构,我们还需要对涉及复合的操作加以某些兼容性条件。而自然同构精确地满足了这样的要求。

但什么是hom集的自然同构呢?自然性是一个函子间的映射的性质,并不是集合间的。所以我们真正在谈论的是指向hom集的函子间的自然同构。它们在态射上的行为由恰当的hom函子导出。态射标准地被hom函子用前复合或后复合(取决于函子的协变性)的方式映射。

米田嵌入就是这种同构的一个例子。它把C中的hom集映为函子范畴里的hom集;并且它是自然的。米田嵌入中的一个函子是C中的hom函子,另一个把对象映为hom集间的自然变换的集合。

极限的定义也是hom集间的一个自然同构(第二个hom集,同样,也是函子范畴里的):

C(c, Lim D) ≃ Nat(Δ_c, D)

可以证明我们的指数对象的构造,或者自由幺半群的构造,也能被重写成hom集上的自然同构。

这并非巧合——我们接下来将会看到这些只不过是伴随的不同的例子,而伴随就是用hom集间的自然同构定义的。

hom集的反对称性

还有一种观察可以帮助我们理解伴随。hom集,一般来说,是非对称的。hom集C(a, b)通常与hom集C(b, a)非常地不一样。这种非对称性的极端例子就是看成范畴的偏序。在偏序中,从ab的态射存在当且仅当a小于等于b。如果ab不相等,那么另一个方向,也就是ba就不会有态射。所以如果hom集C(a, b)非空,这就意味着它是个单例集,那么C(b, a)必须是空集,除非a = b。在这个范畴中箭头有一个明确的流向。

而没有反对称性的预序,也是“几乎全部”有向的,除了例外的环形。把任意的范畴看成预序的推广是非常方便的方法。

预序是个薄范畴——所有的hom集或者是单例集或者是空集。我们可以把一般的范畴看成一个“厚的”预序。

挑战

  1. 考虑某些自然性条件的退化情况并画图。例如,如果函子FG把对象abf :: a -> b的端)映为同一个对象,比如,F a = F bG a = G b?(注意你会得到一个锥或者余锥。)然后考虑F a = G aF b = G b的情况。最后,如果从一个指向自己的环态射——f :: a -> a开始呢?

致谢

感谢Gershom Bazerman检查我的数学和逻辑,以及André van Meulebrouck在整个系列中的编辑上的帮助。

下一篇:伴随

相关文章:

  • java注解的概念理解
  • 详解NodeJs流之一
  • 智能驾驶正文 0 戴姆勒与宝马抱团开发自动驾驶 新旧车企大战在即
  • 数据建模的三种分类(来自Enterprise Architect的文档)
  • Docker镜像提交命令commit的工作原理和使用方法
  • linux 计划任务
  • Ant Design 3.14.1 发布,企业级的 UI 设计语言
  • mpvue小程序开发中配置less支持
  • Android Intent传递对象为什么要序列化?
  • Vue源码解读
  • TableStore: 海量结构化数据分层存储方案
  • GitHub Draft Pull请求支持新的协作流程
  • 常用技巧
  • 原生js实现倒计时页面刷新不重新加载
  • word快捷键
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Django 博客开发教程 16 - 统计文章阅读量
  • gcc介绍及安装
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Magento 1.x 中文订单打印乱码
  • miaov-React 最佳入门
  • python docx文档转html页面
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • React-redux的原理以及使用
  • Tornado学习笔记(1)
  • vue-router的history模式发布配置
  • WePY 在小程序性能调优上做出的探究
  • Windows Containers 大冒险: 容器网络
  • 从零开始的无人驾驶 1
  • 今年的LC3大会没了?
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 理清楚Vue的结构
  • 扑朔迷离的属性和特性【彻底弄清】
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 微信小程序实战练习(仿五洲到家微信版)
  • 小试R空间处理新库sf
  • 阿里云服务器如何修改远程端口?
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #pragma once与条件编译
  • (1)(1.11) SiK Radio v2(一)
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (已解决)什么是vue导航守卫
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .bashrc在哪里,alias妙用
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .Net Remoting常用部署结构
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET大文件上传知识整理