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
820
クロージャについて
krtx
0
840
Automatic Synthesis of Combiners in the MapReduce Framework -- An Approach with Right Inverse
krtx
0
41
Other Decks in Research
See All in Research
Weekly AI Agents News! 8月号 論文のアーカイブ
masatoto
1
220
VisFocus: Prompt-Guided Vision Encoders for OCR-Free Dense Document Understanding
sansan_randd
1
350
論文読み会 KDD2024 | Relevance meets Diversity: A User-Centric Framework for Knowledge Exploration through Recommendations
cocomoff
0
110
テキストマイニングことはじめー基本的な考え方からメディアディスコース研究への応用まで
langstat
1
150
Leveraging LLMs for Unsupervised Dense Retriever Ranking (SIGIR 2024)
kampersanda
2
250
2024/10/30 産総研AIセミナー発表資料
keisuke198619
1
380
Geospecific View Generation - Geometry-Context Aware High-resolution Ground View Inference from Satellite Views
satai
2
130
言語と数理の交差点:テキストの埋め込みと構造のモデル化 (IBIS 2024 チュートリアル)
yukiar
4
920
marukotenant01/tenant-20240916
marketing2024
0
620
移動ビッグデータに基づく地理情報の埋め込みベクトル化
tam1110
0
160
Human-Informed Machine Learning Models and Interactions
hiromu1996
2
520
FOSS4G 山陰 Meetup 2024@砂丘 はじめの挨拶
wata909
1
120
Featured
See All Featured
Building Your Own Lightsaber
phodgson
103
6.1k
The World Runs on Bad Software
bkeepers
PRO
65
11k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
It's Worth the Effort
3n
183
28k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Docker and Python
trallard
41
3.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
The Pragmatic Product Professional
lauravandoore
32
6.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
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