1990-符號模型檢查#
案件摘要#
「這個晶片永遠不會死鎖」——這樣的證明,模擬永遠給不出(模擬只能試有限向量)。CTL 模型檢查(Clarke-Emerson-Sifakis, 1981)能形式化驗證性質,但狀態集合顯式枚舉在 \(10^{20}\) 個狀態前崩潰。1990 年,CMU 的 J. R. Burch、Edmund Clarke、Ken McMillan 與史丹佛的 David Dill 發表符號模型檢查:用 BDD(1986)表示整個狀態集合與轉移關係,不動點(fixpoint)計算在 BDD 上進行——狀態數 \(10^{20}\) 的電路,BDD 只需數萬節點。這是形式驗證從玩具變工業的分水嶺:2007 年 Clarke、Emerson、Sifakis 以此獲 Turing 獎,今日所有 model checker(SMV、NuSMV)與工業級驗證引擎皆其後裔。
前因 -- 為什麼會有這個案子#
- 模擬的哲學極限:模擬 = 有限樣本採樣;「永遠不會」與「存在一條路徑使」是全稱/存在量詞問題——樣本法原則上無法證明。
- 顯式模型的爆炸: \(n\) 個鎖存器的電路有 \(2^n\) 狀態; \(n = 100\) 就超過宇宙原子數——顯式枚舉不可行。
- CTL 語言就緒(1981):Clarke-Emerson-Sifakis 的分支時序邏輯 + 模型檢查演算法,語意與演算法已定,缺可規模化的表示法。
- BDD 就緒(1986):Bryant 的典範布林表示——兩塊積木分別完成,1990 年合流。
線索與推理 -- 數學式、程式、理論#
核心:狀態集合 = 布林函數#
把 \(n\) 位元的狀態空間編碼為布林函數:狀態集合 \(S \subseteq \{0,1\}^n\) 表示為特徵函數 \(\chi_S : \{0,1\}^n \to \{0,1\}\) ,轉移關係 \(T(s, s')\) 同樣是布林函數——兩者用 BDD 表示:
不動點:CTL 的符號計算#
CTL 公式的滿足集用不動點(least/greatest fixpoint)計算:
- 安全性 \(AG\,p\) (永遠 p):最大不動點
- 可達性 \(EF\,p\) (可能到達 p):最小不動點
每次迭代是 BDD 上的布林運算(Apply),收斂即驗證完成。推理:指數個狀態的集合運算被壓縮成 BDD 的布林運算——與 STA 把指數路徑壓縮成線性掃描(1982)同一數學精神。
界界模型檢查(BMC, 1999):BDD 的對照組#
Biere、Clarke 等(1999)提出 bounded model checking:只查 \(k\) 步內的反例,編成 CNF-SAT 交給 SAT 求解器(Chaff, 2001)——BDD 慢但完備,SAT 快但界內。兩者互補,構成今日形式驗證的雙引擎。
結案 -- 後果與影響#
- 形式驗證工業化:SMV(McMillan, 1992)及其工業化後代(IBM RuleBase、Cadence FormalCheck)成為工業標準——設計者第一次可以「證明」而非「測試」。
- Turing 獎(2007):Clarke、Emerson、Sifakis 以模型檢查獲獎——EDA 演算法直接誕生的 Turing 級成果。
- 數學的合流:BDD(1986)+ 不動點理論(Dana Scott 的模態 mu-calculus)+ 自動機理論在此案合流——EDA 理論的黃金時刻。
- 與 SAT 的雙引擎:BMC(1999)+ CDCL SAT(2001)之後,BDD-based 與 SAT-based 驗證互補分工,今日 IC3/PDR(2011)等演算法繼續推進。
關鍵人物與文獻#
- Edmund M. Clarke(1945–2020):CMU,CTL 模型檢查與符號化,2007 Turing 獎。
- Kenneth L. McMillan:CMU 博士生,SMV 作者,後為 Cadence/Arm 研究員,IC3/PDR 發明者之一。
- 文獻:
- J. R. Burch, E. M. Clarke, K. L. McMillan, D. L. Dill, "Sequential Circuit Verification Using Symbolic Model Checking," DAC 1990.
- E. M. Clarke, E. A. Emerson, A. P. Sistla, "Automatic Verification of Finite-State Concurrent Systems Using Temporal Logic Specifications," ACM TOPLAS 8, 244 (1986)(CTL 基礎)。
- A. Biere et al., "Bounded Model Checking," CAV 1999.