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
440
次元型に基づくループ不変条件自動生成(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
910
クロージャについて
krtx
0
860
Automatic Synthesis of Combiners in the MapReduce Framework -- An Approach with Right Inverse
krtx
0
44
Other Decks in Research
See All in Research
Adaptive fusion of multi-modal remote sensing data for optimal sub-field crop yield prediction
satai
3
190
チャッドローン:LLMによる画像認識を用いた自律型ドローンシステムの開発と実験 / ec75-morisaki
yumulab
1
360
研究テーマのデザインと研究遂行の方法論
hisashiishihara
5
1.3k
DeepSeek-R1の論文から読み解く背景技術
personabb
3
630
Agentic AIとMCPを利用したサービス作成入門
mickey_kubo
0
150
クラウドのテレメトリーシステム研究動向2025年
yuukit
3
930
時系列データに対する解釈可能な 決定木クラスタリング
mickey_kubo
0
490
ノンパラメトリック分布表現を用いた位置尤度場周辺化によるRTK-GNSSの整数アンビギュイティ推定
aoki_nosse
0
310
Computational OT #4 - Gradient flow and diffusion models
gpeyre
0
240
20250502_ABEJA_論文読み会_スライド
flatton
0
160
CARMUI-NET:自動運転車遠隔監視のためのバーチャル都市プラットフォームにおける通信品質変動機能の開発と評価 / UBI85
yumulab
0
230
在庫管理のための機械学習と最適化の融合
mickey_kubo
3
1k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
860
Statistics for Hackers
jakevdp
799
220k
Bash Introduction
62gerente
614
210k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
Building Adaptive Systems
keathley
42
2.6k
Git: the NoSQL Database
bkeepers
PRO
430
65k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
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