« Home

Example. 應用到 lambda calculus [math-0007]

編碼的方式是找一個只有兩個物件 1,T1, T 的 category MM ,讓 lambda calculus 的 terms 是 MM -morphisms,這些技巧在 Categorical semantic 領域內相當常見。

到這裡必須檢查 lambda calculus 確實存在 point-surjective,歡迎自行嘗試。

按此編碼後可以得到 evϕp,pencodeϕ(p)(p)ev \circ \langle\phi\circ p, p\rangle \xrightarrow{encode} \phi(p)(p) 。套到等式上

fevϕp,p=evϕp,pf \circ ev \circ \langle\phi\circ p, p\rangle = ev \circ \langle\phi\circ p, p\rangle

可以得到以下編碼

f(ϕ(p)(p))=ϕ(p)(p)f(\phi(p)(p)) = \phi(p)(p)

ϕ(p)\phi(p) 改寫成 qq ,於是等式可以寫成 q(p)=f(ϕ(p)(p))q(p) = f(\phi(p)(p)) ,而函數套用語法可以用 λ\lambda 退化,於是得到

q=λx.f(ϕ(x)(x))q = \lambda x. f(\phi(x)(x))
注意到 qq 的定義是非遞迴的,因此一定是可定義的。

計算即可發現確實 q(p)=ϕ(p)(p)=f(ϕ(p)(p))q(p) = \phi(p)(p) = f(\phi(p)(p)) 。因為所有的 λ\lambda -term 都屬於 TT ,所以現在我們知道任何 lambda calculus 的函數都有不動點。