次元型に基づくループ不変条件自動生成(Synthesizing Loop Invariants via Dimension Types)

次元型に基づくループ不変条件自動生成(Synthesizing Loop Invariants via Dimension Types)

京都大学情報学研究科通信情報システム専攻平成27年度修士論文公聴会で発表

E4a2e149630d63b81292f6e4fddb7a3b?s=128

KINOSHITA Minoru

February 15, 2016
Tweet

Transcript

  1. 次元型に基づくループ不変条件の自動生成 樹下稔 五十嵐・末永研究室 平成 28 年 2 月 15 日

    1 / 29
  2. ホーア論理 [Hoare 1969] プログラムの挙動を形式的に検証するための論理体系 プログラムの各要素に対応する推論規則を用いてプログラム の性質を証明 ホーア三つ組 {A}c{B} 事前条件 A

    が成り立つときにプログラム c を実行すると 事後条件 B が成り立つ ex. {true}y := N{y = N} 2 / 29
  3. ホーア論理での検証例 次のホーア三つ組を証明したい {true} x := N; y := 0; while

    x = 0 do x := x − 1; y := y + 1 end {y = N} 3 / 29
  4. ホーア論理での検証例 次のホーア三つ組を証明したい ループ不変条件が必要 {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
  5. テンプレート法 [Colön ら 2003, Sankaranarayanan ら 2004, Müller-Olm ら 2003,

    Cachera ら 2014] ループ不変条件を生成するための手法 1. 多項式の次数を指定し,テンプレート p = 0 を生成 2. テンプレートがループ不変条件となるための制約を求める 3. 制約を解く 5 / 29
  6. テンプレート法の例 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
  7. テンプレート法の欠点 テンプレートの次数に対し てスケールしない 4 次のループ不変条件 を求めるためには 209 個の単項式をもつテン プレートが必要 有用なループ不変条件に適

    用できていない v − a は毎回 1 − ρ 倍される while ∗ do   x v t   :=   x + v v + a − ρv t +   end 空気抵抗のある等加速度運動を シミュレートするプログラム 7 / 29
  8. 本研究の内容 1. テンプレートサイズの削減手法の提案 次元型 [Kennedy 1994] を用いる 2. 固有値法の提案 より一般的なループ不変条件を見つけることができる

    3. 実験によって有用性を確認 8 / 29
  9. プログラム例 以下のプログラムを caccel とし,以降の説明で用いる x 質点の位置 v 質点の速度 t 時間

    a 質点の加速度 離散化の間隔 ρ 抵抗 while ∗ do   x v t   :=   x + v v + a − ρv t +   end 空気抵抗のある等加速度運動を シミュレートするプログラム 9 / 29
  10. 目次 次元型を用いたテンプレートの削減 固有値法 実験 まとめ 10 / 29

  11. 目次 次元型を用いたテンプレートの削減 固有値法 実験 まとめ 11 / 29

  12. アイデア 物理次元 を考慮に入れてテンプレートを作成する 次数 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
  13. アイデア 物理次元 を考慮に入れてテンプレートを作成する 次数 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
  14. 次元型 [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
  15. テンプレート生成のアルゴリズム 入力 次数 n,次元型 τ 出力 型が τ で次数が n

    以下のテンプレート Example caccel の次数 2,次元型 LT−1 のテンプレートは p0v + p1a + p2at + p3xρ 14 / 29
  16. 同じ物理次元をもつ単項式の列挙 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
  17. 目次 次元型を用いたテンプレートの削減 固有値法 実験 まとめ 16 / 29

  18. 固有値法 より一般的なループ不変条件を見つけるための提案手法 同時代入を一つだけもつプログラムを対象 ループ不変条件生成を行列の固有値問題に帰着 λ-不変多項式 を生成する 毎回の代入で λ 倍される多項式 テンプレート法に基づく

    次元型を適用できる 17 / 29
  19. 固有値法のアルゴリズム (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
  20. 固有値法のアルゴリズム (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
  21. 次元型を用いた固有値法の性質 固有値法について以下の性質を証明した 健全性 固有値法によって得られる多項式は必ず λ-不変多項式 相対完全性 全ての λ-不変多項式が求まる 20 /

    29
  22. 目次 次元型を用いたテンプレートの削減 固有値法 実験 まとめ 21 / 29

  23. 実験 (固有値法の有用性の確認) いくつかのプログラムに対して固有値法を適用し,有用性を確認 した (時間は秒) プログラム λ 多項式 |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
  24. 実験 (スケーラビリティ)(1/2) スケーラビリティの実証のため,以下のプログラムを用いて実験 した while ∗ do sum x :=

    sum + xn x + 1 end n + 1 次のテンプレートが必要になる n = 3 のとき,x4 − 2x3 + x2 − 4sum は不変 23 / 29
  25. 実験 (スケーラビリティ)(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
  26. 実験 (既存手法への次元型の適用) [Cachera ら 2014] のテンプレート法によるループ不変条件生成手 法に対して次元型を適用した場合とそうでない場合を比較した 25 / 29

  27. 実験 (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
  28. 実験 (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
  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
  30. まとめ 次元型を使ったテンプレート法を提案 高い次数のテンプレートでもスケールする 固有値法を提案 新しいループ不変条件生成手法 次元型のもとで健全かつ相対完全 既存手法に対して次元型を適用 性能が向上 今後の課題 固有値法の一般のプログラムへの拡張

    ループ不変条件の次元を自動で与える よりよい次元型推論アルゴリズムの考案 29 / 29