我们称这个箭头为它们的组合(Composition)。 为了确保组合的行为与集合论中的函数组合类似,我们要求如果将一个箭头与一个已组合的箭头组合,必须能够按任何顺序组合它们,并且最终得到相同的箭头。
(g◦f)◦h=g◦(f◦h)
我们说箭头的组合必须是结合的(Associativity)。 例如,加法是结合的,因为(1+1)+1=1+(1+1)。那减法呢,(1-1)-1=1-(1-1)?。
最后,由于我们无法再用集合和元素来定义恒等箭头,我们将其定义为组合的单位,换句话说,要求每个对象都有一个循环箭头,与它组合时它什么也不做。
f◦id=f
这就是我们得到的函数组合的内部结构。 就像我们给人和有理数的抽象形式起了一个共同的名字一样,数学家们称这种结构为范畴(Category)。 通过指定对象和箭头,以及定义箭头的组合并展示它们符合一些限制,可以展示许多不同的数学领域形成了一个范畴,这将意味着使用范畴构建的任何证明都立即在这些数学领域中有效。
如果你对这些具体例子不熟悉,也不用担心,我的目的是展示具有相同底层结构的广泛主题。 首先,如果对象是向量空间,箭头是矩阵,组合是矩阵乘法,恒等箭头是单位矩阵,我们就在线性代数领域定义了一个范畴。
Linear Algebra
1 0 √3 1
( ) ( )
0 1 ↷ –2 √2
ℚ² → ℝ²
↘ 2 –1
2 –1 √3 1 ↓ (0 1)
(0 1 ) ( ) –2 2
–2 2 –2 √2 ℝ³
或者如果对象是数据类型,箭头是它们之间的函数,组合和恒等箭头的定义与集合论中相同,我们就创建了一个模拟基本函数编程语言的范畴。
Functional Programming
id ↷ sqrt
lnt → Float
↘ ↓islnteger
islnteger◦sqrt
Bool
如果你有编程经验,为什么不试着弄清楚复合函数 'isInteger ○ sqrt' 对给定输入返回什么。 你能想出一个合适的函数名吗? 也许直觉上不那么明显,让我们设对象为整数,两个整数之间的箭头表示第一个整数小于或等于第二个整数。 组合可以被认为是基于这样的事实:知道1小于2且2小于3,可以具体地说1必须小于3,因此我们可以在它们之间画一个箭头。
≤
1 → 2
≤ ↘ ↓≤
3
恒等箭头的存在仅仅因为每个数字都小于或等于它自己。 然后我们就基于整数的排序构建了一个范畴。 范畴论之所以非常有用,原因与抽象有理数的原因相同。 我们可以构建直接适用于所有这些不同数学领域的证明。
例如,考虑一个相对简单的证明:范畴中的每个对象只能有一个唯一的恒等箭头。 假设确实有一些对象在一个范畴中有两个恒等箭头,另一个恒等箭头用上面有横杠的id表示。
─
id & id
根据恒等箭头的定义,任何以该对象为起点的箭头,我们称之为f,与恒等箭头组合,恰好给出完全相同的箭头。
f◦id=f
数学联邦政治世界观提示您:看后求收藏(同人小说网http://tongren.me),接着再看更方便。