範疇論學習筆記10:函子
目錄:類型論驛站寫作計劃
前一篇:範疇論學習筆記9:群對象和自然數對象
後一篇:範疇的範疇
學習材料:Category Theory: A Gentle Introduction - Logic Matters,最近更新(2018年1月29日)的版本。這份筆記對應的是第 15 章。
範疇有兩種數據:對象和箭頭。範疇之間的函子也需要有兩個構成部分。
定義77(函子,functor)
對於範疇 和 ,函子 包括下列數據:
- 運算/映射 ,其中 為 對象, 為 對象
- 運算/映射 ,其中 為 箭頭, 為 箭頭
在實際書寫的時候,下標通常省略,在有歧義的時候,參數可以用括弧括起來。
除此以外,函子還需滿足下列兩個條件:
- 保存單元對象:對於任何 對象 ,
- 維護複合:對於任何 箭頭 ,如果存在複合 ,那麼
一些例子
- F1:(遺忘函子,forgetful functor) , ;設 ,即一個幺半群同態,那麼 。其他遺忘函子包括 等。遺忘函子有時被稱為底層函子(underlying functor)。
- F2 : ,遺忘函數性。
- F3:
- F4:(冪集函子,powerset functor) ,
- F5:(幺半群同態函子)取幺半群 和 ,構建範疇 。 只有一個對象 ,它的箭頭就是 里的元素,其複合就是元素的二元運算 ,單位元就是 。同樣地,我們可以定義範疇 。函子 需要確保:
- , 得是一個幺半群同態。
- F6:(單調函子,monotone functor)取兩個偏序集合 ,將它們視為範疇 。單調函數 引出函子 。
- F7:取群 ,將其視為範疇 。可以有函子
- F8:(列表函子,list functor)
- F9:(瘦身函子,thinning functor)設 是一個苗條(thin)的預序範疇,即任何源和目標之間只有一個箭頭,設 是一個發福(fat)的範疇,對象和 完全一致,但源和目標之間可能有多個箭頭。我們可以構造 ,作為一個瘦身函子。
- F10:(常函子,constant functor)設 和 是任意函子, 是 中的任意對象,那麼存在一個常函子,使得 , .
- F11:對於 中的每一個對象 ,都對應著一個函子 ,將 1 中唯一的對象發送給 ,又有 。
- F12:(包含函子,inclusion functor)設 是 的一個子範疇,那麼存在一個包含函子 ,將 中的對象和箭頭映射到 中同樣的對象和範疇上。
- F13:(自由函子,free functor) .
函子保存和反映的分別是什麼?
函子 將每一個 對象 映射到像(image) 上,又將每一個 箭頭 映射到像 上。 在 中的總體像究竟和其本身有多大的差距?函子究竟保存或反映了源頭範疇的哪些特徵呢?
定理76
在 中由函子 構成的像不一定是 的一個子範疇。
定義78(保存和反映)
設函子 , 是箭頭的某個特性。那麼
- 保存(preserves) ,當且僅當對於每一個 箭頭 ,
- 反映(reflects) ,當且僅當對於每一個 箭頭 ,
定義79(保守性,conservativity)
一個函子 是保守(conservative)的,當且僅當它反映所有同構。
定理77
函子不一定保存或反映單態或滿態。
定理78
函子保存右逆,左逆和同構。函子不一定反映它們。
例如坍塌函子(collapse functor) ,1 中唯一的箭頭是同構,但 中的相應箭頭(所有箭頭!)則不一定是同構。
忠實、全乎、和本質滿射函子
定義80(忠實、全乎)
函子 是忠實(faithful)的,當且僅當對於任何 對象 ,以及任何一對平行箭頭 ,如果 ,那麼 。
函子 是全乎(full)的,當且僅當對於任何 對象 ,以及任何箭頭 ,都存在一個箭頭 ,使得 。
是全然忠實(fully faithful)的,當且僅當它既全乎又忠實。
忠實函子對於箭頭不一定是單射。
定義81
函子 在對象上是本質滿射(essentially surjective on objects, e.s.o.)的,當且僅當對於任何 對象 ,存在 對象 ,使得 .
普通的滿射(存在 對象 ,使得 )意義不大。在範疇論理哦我們一般不在乎 是否有一些不同但同餘的對象副本。對象上的單射意義也不大。
- 遺忘函子 是忠實的,在對象上本質滿射的,但不是全乎的。
- 遺忘函子 是忠實的,全乎的,但不是在對象上本質滿射的。
- 瘦身函子 是全乎的,在對象上本質滿射的,但不是忠實的,除非 是一個預序範疇。
- 基於滿射但不單射的幺半群同構的函子 是全乎的,但不是忠實的。
- 完全坍塌函子 不是全乎的,也不是忠實的。
- 包含函子 是忠實的,但除非 是 的一個滿子範疇,該函子是不完全的;該函子通常不滿足在對象上本質滿射。
定理79
忠實函子 反映了單態和滿態。
定理80
全然忠實函子反映了右逆和左逆,因而是保守的。
積、指數、代數拓撲和函子
- F14:(積函子,product functor)設 擁有所有的積, 是 的一個對象,那麼存在一個函子 ,使得 , .
- F15:(指數函子,exponentiation functor)設 擁有所有的指數,設 是一個 對象,那麼存在一個對應的指數函子 ,使得 ,
- F16:代數拓撲函子
使用代數拓撲函子可以證明下面的定理:
定理81(Brouwer 不定點定理,Brouwers Fixed Point Theorem)
從閉單位圓盤(closed unit disc)到其自身的任何連續映射都有一個不動點。
同變函子和逆變函子
定理82
函子 引出一個函子 .
定義82(逆變函子,contravariant functor)
如果 是一個原始意義上的函子(即同變函子,covariant functor),那麼 是一個逆變函子,包含下列數據:
- ,
上述數據滿足下列公理:
- 單位元保存:對於每一個 對象 ,
- 尊重複合:對於任何 箭頭 ,如果它們的複合 存在,則有 .
在 Haskell 中,我們關注的是以類型為對象,以函數為箭頭的範疇 Hask,以及 Hask 的子範疇。Haskell 中的 Functor 就是在這些範疇上定義的函子。
"Prelude:" :i Functorclass Functor (f :: * -> *) where fmap :: (a -> b) -> f a -> f b (<$) :: a -> f b -> f a {-# MINIMAL fmap #-} -- Defined in 『GHC.Base』instance Functor (Either a) -- Defined in 『Data.Either』instance Functor [] -- Defined in 『GHC.Base』instance Functor Maybe -- Defined in 『GHC.Base』instance Functor IO -- Defined in 『GHC.Base』instance Functor ((->) r) -- Defined in 『GHC.Base』instance Functor ((,) a) -- Defined in 『GHC.Base』
目錄:類型論驛站寫作計劃
前一篇:範疇論學習筆記9:群對象和自然數對象
後一篇:範疇的範疇
推薦閱讀: