構文
t := true | false | if t then t else t | 0 | succ t
例
• if true then (succ 0) else 0
• succ (if true then (succ 0) else 0)
• If 0 then true else false
• succ true
7
Slide 8
Slide 8 text
意味
E_IFTRUE
if true then t2 else t3 -> t2
E_IFFALSE
if false t2 else t3 -> t3
E_IF
t1 -> t1’ ならば if t1 then t2 else t3 -> if t1’ then t2 else t3
E_SUCC
t1 -> t1’ ならば succ t1 -> succ t1’
8
例
• if true then (succ 0) else 0 -> succ 0
• succ (if true then (succ 0) else 0) -> succ (succ 0)
• If 0 then true else false
• succ true
• 値でなくかつ評価できない項が存在する
• このような「正しくない」項を除きたい
Slide 9
Slide 9 text
型システム
T := Nat | Bool
T_TRUE
true: Bool
T_FALSE
false: Bool
T_IF
t1: Bool かつ t2:T かつ t3:T ならば if t1 then t2 else t3: T
T_SUCC
t1: Nat ならば succ t1: Nat
9
例
• if true then (succ 0) else 0: Nat
• succ (if true then (succ 0) else 0): Nat
• If 0 then true else false
• succ true
• 「正しくない」項には型が付かない
参考資料
• Benjamin C. Pierce. Types and Programming Languages (1st. ed.). The MIT Press, 2002.
• Benjamin C. Pierce. Advanced Topics in Types and Programming Languages. The MIT Press, 2004.
• 高野 祐輝. ゼロから学ぶRust. 講談社, 2022.
12
発展的な話
• モデル検査の一番の課題は状態空間爆発
• 対策としてAbstractionやPartial Order Reductionなどのテクニックがある
• Symbolic Model Checkingなどの発展的なモデル検査アルゴリズムがある
20
https://www.youtube.com/live/96u4dBAOzao?t=9802s
Slide 21
Slide 21 text
参考資料
• Edmund M. Clarke, Orna Grumberg, and Doron A. Peled. Model checking. MIT Press, 2000.
• Hillel Wayne. 実践TLA+. 翔泳社, 2021.
• チェシャ猫. モデル検査器をつくる, 2024.
21
展望
• 実用に基づいた理論を研究したい
• Rustの形式検証とOS開発に興味がある
• Atmosphere: Towards Practical Verified Kernels in Rust
• Beyond isolation: OS verification as a foundation for correct applications
• 実際に形式手法を活用している企業の方にお話を聞きたい
32