我在這裡想要用範疇論(category theory,又稱抽象廢話)展示跟大家印象中不一樣的數學,有興趣深入學習的讀者可以在最後找到進一步的學習資源。範疇論是從代數拓樸、代數幾何等領域的發展中自然出現的概念,主要的用途是用來高效地描述物之間的關係、用一種抽象的視角觀察整體性質。下面舉一些例子幫助你大致理解一下範疇論在數學領域的定位,看不懂或是想跳過都沒差,並不影響後續閱讀
Example 數學中的Categories與Functors [local-0]
- 我們有所有集合與函數的範疇 、所有群與群態射的範疇
- Monoid 的Actions可以改寫成functor (事實上這類functor有個特殊名稱,叫做presheaf)
- 拓樸空間 的所有開集之間的包含關係構成一個category
- 遺忘functor,比如 、
- Free functor,像是集合生成free groups/vector space等
- 基本群可以視為從有點拓樸到群的functor
- vector space對偶可以視為functor
- 從manifold構造它的ring of smooth functions可以看成functor ,定義為
什麼是色彩繽紛呢?這是指string diagram這種表達方式的圖,接下來我會用一種另類的category定義與string diagrams介紹範疇論。我盡量用不正式的語言,但直覺上正確的方式介紹,並且在每個概念附上一些案例連結作為參考。這表示我們會略過size問題假定自己在一個合適的宇宙上討論category theory
Definition Category的另類定義 [7U86]
一個category是由一些morphisms構成的,每個morphism都有頭跟尾兩個標籤(這些標籤又叫做objects),例如 我們畫出直線並用一個點代表
當頭尾的標籤一樣的時候,我們可以把morphisms黏起來得到另一個morphism,例如 而 ,那 記成
有一類特殊的morphism ,他們的標籤頭尾都一樣,跟其他任何morphism 組合都會是 (如果可以組合)。這類morphism有個特定的名稱,叫做identity morphism,而且對於該標籤 這樣的morphism只有一個。對於這樣的morphism,我們用直線表示它可被忽略
因為我們有等式
上面的表示法利用了functor space (也可以記成 )的每個functor都指向某個object與其identity morphism的特性()濫用了記號,其實上面只是functor與natural transformation表示法的特例(但為了避免循環定義,所以還是會先定義category然後才討論functor與natural transformation)
Functor與Natural transformation [GC75]
Functor是範疇之間的變換,例如 可以記成
Functor必須滿足 ,但這件事在我們目前用的string diagram表示法裡面看起來像是廢話所以就不畫了。Natural transformation是functors之間的變換,例如 可以記成
Natural transformation必須滿足等式 ,稱之為naturality
用string diagram繪製之後,naturality就像是在說:我們可以把串珠在線上移來移去而不會改變意義。因此這又叫「電梯等式」,我們當然沒有必要侷限在objects跟morphisms上,所以更通用的形式是
這種string diagram的語言在Introducing String Diagrams: The Art of Category Theory裡面有更多的介紹
Example 程式作為natural transformation [631K]
如果一些類型構成category,可以用functor表示參數化類型。例如我們可以定義natural transformation 為
或是取出List中的最大值
Interchange Law [ZB1T]
這是在說先結合functor還是先結合natural transformation不改變結果
一些有趣的結果A Formal Proof that the Higher Fundamental Groups are Abelian
Adjunction [U27X]
Adjunction 是範疇論中重要的概念,它是由一對functors 跟 與一對natural transformations 與 組成。注意 這種functor我們會乾脆不畫線
Adjunction是可以串起來的
Example Limit與colimit [50LK]
每個 有limit可以表示成diagonal functor 有right adjoint 。 定義為
對偶的來說,有colimit就是有left adjoint
還有一些其他案例
- Forgetful functor與free functor之間構成adjunction https://ncatlab.org/nlab/show/forgetful+functor
- Galois connection是一種adjunction https://ncatlab.org/nlab/show/Galois+connection
用Adjunction構造Monad [9XIR]
有個跟adjunction緊密聯繫的概念是monad,我們這邊直接看adjunction如何構成monad。給定 ,有以下構造
因此 是一個monad
偏數學的案例我目前只想得到adjunction構造的monad,在電腦科學裡面monad的用途是表示程式中的effects(參考 [Moggi1991])
更多string diagrams [local-1]
張量算術可以用Penrose notation(站上的用例),此外探討string diagrams的理論跟使用string diagrams的文獻都不少,這裡我列出一些
下一步呢? [local-2]
範疇論當然不是只靠一篇文章就能學會的,如果讀者有興趣的話,以下是根據不同背景我認為可能有用的學習資源
- 沒怎麼學過數學?可以考慮The Joy of Abstraction: An Exploration of Math, Category Theory, and Life
- 想要知道範疇論在各個數學領域的案例可以參考Category Theory in Context
- 想要主修範疇論?那可以考慮Handbook of Categorical Algebra
- 你是軟體工程師,希望知道直覺上怎麼運用category theory?那Category Theory for Programmers還蠻適合的,但要注意Type Theory跟Category的關係遠不是這本書說的這麼單純。另外可以考慮讀Seven Sketches in Compositionality: An Invitation to Applied Category Theory了解更廣泛的應用範疇論
只是晚上睡不著?那也可以考慮Sketches of an Elephant
最後希望你閱讀的過程愉快,對範疇論更加了解了(或是我們可以開始談更高的廢話)