ソフトウェア検証の基礎となる理論について話題を選んで解説する. プログラムの意味を定義する操作的意味論について紹介し, プログラム検証の基礎となるホーア論理とその健全性・完全性について議論する. その後,モデル検査等のソフトウェア検証技術の基礎となる理論について解説する. モデル検査, 無限語上のオートマトン, LTL, CTL等.
ソフトウェア検証の基礎となる理論を理解するとともに,様々な計算モデルへの理解を深める.
操作的意味論,ホーア論理,モデル検査,無限語上のオートマトン,時相論理
✔ 専門力 | 教養力 | コミュニケーション力 | 展開力(探究力又は設定力) | 展開力(実践力又は解決力) |
以下の授業計画に基づき授業を進める. 毎回,講義中に1〜2個程度の演習問題を出し,理解度を確認しながら進める.また,7回程度の演習問題を解く課題を出す.
授業計画 | 課題 | |
---|---|---|
第1回 | プログラミング言語の操作的意味論 | 操作的意味論: big-step と small-step |
第2回 | ホーア論理(1) | ホーア論理の推論規則 |
第3回 | ホーア論理(2):健全性と相対完全性 | 相対完全性, 表明言語の表現力 |
第4回 | 命題論理とその充足可能性判定 | 命題論理,SAT |
第5回 | 述語論理の復習 | 述語論理の意味論, 標準形 |
第6回 | 自動証明の原理:導出原理 | 単一化, 導出原理 |
第7回 | 算術の判定アルゴリズム | プレスバーガ算術の判定アルゴリズム |
第8回 | 無限語上のオートマトン(1) | ω正則現言語, Büchiオートマトン |
第9回 | 無限語上のオートマトン(2) | 閉包性, Muller オートマトン |
第10回 | 線形時間時相論理(LTL) | LTLの意味論とモデル検査 |
第11回 | 理解度確認のための試験 | 中間試験 |
第12回 | 分岐時間時相論理(CTL) | CTLの意味論とモデル検査 |
第13回 | 二分決定図(BDD) | BDD上の演算 |
第14回 | ソフトウェアモデル検査 | 抽象化, 反例による詳細化 |
第15回 | ソフトウェアモデル検査に関する最近の話題 | ブッシュダウンオートマトンなどに対するモデル検査 |
指定しない.
講義資料を適宜配付する.
次の本を参考書として使用する.
*Formal Semantics of Programming Languages, Glynn Winskel, MIT Press, 1993.
*Automata Theory: An Algorithmic Approach, Javier Esparza.(https://www7.in.tum.de/~esparza/automatanotes.html)
試験, レポート及び課題の得点により評価する.
論理, オートマトン, 文脈自由文法に関する基礎的な知識を仮定する.