Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
次元型に基づくループ不変条件自動生成(Synthesizing Loop Invariants...
Search
KINOSHITA Minoru
February 15, 2016
Research
0
410
次元型に基づくループ不変条件自動生成(Synthesizing Loop Invariants via Dimension Types)
京都大学情報学研究科通信情報システム専攻平成27年度修士論文公聴会で発表
KINOSHITA Minoru
February 15, 2016
Tweet
Share
More Decks by KINOSHITA Minoru
See All by KINOSHITA Minoru
AWS CodeBuildを使ったCI環境の構築
krtx
2
810
クロージャについて
krtx
0
840
Automatic Synthesis of Combiners in the MapReduce Framework -- An Approach with Right Inverse
krtx
0
40
Other Decks in Research
See All in Research
研究の進め方 ランダムネスとの付き合い方について
joisino
PRO
55
19k
外積やロドリゲスの回転公式を利用した点群の回転
kentaitakura
1
650
Language is primarily a tool for communication rather than thought
ryou0634
4
740
Weekly AI Agents News! 9月号 論文のアーカイブ
masatoto
1
120
Geospecific View Generation - Geometry-Context Aware High-resolution Ground View Inference from Satellite Views
satai
1
100
多様かつ継続的に変化する環境に適応する情報システム/thesis-defense-presentation
monochromegane
1
530
ミニ四駆AI用制御装置の事例紹介
aks3g
0
160
[依頼講演] 適応的実験計画法に基づく効率的無線システム設計
k_sato
0
130
FOSS4G 山陰 Meetup 2024@砂丘 はじめの挨拶
wata909
1
110
Composed image retrieval for remote sensing
satai
1
100
Weekly AI Agents News! 8月号 プロダクト/ニュースのアーカイブ
masatoto
1
190
データサイエンティストをめぐる環境の違い 2024年版〈一般ビジネスパーソン調査の国際比較〉
datascientistsociety
PRO
0
580
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Speed Design
sergeychernyshev
24
610
Producing Creativity
orderedlist
PRO
341
39k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Statistics for Hackers
jakevdp
796
220k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
How STYLIGHT went responsive
nonsquared
95
5.2k
KATA
mclloyd
29
14k
Making Projects Easy
brettharned
115
5.9k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
Six Lessons from altMBA
skipperchong
27
3.5k
Transcript
次元型に基づくループ不変条件の自動生成 樹下稔 五十嵐・末永研究室 平成 28 年 2 月 15 日
1 / 29
ホーア論理 [Hoare 1969] プログラムの挙動を形式的に検証するための論理体系 プログラムの各要素に対応する推論規則を用いてプログラム の性質を証明 ホーア三つ組 {A}c{B} 事前条件 A
が成り立つときにプログラム c を実行すると 事後条件 B が成り立つ ex. {true}y := N{y = N} 2 / 29
ホーア論理での検証例 次のホーア三つ組を証明したい {true} x := N; y := 0; while
x = 0 do x := x − 1; y := y + 1 end {y = N} 3 / 29
ホーア論理での検証例 次のホーア三つ組を証明したい ループ不変条件が必要 {true} x := N; y := 0;
{x = N ∧ y = 0} {x + y = N} while x = 0 do {x + y = N} // ループの本体で不変に成立 x := x − 1; y := y + 1 {x + y = N} end {x + y = N ∧ x = 0} {y = N} 4 / 29
テンプレート法 [Colön ら 2003, Sankaranarayanan ら 2004, Müller-Olm ら 2003,
Cachera ら 2014] ループ不変条件を生成するための手法 1. 多項式の次数を指定し,テンプレート p = 0 を生成 2. テンプレートがループ不変条件となるための制約を求める 3. 制約を解く 5 / 29
テンプレート法の例 1 次のテンプレートとして px + qy + rN + s
= 0 を 生成 不変条件となるためには以 下が必要 p = q r = −p s = 0 p(x + y − N) = 0 がループ 不変条件として得られる {true} x := N; y := 0; while x = 0 do x := x − 1; y := y + 1 end {y = N} 6 / 29
テンプレート法の欠点 テンプレートの次数に対し てスケールしない 4 次のループ不変条件 を求めるためには 209 個の単項式をもつテン プレートが必要 有用なループ不変条件に適
用できていない v − a は毎回 1 − ρ 倍される while ∗ do x v t := x + v v + a − ρv t + end 空気抵抗のある等加速度運動を シミュレートするプログラム 7 / 29
本研究の内容 1. テンプレートサイズの削減手法の提案 次元型 [Kennedy 1994] を用いる 2. 固有値法の提案 より一般的なループ不変条件を見つけることができる
3. 実験によって有用性を確認 8 / 29
プログラム例 以下のプログラムを caccel とし,以降の説明で用いる x 質点の位置 v 質点の速度 t 時間
a 質点の加速度 離散化の間隔 ρ 抵抗 while ∗ do x v t := x + v v + a − ρv t + end 空気抵抗のある等加速度運動を シミュレートするプログラム 9 / 29
目次 次元型を用いたテンプレートの削減 固有値法 実験 まとめ 10 / 29
目次 次元型を用いたテンプレートの削減 固有値法 実験 まとめ 11 / 29
アイデア 物理次元 を考慮に入れてテンプレートを作成する 次数 2 の T1 = p0 +
p1 + p2 2 + p4a + p5a2 + p6t + p7 t + p8at + p9t2 + p10v + p11 v + p12av + p13tv + p14v2 + p15x + p16 x + p17ax + p18tx + p19vx + p20x2 + p21ρ + p22 ρ + p23aρ + p24tρ + p25vρ + p26xρ + p27ρ2 という一般的なテン プレートの代わりに T2 = p0v + p1a + p2at + p3xρ というテンプレートを生成 する 12 / 29
アイデア 物理次元 を考慮に入れてテンプレートを作成する 次数 2 の T1 = p0 +
p1 + p2 2 + p4a + p5a2 + p6t + p7 t + p8at + p9t2 + p10v + p11 v + p12av + p13tv + p14v2 + p15x + p16 x + p17ax + p18tx + p19vx + p20x2 + p21ρ + p22 ρ + p23aρ + p24tρ + p25vρ + p26xρ + p27ρ2 という一般的なテン プレートの代わりに T2 = p0v + p1a + p2at + p3xρ というテンプレートを生成 する 次数と「物理次元」を指定してテンプレートを生成する 12 / 29
次元型 [Kennedy 1994] 型として物理次元を与える型システム 型は自動で推論可能 caccel には以下の型が推論さ れる x :
L v : LT−1 t : T a : LT−2 : T ρ : T−1 L は長さの物理次元,T は時間 の物理次元 while ∗ do x v t := x + v v + a − ρv t + end 13 / 29
テンプレート生成のアルゴリズム 入力 次数 n,次元型 τ 出力 型が τ で次数が n
以下のテンプレート Example caccel の次数 2,次元型 LT−1 のテンプレートは p0v + p1a + p2at + p3xρ 14 / 29
同じ物理次元をもつ単項式の列挙 LT−1 と同じ物理次元をもつ単項式を列挙したい 任意の単項式は非負整数 c0, · · · , c5
を用いて xc0 vc1 tc2 ac3 c4 ρc5 と表される xc0 vc1 tc2 ac3 c4 ρc5 の物理次元は Lc0+c1+c3 T−c1+c2−2c3+c4−c5 c0 + c1 + c3 = 1 かつ −c1 + c2 − 2c3 + c4 − c5 = −1 を解けば よい 次数の制約と合わせて v, at, a , xρ が得られる 15 / 29
目次 次元型を用いたテンプレートの削減 固有値法 実験 まとめ 16 / 29
固有値法 より一般的なループ不変条件を見つけるための提案手法 同時代入を一つだけもつプログラムを対象 ループ不変条件生成を行列の固有値問題に帰着 λ-不変多項式 を生成する 毎回の代入で λ 倍される多項式 テンプレート法に基づく
次元型を適用できる 17 / 29
固有値法のアルゴリズム (1/2) caccel の λ-不変多項式を求める 1. テンプレート T(x, v, t)
を定める T(x, v, t) = p0v + p1a + p2at + p3xρ 2. λT(x, v, t) = T(x + v , v + a − ρv , t + ) であればよく, λT(x, v, t) = T(x + v , v + a − ρv , t + ) ⇐⇒ λ(p0v + p1a + p2at + p3xρ)− ((p0(1 − ρ ) + p3ρ )v + (p0 + p1 + p2)a + p2at + p3xρ) = 0 ⇐⇒ λ p0 p1 p2 p3 = 1 − ρ 0 0 ρ 1 1 1 0 0 0 1 0 0 0 0 1 p0 p1 p2 p3 3. 下線部の行列の固有値問題を解くとパラメータの値が求まる 18 / 29
固有値法のアルゴリズム (2/2) 以下の λ-不変多項式が求まる 固有値 1,固有ベクトル (p0, p1, p2, p3)
= (1, 0, −1, 1) 1-不変多項式 v − at + xρ に対応 固有値 1,固有ベクトル (p0, p1, p2, p3) = (0, 1, 0, 0) 1-不変多項式 a に対応 固有値 1 − ρ ,固有ベクトル (p0, p1, p2, p3) = (−ρ , 1, 0, 0) (1 − ρ )-不変多項式 −ρ v + a に対応 19 / 29
次元型を用いた固有値法の性質 固有値法について以下の性質を証明した 健全性 固有値法によって得られる多項式は必ず λ-不変多項式 相対完全性 全ての λ-不変多項式が求まる 20 /
29
目次 次元型を用いたテンプレートの削減 固有値法 実験 まとめ 21 / 29
実験 (固有値法の有用性の確認) いくつかのプログラムに対して固有値法を適用し,有用性を確認 した (時間は秒) プログラム λ 多項式 |B|/|Bn| 時間
(B) 時間 (Bn) Trig 1 + 2 c2 + s2 3/20 0.155 0.387 Harmonic 1 + 2k v2 + kx2 2/69 0.119 39.4 caccel 1 ρx + gt + v 8/83 0.351 8.58 1 − ρ g2t2+ 2gtv+ v2+ 2gtxρ+ 2vxρ+ x2ρ2 13/209 0.556 134 Trig (s, c) := (s + c , c − s ) Harmonic (x, v) := (x + v , v − kx ) 22 / 29
実験 (スケーラビリティ)(1/2) スケーラビリティの実証のため,以下のプログラムを用いて実験 した while ∗ do sum x :=
sum + xn x + 1 end n + 1 次のテンプレートが必要になる n = 3 のとき,x4 − 2x3 + x2 − 4sum は不変 23 / 29
実験 (スケーラビリティ)(2/2) n 次元型を 次元型を 用いた場合 (秒) 用いない場合 (秒) 1
2.05 × 10−2 1.38 × 10−2 2 2.02 × 10−2 4.42 × 10−2 4 2.41 × 10−2 2.40 × 10−1 8 3.80 × 10−2 2.55 16 9.00 × 10−2 8.40 × 10 32 3.39 × 10−1 ≥ 6.00 × 102 64 1.89 ≥ 6.00 × 102 128 8.70 ≥ 6.00 × 102 24 / 29
実験 (既存手法への次元型の適用) [Cachera ら 2014] のテンプレート法によるループ不変条件生成手 法に対して次元型を適用した場合とそうでない場合を比較した 25 / 29
実験 (1/3) 速くなった プログラム Fastind 法 Fastind 法+次元型 tsol |B|
tinf tsol tinf + tsol |B| dijkstra 9.29 21 0.456 8.83 9.29 21 divbin 0.674 21 0.388 0.362 0.750 8 freire1 0.267 10 0.252 0.258 0.510 10 freire2 2.51 35 0.463 2.60 3.06 35 cohencu 1.74 35 0.434 0.668 1.10 20 fermat 0.669 21 0.583 0.669 1.25 21 wensley 104 21 0.436 28.5 28.9 9 euclidex 1.85 45 1.55 1.39 2.94 36 lcm 0.811 28 0.513 0.538 1.05 21 prod4 31.6 84 0.149 2.78 2.93 35 knuth 137 220 4.59 136 141 220 mannadiv 0.749 21 0.515 0.700 1.22 18 26 / 29
実験 (2/3) 単項式の個数は削減できたが,実行時間は遅くなった プログラム Fastind 法 Fastind 法+次元型 tsol |B|
tinf tsol tinf + tsol |B| dijkstra 9.29 21 0.456 8.83 9.29 21 divbin 0.674 21 0.388 0.362 0.750 8 freire1 0.267 10 0.252 0.258 0.510 10 freire2 2.51 35 0.463 2.60 3.06 35 cohencu 1.74 35 0.434 0.668 1.10 20 fermat 0.669 21 0.583 0.669 1.25 21 wensley 104 21 0.436 28.5 28.9 9 euclidex 1.85 45 1.55 1.39 2.94 36 lcm 0.811 28 0.513 0.538 1.05 21 prod4 31.6 84 0.149 2.78 2.93 35 knuth 137 220 4.59 136 141 220 mannadiv 0.749 21 0.515 0.700 1.22 18 27 / 29
実験 (3/3) 単項式の個数が変わらず,時間も遅くなったか変わらなかった プログラム Fastind 法 Fastind 法+次元型 tsol |B|
tinf tsol tinf + tsol |B| dijkstra 9.29 21 0.456 8.83 9.29 21 divbin 0.674 21 0.388 0.362 0.750 8 freire1 0.267 10 0.252 0.258 0.510 10 freire2 2.51 35 0.463 2.60 3.06 35 cohencu 1.74 35 0.434 0.668 1.10 20 fermat 0.669 21 0.583 0.669 1.25 21 wensley 104 21 0.436 28.5 28.9 9 euclidex 1.85 45 1.55 1.39 2.94 36 lcm 0.811 28 0.513 0.538 1.05 21 prod4 31.6 84 0.149 2.78 2.93 35 knuth 137 220 4.59 136 141 220 mannadiv 0.749 21 0.515 0.700 1.22 18 時間はミリ秒 28 / 29
まとめ 次元型を使ったテンプレート法を提案 高い次数のテンプレートでもスケールする 固有値法を提案 新しいループ不変条件生成手法 次元型のもとで健全かつ相対完全 既存手法に対して次元型を適用 性能が向上 今後の課題 固有値法の一般のプログラムへの拡張
ループ不変条件の次元を自動で与える よりよい次元型推論アルゴリズムの考案 29 / 29