語言背後的代數學(六):Henkin模型
回顧
為了解釋簡單類型化演算 中項,我們介紹了 代數,
用 代數中的載體 來解釋基本類型 ,用載體上的函數集 來解釋類型為 的所有函數。但只是做這些對應關係,還是不夠的,
我們還得證明,這樣的解釋是「足夠多的」,
以保證每一個合法 項的解釋,都在這個 代數中。尤其是使用集合上的函數,來解釋具有不動點的 項時,
的條件應當適當放寬一些,它不一定恰好是函數集 。為此我們需要更抽象的,從語義角度定義函數是如何作用到它的參數上的。1. 作用結構
從形式系統的角度來看, 項的「應用」,是推導規則的一部分,
包括類型推導規則, ,還包括求值規則, 。項的「應用」,我們可以定義為 代數上的一個作用結構(applicative structure)。
假設 是一個類型為 的 項,我們可以把它「應用於」類型為 的項 ,
我們有, 。因此, 代數上的一個作用結構 ,指的是這樣的一個映射,
,它將集合 中的一個函數,以及集合 中的一個元素,映射成集合 中的一個元素。一個有效的作用結構,必須具有外延性條件(extensional),即, ,
如果對於任意的 ,都有 ,則必有 。它指出集合 的兩個函數,如果在 下的作用效果相同,
那麼它們必須是同一個函數。2. 項的唯一解釋
有了滿足外延性條件的作用結構之後,
我們就可以歸納的定義出含義函數(meaning function) 了,(1)
(2) (3) (4) (5) ,存在唯一的 ,使得, ,其中, 是滿足指派 的環境,
是一個映射,將項常量映射到所有 並集的元素上,使得,如果 ,則 。
由於以上幾個等式覆蓋了所有的 項,因此這樣定義的含義函數是完全的。
並且由於它為每一個 項都指定了確定的語義,因此它給出的解釋方式也是唯一的。它稱為Henkin模型。Henkin模型是可靠的,設 是 的任意Henkin模型,
是可證的, 是一個滿足指派 的環境,則 。即,如果一個類型斷言是可證的,則它在語義上也成立。
(關於完全性的討論,略)3. 例子
我們可以對具有單一類型 的 演算,定義它的Henkin模型,
令 為自然數集, 為所有從 到 的函數集合,這稱為自然數上的完全集合論函數體系,(full set-theoretic function hierarchy over the natural number)。我們通過 ,把函數 ,作用到參數 上。
下面我們得出 的語義。由於該項是封閉項,選擇什麼樣的環境 都是無關緊要的。
根據上文「含義函數」 的歸納定義,我們有, ,唯一的 ,使得, , 。然後我們再來看下,
,唯一的 ,使得, , ,即,唯一的 ,使得, , 。那麼這個唯一的 ,實際上就是 了。其中, 是因為,
綜合以上兩個步驟,
,唯一的 ,使得, , 。因此, 的語義是一個恆等函數。我們從語義上證明了以下等式,
。4. 環境模型條件和組合模型條件
以上定義的作用結構 稱為滿足環境模型條件(enviroment model condition),
依賴了環境 這一附加概念。它使得每一個合法的 項,都有模型中一個唯一確定的數學對象與之對應。由於 項有 「抽象」和 「應用」雙重複雜性,所以,建立一個合理的解釋也比較麻煩。
在《你好,類型》系列文章中,我們介紹過組合子邏輯,我們知道可以將任意的 項轉換成對應的 項,反之亦然。因此,如果存在模型可以解釋所有的 項,那麼使用它也就可以解釋所有 項了。
項比 項更為簡潔,它不包含 「抽象」,只包含 和 這兩個組合子。
類似於 項的「應用」,對於 和 的「組合」,我們同樣可以定義 代數上的一個作用結構。
給定 代數,對任意類型 ,如果存在元素
, ,滿足下列對合適類型 的等式條件, , ,我們就稱,該作用結構滿足組合模型條件(combinatory model condition)。由於所有 項都可以表示成 和 的「組合」,
因此,滿足組合模型條件的作用結構,可以唯一解釋所有 項。可以證明,一個滿足外延性條件的作用結構,
如果它滿足環境模型條件,當且僅當它也同樣滿足組合模型條件。總結
本文介紹了Henkin模型作用結構所滿足的條件,環境模型條件和組合模型條件,
它們是等價的,有了它們我們才能給出 項的可靠解釋,即,任何合法的 項都有唯一解釋,且在語法上可證的 項,在語義上也成立。下文我們開始學習範疇論,為理解笛卡爾閉範疇打好基礎。
參考
你好,類型(三):Combinatory logic
程序設計語言理論基礎下一篇:語言背後的代數學(七):數學結構
推薦閱讀: