Processing math: 100%

2014年2月12日 星期三

Cartesian Closed Categories 與簡單型別論 (一)

介紹

範疇論對理論電腦科學影響重大,其中一個應用提供各種型別理論(複數以上 type theories)的模型語意。為了解釋這兩者之間的關係,我們以 simply-typed lambda calculus λ(或簡稱 simple type theory、STT)為例,討論其範疇上的詮釋。在 STT 中只討論最基本的函數型別(function type)以及變數型別,具體來看是非常簡單的函數式語言,型別系統只負責處理 function application 是否合適。

這題材預計分做兩篇,首先解釋 Cartesian closed category (簡稱 CCC)跟 simply typed lambda calculus 的定義跟基本性質,接著談論如何聯繫 CCC 與 simply typed lambda calculus 兩者。

背景知識

一個範疇 CCartesian closed
  1. 所有有限的 product 都存在以及
  2. 對任意的物件 y,zC 都有 exponential object zy
更明確地說,第一個條件相當於 C 有 terminal object 1 以及對任意物件 x,y 其 binary product x×y 都存在。第二個條件的 exponential object 定義為一個 object zy 以及一個「取值」態射 ϵ:zy×yz 滿足
對任意的物件 xC 以及任意的態射 g:x×yz 存在一個唯一的態射 λg:xzy 使得 g=ϵ(λg×idy)
基本的範例有集合範疇 Set:在此範疇下,只包含一個元素的集合 {} 為 terminal object,對任意集合 X,Y 都可以組成其卡式積 X×Y={(x,y)xX,yY} 為此範疇的 binary product。而對 exponential object 則為所有從 YZ 構成的函數集合 YZ={f:YZ} 以及取值函數 eval:ZY×YZ 定義為 eval(f,y)=f(y)

我們可以再整理一下 exponential object 的定義:任意 exponential object zy 都存在若對所有的 y 都具有以下對 x 以及 z 自然的一一對應
hom(x,zy)hom(x×y,z)λg:xzyg=ϵ(λg×idy)=ϵ(λg×y)
(an isomorphism natural in x and z),也就是說將 ()×y 看成一個函子的話,具有一個 right adjoint ()y

另外一個例子是給定一個 Boolean algebra A,用 A 上的 poset 結構當作一個範疇,也會得到一個 Cartesian closed category,留給讀者分辨對應的 product 跟 exponential object 是什麼。

基本性質

Set 上的 ZY 恰好是函數空間,也就是 Set(Y,Z)。一般來說,exponential object zy 可以看作是將 hom(y,z) 內化成範疇內的物件,考慮以上 adjunction 的刻畫,因為 y1×y,我們可以推出:
hom(y,z)hom(1×y,z)hom(1,zy)
對於所有態射 f:yz 都可以對應到態射 λf:1zy

這個態射 λf:1zy 代表什麼意思呢?從 Set 來看,任意 x:1X 的函數,唯一決定 X 上的一點 x()X。我們可以將 1X 當作是 X 上的一個點。還可以從 exponential object 的「取值」態設來驗證這個想法:
引理:在 CCC 中,任意態設 f:xy 以及任一點 a:1x,我們有 1λf,ayx×xϵy=1axfy 
證明:給定任意 f:xy,考慮 f=fπ:1×xxy 我們有\xymatrix{1\times x\ar[d]_{\lambda f' \times x}\ar[rd]^{f'}\\ y^x \times x\ar[r]_{\epsilon} & y} 也就是 f=ϵ(λf×idx)。從此不難推出 fa=ϵλf,a
除此之外,exponential object 跟 products 有著常見的指數運算,例如

  1. (xy)zxy×z:從 adjunction 可輕易推得
  2. x¹x(同上)
  3. 1x11 是 terminal 跟 adjunction 推得
  4. (x×y)zxz×yz 因為 ()y 是 right adjoint。

 Cartesian closed 函子

我們對於保持 CCC 結構的函子特別有興趣,相當於代數上 homomorphism 保持代數結構操作的觀念:給定兩個 Cartesian closed 範疇 C,D,我們稱函子 F:CDCartesian closed 的若 F 保持 finite products 以及 exponential objects。具體來說,這代表
  1. F(1C)1D
  2. F(x×y)Fx×Fy 
  3. F(zy)F(z)F(y) 
要特別注意的是,這邊的 不單指同構而是將諸如投影態射 πx:x×yx 同樣對應到 Fx×FyFπFx 投影態射。

舉例來說,給定兩個 Boolean algebra A,B,所有從 AB 的 Boolean algebra homomorphism f 都可以視作 Cartesian closed 函子,因為任意的 Boolean algebra homomorphism 都滿足 f(A)=Bf(aAb)=faBfbf(aAb)=faBfb

下一篇將介紹 simply-typed lambda calculus λ 並且討論如何將 λ 當作 Cartesian closed 範疇。

沒有留言:

張貼留言

留言也可用 $...$ 輸入 LATEX 語法(注意:預覽畫面無法顯示)