Successfully reported this slideshow.

CSPによるコンカレントシステムの検証(1)

2,786 views

Published on

Published in: Technology
  • Be the first to comment

CSPによるコンカレントシステムの検証(1)

  1. 1. CSPによるコンカレントシステ ムの検証(1) 2013年7月3日 大阪大学 山形賴之
  2. 2. 自己紹介 • 独立行政法人 産業技術総合研究所 • セキュアシステム研究部門 主任研究員 所属 • 形式検証の開発現場への応用 • 証明論も少し • 以前はλ計算なども 研究分野 • yoriyuki.yamagata@aist.go.jp • http://staff.aist.go.jp/yoriyuki.yamagata/ 連絡先
  3. 3. 講義概要(今日) 形式検証とは? プロセス代数、そしてCSPとは? CSP紹介
  4. 4. 形式検証 とは? 第1章
  5. 5. コンカレントシステムの難しさ • 複数プロセスの相互作用 タイミングにより挙動が違う • 特定のシナリオのみテストできる すべてのタイミングをテストできない 再現しないバグetc…
  6. 6. Internet Watch 2004/02/05
  7. 7. Mars Pathfinder
  8. 8. 優先度逆転現象優先度 高 低 セマ フォ bc_shed bc_dist 気象観測プロセス
  9. 9. 形式検証 システムの正しさを完全に保 証 • 一定の仮定はあり 自動~半自動 数学的な手法を使う テスト 特定のシナリオのみ考慮する 自動化可能 経験と勘
  10. 10. プロセス代数 • 代数的な計算が可能な 並行プロセスの表記法 • SKIP;P = P モデル検査 • システムの全状態 を探索し正当性を 示す • SPIN、SMV… 定理証明 • 形式論理を利用し てシステムの性質 を証明する • Coq、Isabelle…
  11. 11. プロセス代数、そしてCSPと は? 第2章
  12. 12. 並列システムのモデル マルチスレッドプログラミング プロセス代数(CSP,CSS,π計算…) アクターモデル ペトリネット モデル検査器独自のモデリング言語(Promela、SMV)
  13. 13. プロセス代数 プロセス代数は、計算機科学において並行システムを形式 的にモデリングする各種手法の総称 • 独立したプロセス間の相互作用を、共有変数の更新では なく通信(メッセージパッシング)として表現する。 • プロセスやシステムの記述に少数のプリミティブとそれ らプリミティブを組み合わせた演算子を使う。 • プロセス演算子の代数学的規則を定義し、プロセスの表 現を方程式を解くように操作可能とする。 (Wikipediaより)
  14. 14. なぜ「代数」? プロセスの表記で代数的な計算が可能 • 例: • SKIP;P = P = P;SKIP (SKIPは単位元) • P=P ’かつ Q=Q’ ならば P||Q=P’||Q’ 式変形により、正当性の証明ができる
  15. 15. プロセス代数 システム CCS CSP π計算 アンビエント 計算 考案者 Milner Hoare Milner,Parrow, Walker Cardelli & Gordon 年代 1980年代初め 1980年代初め 1992 1998 構成要素 チャンネル イベント チャンネル アンビエント 意味論 操作的 表示的 代数的 操作的 操作的 操作的 特徴 計算はチェン ネル上の通信 計算はイベン トの列 検証ツール (FDR,PAT) 動的トポロ ジー Mobility
  16. 16. CSP CSP Communicating Sequential Proccesses C.A.R Hoare (1978) 特徴 理論的には枯れ ている 広く使われてい るモデル検査 ツールがある FDR, PAT 実装 JCSP, Google Goなど
  17. 17. CSP紹介 第3章
  18. 18. イベント(名)
  19. 19. プロセス • プロセス – 一連のイベント列 • プロセスの表記 – アルファベット大文字+数字 • SKIP,STOP – パラメーター付きプロセス • P(x)…
  20. 20. プリミティブなプロセス • SKIP – なにもせず正常終了する • STOP – なにもせず異常終了する
  21. 21. プロセス定義(prefix) VendingMachine = coin → juice → STOP VendingMachine(自動販売機)とは 1. コインを受け取り (coin) 2. ジュースを排出し (juice) 3. 異常終了する (STOP) 多分ジュースの在庫がなくなった
  22. 22. coin juice STOP
  23. 23. 再帰的定義 VendingMachine = coin → juice → VendingMachine VendingMachine(自動販売機)とは 1. コインを受け取り(coin) 2. ジュースを排出し 3. 元に戻る(VendingMachine)
  24. 24. coin juice VendingMachine
  25. 25. 外部選択 VM = coin → (juice.orange → VM □ juice.apple → VM) VM(自動販売機)とは 1. コインを受け取り 2. オレンジまたはアップルジュースを排出 し 3. 元に戻る
  26. 26. coin juice.orange VM juice.apple
  27. 27. 内部選択 VM = coin → (juice.orange → VM ⊓ juice.apple → VM) VM(自動販売機)とは 1. コインを受け取り 2. オレンジまたはアップルジュースを排出 し 3. 元に戻る
  28. 28. 外部選択と内部選択の違い • プロセス外部が影響を及ぼせるかが違い – juice.orange → VM □ juice.apple → VM • 外部がオレンジかりんごか選べる – juice.orange → VM ⊓ juice.apple → VM • プロセス自身がオレンジかりんごか選ぶ
  29. 29. coin juice.orange VM juice.apple
  30. 30. 逐次合成 • P;Q (P, Q:プロセス) – Pが成功終了したのち、Qを実行する – Pが異常終了すれば、そのまま異常終了する
  31. 31. 並行合成
  32. 32. P Q A
  33. 33. 並行合成(例)
  34. 34. IN OUT sync in sync out
  35. 35. 並列合成と逐次合成
  36. 36. 略記
  37. 37. 隠蔽 X:イベントの集まり P:プロセス P\X PからイベントXを隠蔽して得られるプロセ ス
  38. 38. 隠蔽(例) CONC\{sync} = in → out → SKIP
  39. 39. 送受信 ch : チャンネル ch!v → P : chに値vを出力してからPを実行 ch?x→P(x) : chから値vを受け取りP(v)を 実行 実はプリミティブではない
  40. 40. 今日のまとめ 第4章
  41. 41. 今日のまとめ • コンカレントシステムを正しく作るのは 難しい • そこで形式検証 – 色々なやり方がある • CSPを取り上げ、その言語を紹介
  42. 42. 来週の予定 • モデル検査器PATを使って – CSPを使った並列システムのモデルを作り – 自動検証する

×