米澤研究室 全体ミーティング 2010/07/07 M2 渡邊裕貴.

Slides:



Advertisements
Similar presentations
Ruth Onn, Alfred Bruckstein (Int J Comp Vision 1990)
Advertisements

ネットワーク理論講義補助資料 Text. 組合せ最適化とアルゴリズム 4.5 節 主・双対法 pp
4章 制御の流れ-3.
「Postの対応問題」 の決定不能性の証明
第11回 整列 ~ シェルソート,クイックソート ~
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
全体ミーティング (4/25) 村田雅之.
1. アルゴリズムと計算量.
全体ミーティング (6/13) 村田雅之.
Webサービスポリシー概要 (WS-Policy, WS-PolicyAttachment, WS-SecurityPolicy)
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
Natural Semantics 実行過程の、最初と最後の状態(state)の関係を考える。
小型デバイスからのデータアクセス 情報処理系論 第5回.
構造体.
米澤研究室 全体ミーティング 2010/12/22 M2 渡邊裕貴.
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
ユースケース オブジェクト指向の要求分析のためのモデル。 スウェーデンのイヴァー・ヤコブソンが1990年代前半に開発。
Solving Shape-Analysis Problems in Languages with Destructive Updating
第11回 整列 ~ シェルソート,クイックソート ~
TAL : Typed Assembly Language について
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
寄せられた質問: 演習問題について この講義の範囲に含まれる適切な演習問題が載っている参考書がありますか? できれば解答や解説が付いているものがあると良いのですが… 第3回の授業の中で、演習問題に取り組む方法を説明します.
不完全な知識 不完全な知識に基づく問題解決 フレーム問題 制約条件記述問題 非単調推論 極小限定 常識の定式化 並列極小限定.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論プログラミング言語論 プログラムの意味論 水野嘉明
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
C言語でスレッド (Pthread) 2007年1月11日 海谷 治彦.
暗黙的に型付けされる構造体の Java言語への導入
帰納変数 iが基本帰納変数 変数iに対して、 i := i±c という形の代入が一つのみ jがiに対する帰納変数
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
第二回 時制論理とリアルタイムリソース.
A Provably Sound TAL for Back-end Optimization について
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
依存型で型付けされた 副作用のある関数のための 型保存コンパイラ
25. Randomized Algorithms
計算量理論輪講 chap5-3 M1 高井唯史.
Structural operational semantics
Verifying Safety Property of Concurrent Java Programs Using 3-Valued Logic (popl’01) Eran Yahave Available at     or.
書き換え型プログラムの生成・検証 研究課題:適切な実行戦略を効率よく探索する、 より自動化された手続きの実現 書き換え型プログラム
 型推論3(MLの多相型).
構造体と共用体.
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
Selfish Routing 4章前半 岡本 和也.
全体ミーティング (5/23) 村田雅之.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
Type Systems and Programming Languages ; chapter 13 “Reference”
第7回  命題論理.
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
矛盾した知識 デフォルト推論 仮説を用いた推論 準無矛盾推論 デフォルト規則 デフォルト理論の拡張 → デフォルト証明 シナリオ
ヒープソート.
全体ミーティング (12/15) 村田雅之.
発表者: 稲葉 一浩 複雑ネットワーク・地図グラフ セミナー 2017/1/19
SMP/マルチコアに対応した 型付きアセンブリ言語
全体ミーティング(6/3) 修士2年 飯塚 大輔.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
データ構造と アルゴリズムI 第三回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
全体ミーティング(9/15) 村田雅之.
数理論理学 最終回 茨城大学工学部情報工学科 佐々木 稔.
Static Enforcement of Security with Types
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
練習問題.
プログラミング 2 静的変数.
Generating Obstacle Conditions for Requirements Completeness
Presentation transcript:

米澤研究室 全体ミーティング 2010/07/07 M2 渡邊裕貴

今日の内容 “Concurrent Abstract Predicates” Thomas Dinsdale-Young, Mike Dodds, Philippa Gardner, Matthew Parkinson, and Viktor Vafeiadis 24th European Conference on Object-Oriented Programming (ECOOP), 2010 http://www.cl.cam.ac.uk/~md466/publications/ECOOP.10.concurrent_abstract_predicates.pdf

概要 Separation logic に基づく仕様検証 仕様の抽象化 共有データの仕様記述 モジュール単位での検証を容易に マルチスレッドプログラムの検証

Separation Logic (例) void setzero(int *p) { { p ↦ - } *p = 0; { p ↦ 0 } } void main(void) { int *a = malloc(1); { a ↦ - } int *b = malloc(1); { a ↦ - ∗ b ↦ - } setzero(a); { a ↦ 0 ∗ b ↦ - } setzero(b); { a ↦ 0 ∗ b ↦ 0 } }

Abstract Predicates 例: ロックの (抽象的な) 仕様

プログラム 例: ロックの実装 Compare-and-swap を使う 山括弧はアトミックなオペレーションを表す

Interpretation of Abstract Predicates 実装と仕様を結び付ける「仕様の解釈」 実装法 (データ構造の種類など) に踏み込んだ仕様の記述

Shared Region Assertion 長方形で囲んだ式は共有データを表す 共有データに関する不変条件を表す データは他スレッドにより書き換えられるかもしれない それでも不変条件は常に満たされる r は複数のデータを区別するためのラベル

Environment I(r, x) は共有データに行える操作を規定する ここでは Lock と Unlock の二つの操作を規定 ⇝ は共有データの条件変化を規定 共有データの書き換えは、必ず規定された操作による

Permission Assertion […] は共有データに操作を行う権限を表す スレッドが操作 A を行える条件は 権限 [A]rπ がローカル (長方形の外) にある π > 0 Fractional permission

検証 π = 0 の場合、Lock 操作が不可能になってしまうので、0 < π <= 1 を仮定していると思われる 続く

Lock 操作

検証 Unlock 操作

Shared region 作成のために repartitioning 定理を利用 検証 Shared region 作成のために repartitioning 定理を利用

Self-Stability Abstract predicate が満たすべき条件: 他のスレッドが並行して操作を行っても abstract predicate の真偽は変わらない 他スレッドによる干渉を無視できる isLock, Locked の例で説明

Abstract Predicates 例: 集合の (抽象的な) 仕様 own(h, v) := in(h, v) ∨ out(h, v) in(h, v), out(h, v) は集合 h に要素 v を追加・削除する権限も含んでいる

一つの集合 h に対し異なる値 v1, v2 の削除を並列実行 分割と並列実行 一つの集合 h に対し異なる値 v1, v2 の削除を並列実行

プログラム ロックとスレッドアンセーフな集合を用いた スレッドセーフな集合の実装 モジュールを組み合わせて別のモジュールを作る例

Interpretation in, out の解釈の中で isLock, Locked を用いている

Modularity 集合の実装 (と interpretation) では ロックの abstract predicate しか使っていない ロックの実装の中身を気にせず 集合を実装できる ロックの実装を他のものと取り換えられる

検証

ここまでのまとめ ロックの仕様を与えた それを満たす実装と解釈を与えた 集合の仕様を与えた ロックを使った実装と解釈を与えた

Proof System 基本的な judgment の形 Δ; Γ ⊢ {P} C {Q} where 停止性は保証しない (partial correctness)

導出規則 (抜粋) “Δ |- stable(P, Q)” が全てのルールに暗黙的に仮定される。

事前条件 P の表わすヒープの一部 p が q に変化するとき 全体として事後条件 Q が成り立つ Repartitioning Definition: Δ ⊢ P ⇛{p}{q} Q holds iff ∀δ ∈ ⟦Δ⟧, ∀i, ∀w1 ∈ ⟦P⟧δ,i, ∃h1 ∈ ⟦p⟧i, ∃h, h1 ⊕ h = ⌊⌊w1⌋⌋ ∀h2 ∈ ⟦q⟧i, ∃w2 ∈ ⟦Q⟧δ,i, h2 ⊕ h = ⌊⌊w2⌋⌋ (w1, w2) ∈ Ĝδ Ĝδ はスレッドが可能なアップデートを定義する 事前条件 P の表わすヒープの一部 p が q に変化するとき 全体として事後条件 Q が成り立つ

Soundness Δ; Γ ⊢ {P} C {Q} ならば Δ; Γ ⊨ {P} C {Q} すなわち C, w, η, δ, i, Q safen は 最低 n ステップはプログラムの正しい実行が保証されることを表す

まとめ Concurrent なプログラムにおいて モジュールの仕様を抽象化して検証する システムを提案した