形式驗證的歷史和方法

banq發表於2024-02-23


這篇文章主要介紹了形式驗證領域的歷史和數學起源,涉及了形式推理的歷史演變、可證明的遞迴函式、逆向數學和構造性數學中的型別論。

文章還提到了形式驗證對程式語言理論的影響,包括型別系統的發展和依賴型別語言的應用。

文章下一部分將探討形式驗證領域的實踐方面,如SMT求解器、程式邏輯、模型檢查等。

要點”

  • 形式驗證的歷史和根源:從萊布尼茲到哥德爾,探討形式推理的發展歷程和數學邏輯的起源。
  • 可證明的遞迴函式:研究算術理論中可證明的遞迴函式,展示了哥德爾不完備性定理的另一種表述。
  • 逆向數學和型別論:探索逆向數學、構造性數學中的型別論以及型別論對程式語言理論的影響。

詳細點選標題

摘要:

1、我們所說的形式化驗證,是指可以對語句進行形式化證明的技術,而且這種證明的合理性在某種程度上是有保證的。

從歷史上看,形式方法的思想出現在現代。形式推理的最初思想屬於 17 世紀德國數學家和哲學家戈特弗裡德·威廉·萊布尼茨 (Gottfried Wilhelm Leibniz)。他獨立於艾薩克·牛頓爵士發明了微積分。

此外,萊布尼茨還引入了我們都熟悉的積分符號系統。讀者可以閱讀Stephen Wolfram 撰寫的部落格文章,更詳細地探討萊布尼茨的表示法。

萊布尼茨認為:

  • 任何智力話語都應該使用類似於代數符號系統的符號語言來統一描述。這種語言是一種讓每個人表達數學和哲學思想的工具。
  • 推理過程應該按照一定的規則進行,根據這些規則保證合理性。
  • 推理應該透過微積分推理器來表示,這是一種廣義的微積分,其語言具有普遍性。
  • 真正的辯論可能會簡化為看起來像邏輯演算中的推理的計算。(注意:辯論不是辯證法下的狡辯

上述構想的成果實現:

  • 19世紀中葉,喬治·布林提出用代數的方式研究亞里士多德邏輯。布林與奧古斯塔斯·德·摩根一起觀察了邏輯定律與集合運算定律之間的對應關係。這些定律現在被稱為布林代數公理,是元素集合運算的抽象。現在,布林代數的概念遠遠超出了純粹的邏輯論述。
  • 戈特洛布·弗雷格(Gottlob Frege)開發了一個基於語法而不是代數計算的框架。弗雷格的方法主要是句法的,並且基於描述謂詞和運算的語言。該系統稱為Begriffsschrift,德語為概念符號。Begriffsschrift歷史上是謂詞邏輯的第一個公理化表示,即具有普遍和存在量詞的關係和屬性的邏輯。
  • 公理系統是一組包含公理且在推理規則下封閉的格式良好的公式。公理是原始句子。推理規則是從現有定理獲得新定理的一種方法。弗雷格的意圖是對基本數學概念的純粹邏輯解釋,因此將數學視為邏輯的一個分支。這個綱領現在被稱為邏輯主義
  • 1900年代,英國哲學家、數學家伯特蘭·羅素注意到弗雷格的系統是不一致的,並發現了其中的悖論:現代讀者可能將羅素悖論 稱為理髮師悖論
  • 羅素對哲學和數學基礎的看法與弗雷格一樣,是一位邏輯學家。羅素計劃的目的是以純粹邏輯的方式並同時一致地描述數學的基礎。目的是調查數理邏輯語言在算術概念描述中的表達能力。《數學原理》包含羅素提出的型別論的第一個版本,作為康託集合論的替代品。推薦觀看BBC連續劇《偉大的哲學家》
  • 希爾伯特綱領和公理化方法:任何數學理論都應該有一個正式的公理對應物。以公理化方式表示數學理論的第一次嘗試是希爾伯特在 1890 年代提出的歐幾里得幾何版本。此外,通常的數學證明必須在那些公理理論中形式化


2、型別論也源於伯特蘭·羅素在《數學原理》邏輯主義綱領中的思想。
型別概念的提出是為了避免自我參照現象,這種現象暗示著羅素悖論

  • 樸素集合論中的自引用在於隸屬謂詞,根本沒有任何限制。
  • 羅素的層次結構為區分宇宙的悖論提供了一個解決方案

完整的型別系統在《數學原理》中進行了描述。

型別理論在 1940 年代成為 lambda 演算的一個分支,當時 Alonzo Church 用型別擴充套件了他的 lambda 演算,以避免 lambda 項中的自應用。

型別理論作為證明理論的一個分支以兩種方式影響程式語言理論:

第一個視角包括型別程式語言的理論。型別系統的開發最初是從證明理論的角度發展而來的。例如,多型 lambda 演算(廣泛稱為系統F⁡F)由 Jean-Yves Girard 提出,用於描述直覺二階算術的可證明遞迴函式類。現在,我們考慮系統F⁡F作為 Haskell 中實現的引數多型性的公理化描述。

第二個視角被稱為構造型別理論。從程式設計師的角度來看,這種形式提供了依賴型別的 lambda 演算系統。因此,型別系統為進行基於 Curry-Howard 形式驗證的程式語言提出了底層形式主義。一些潛在的依賴型別語言,例如 F*、Lean 和 Arend。

 

相關文章