Slide 1

Slide 1 text

モデル検査入門 1 Riru Oda @ri5255 セキュリティ・キャンプ2024 全国大会 LT

Slide 2

Slide 2 text

2 Agenda • モデル検査とは? • 文献案内

Slide 3

Slide 3 text

3 モデル検査とは? プログラムが仕様を満たしてることを自動的に検証する技術

Slide 4

Slide 4 text

4 モデル検査とは? 例) 2つのスレッドp, qが一つの共有変数xを読み書きする While (true) { x = x + 1; x = x – 1; } 仕様: 𝐴𝐺(𝑥 < 2) 全て(All)の実行パスで常に(Globally) x < 2が成り立つ

Slide 5

Slide 5 text

5 モデル検査とは? 例) 2つのスレッドp, qが一つの共有変数xを読み書きする While (true) { x = x + 1; x = x – 1; } 仕様: 𝐴𝐺(𝑥 < 2) 全て(All)の実行パスで常に(Globally) x < 2が成り立つ

Slide 6

Slide 6 text

6 モデル検査とは? 例) 2つのスレッドp, qが一つの共有変数xを読み書きする 仕様: 𝐴𝐺(𝑥 < 2) 全て(All)の実行パスで常に(Globally) x < 2が成り立つ While (true) { lock(“mutex”) x = x + 1; x = x – 1; unlock(“mutex”) }

Slide 7

Slide 7 text

7 モデル検査とは? 例) 2つのスレッドp, qが一つの共有変数xを読み書きする 仕様: 𝐴𝐺(𝑥 < 2) 全て(All)の実行パスで常に(Globally) x < 2が成り立つ While (true) { lock(“mutex”) x = x + 1; x = x – 1; unlock(“mutex”) }

Slide 8

Slide 8 text

8 モデル検査とは? モデル検査器 プログラム記述 + 仕様 Ok 反例

Slide 9

Slide 9 text

9 Agenda • モデル検査とは? • 文献案内

Slide 10

Slide 10 text

10 文献案内 • TLA+についての本 • 様々なシステムをモデル検査 で検証する(例: MapReduce) • とりあえず使ってみたい人向け

Slide 11

Slide 11 text

11 文献案内 • 並行計算、分散システム + モデル検査に関する本 • SPINを使う

Slide 12

Slide 12 text

12 文献案内 • モデル検査の理論の本 • 理論を知りたい人向け

Slide 13

Slide 13 text

13 文献案内 • モデル検査器の実装に関する本 • 実装してみたい人向け https://www.youtube.com/live/96u4dBAOzao?t=9802s

Slide 14

Slide 14 text

14 まとめ • 形式手法のモチベーションは「ある種のバグが無いことを理論的に保証する」こと • 数理論理学 (論理学、計算論 など) と深いつながりがある、理論的にも奥が深い分野 形式手法に入門しよう!!