λ演算(Lambda Calculus)入門基礎(chǔ)(二):丘奇編碼(Church Encoding)

上一篇我們已經(jīng)建好了lambda演算大廈的地基杰刽,接下來需要了解的就是如何在此基礎(chǔ)上構(gòu)造用于計算的一些通用工具了菠发,比如自然數(shù)贺嫂、布爾值、基本運算和布爾運算等等第喳。


丘奇數(shù)(Church Numerals)

在介紹丘奇數(shù)之前糜俗,需要通過定義自然數(shù)的皮亞諾公理(Peano Axioms)來說明自然數(shù)的本質(zhì)特征:

1. 皮亞諾公理

皮亞諾公理系統(tǒng)由五條基于自然數(shù)集N和后繼函數(shù)S的公理組成:

  1. 0∈N
  2. x∈N→S(x)∈N
  3. x∈N→S(x)≠0
  4. x∈N∧y∈N∧S(x)=S(y)→x=y
  5. 0∈M∧?x(x∈M→S(x)∈M)→N?M for any property M (axiom of induction).

皮亞諾公理規(guī)定了自然數(shù)集就是從0開始通過后繼函數(shù)S構(gòu)成的集合(注:最初的皮亞諾公理中規(guī)定自然數(shù)從1開始),其中單射S(n)對應(yīng)到我們的日常生活就是n+1悠抹,S(0)就是1锌钮,S(S(0))就是2梁丘,以此類推氛谜。
并且值漫,很明顯的,皮亞諾公理系統(tǒng)描述的是自然數(shù)的本質(zhì)性質(zhì)而與表示方式關(guān)系不大杨何,用阿拉伯數(shù)字表示就是{0,1,2,...}酱塔,用漢字表示就是{〇,一,二,...},用英文表示就是{zero,one,two,...}危虱,按皮亞諾公理表示就是{0,S(0),S(S(0)),...}羊娃,在lambda演算中表示就是丘奇數(shù)(Church Numerals)

2. 丘奇數(shù)

根據(jù)皮亞諾公理我們可以知道埃跷,只要確定了自然數(shù)0和后繼函數(shù)S蕊玷,就可以根據(jù)公理獲得所有的自然數(shù)。由于lambda演算中只有函數(shù)弥雹,因此自然數(shù)0也需要用函數(shù)來表示垃帅,這個函數(shù)具有自然數(shù)0的性質(zhì),表示為:

0 ≡ λf.λx.x

而后繼函數(shù)S在lambda演算中則表示為:

S ≡ λn.λf.λx.f (n f x)

于是這些丘奇數(shù)依次表示為:

0 ≡ λf.λx.x
1 ≡ λf.λx.f x
2 ≡ λf.λx.f (f x)
3 ≡ λf.λx.f (f (f x))
...

對后繼函數(shù)S和丘奇數(shù)的簡單驗證如下:

S 0
≡ (λn.λf.λx.f (n f x)) λf.λx.x
= (λf.λx.f (n f x))[n := λf.λx.x] //beta
= (λg.λy.g (n g y))[n := λf.λx.x] //alpha
= λg.λy.g ((λf.λx.x) g y) //substitute
= λg.λy.g (x[f := g, x := y]) //beta
= λg.λy.g y //substitute
≡ 1

那么為什么要這么表示呢剪勿?
就個人理解來講贸诚,在lambda演算中,由于其函數(shù)本位的指導(dǎo)思想窗宦,丘奇數(shù)表示為:
n ≡ λf.λx.fnx
每個丘奇數(shù)都是一個高階函數(shù)(higher-order function)赦颇,即輸入和輸出也包含函數(shù)的函數(shù),其中fnx表示把輸入函數(shù)f應(yīng)用于參數(shù)xn次赴涵,即

  • 丘奇數(shù)代表的自然數(shù)意為將函數(shù)應(yīng)用于參數(shù)的次數(shù),它滿足皮亞諾公理订讼,具備自然數(shù)的性質(zhì)髓窜;
  • 后繼函數(shù)S意為將函數(shù)多應(yīng)用一次,是從自然數(shù)映射到丘奇數(shù)的加一操作。

3. 相關(guān)運算

下面我們可以進行l(wèi)ambda演算中一些相關(guān)運算的學習了寄纵,其間需要多與與丘奇數(shù)相互交叉理解并參照自然數(shù)運算的原理鳖敷、過程和結(jié)果,這樣能更好的解決諸如“為什么這個運算要這樣表示程拭?”此類疑問定踱。

3.1 加法(addition)

我們已經(jīng)知道丘奇數(shù)n ≡ λf.λx.fnx意為將f應(yīng)用于xn次,那么根據(jù)加法的性質(zhì)恃鞋,要計算丘奇數(shù)mn的和崖媚,就可以將函數(shù)應(yīng)用于nm次(m f n -> m f (n f x)),即

PLUS ≡ λm.λn.λf.λx.m f (n f x)

事實上后繼函數(shù)S作為+1在lambda演算中的映射恤浪,也就是經(jīng)過歸約后的PLUS 1

PLUS 1
≡ (λm.λn.λf.λx.m f (n f x)) (λf.λx.f x)
= (λn.λf.λx.m f (n f x))[m := λf.λx.f x] //beta
= (λn.λg.λy.m g (n g y))[m := λf.λx.f x] //alpha
= λn.λg.λy.(λf.λx.f x) g (n g y) //substitute
= λn.λg.λy.g (n g y) //beta & substitute
= λn.λf.λx.f (n f x) // alpha
≡ S

那么換一個角度考慮畅哑,PLUS m n其實也可以理解為將S應(yīng)用于nm次,即

PLUS
≡ λm.λn.λf.λx.m f (n f x) 
≡ λm.λn.m S n

試著驗證一下吧~

3.2 乘法(multiplication)

接下來要介紹的是丘奇乘法水由,通過自然數(shù)乘法的性質(zhì)荠呐,可以進行類比,兩個丘奇數(shù)mn的乘法結(jié)果應(yīng)當表示這樣一個丘奇數(shù)p ≡ λf.λx.fpx:將f應(yīng)用于xp = m * n次砂客。
顯然泥张,要計算這樣的結(jié)果p,可以

  1. n先應(yīng)用于f上鞠值,得到將f應(yīng)用于參數(shù)xn次的中間函數(shù)TMP媚创;
  2. 然后將m應(yīng)用于TMP上,即再把TMP應(yīng)用于參數(shù)xm次齿诉,這樣就可以得到將f應(yīng)用于xm * n次的結(jié)果p筝野。

是不是也很簡單?這樣我們就重新“發(fā)明”了丘奇乘法:

multiply m n f = m (n f)

于是它的lambda表達式便可以得到了:

MULT ≡ λm.λn.λf.m (n f)
MULT ≡ λm.λn.λf.λx.m (n f) x

注意這是丘奇乘法的兩種等價表示方式粤剧,可以通過eta歸約來互相轉(zhuǎn)換歇竟。


To be continued...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市抵恋,隨后出現(xiàn)的幾起案子焕议,更是在濱河造成了極大的恐慌,老刑警劉巖弧关,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盅安,死亡現(xiàn)場離奇詭異,居然都是意外死亡世囊,警方通過查閱死者的電腦和手機别瞭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來株憾,“玉大人蝙寨,你說我怎么就攤上這事晒衩。” “怎么了墙歪?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵听系,是天一觀的道長。 經(jīng)常有香客問我虹菲,道長靠胜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任毕源,我火速辦了婚禮浪漠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脑豹。我一直安慰自己郑藏,他們只是感情好,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布瘩欺。 她就那樣靜靜地躺著必盖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪俱饿。 梳的紋絲不亂的頭發(fā)上歌粥,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音拍埠,去河邊找鬼失驶。 笑死,一個胖子當著我的面吹牛枣购,可吹牛的內(nèi)容都是我干的嬉探。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼棉圈,長吁一口氣:“原來是場噩夢啊……” “哼涩堤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起分瘾,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胎围,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后德召,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體白魂,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年上岗,在試婚紗的時候發(fā)現(xiàn)自己被綠了福荸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡肴掷,死狀恐怖逞姿,靈堂內(nèi)的尸體忽然破棺而出辞嗡,到底是詐尸還是另有隱情捆等,我是刑警寧澤滞造,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站栋烤,受9級特大地震影響谒养,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜明郭,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一买窟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧薯定,春花似錦始绍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至年堆,卻和暖如春吞杭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背变丧。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工芽狗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痒蓬。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓童擎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親攻晒。 傳聞我的和親對象是個殘疾皇子顾复,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容