Skip to main content
QUICK REVIEW

[論文レビュー] Compositional Safety Verification with Max-SMT

Marc Brockschmidt, Daniel Larraz|RECERCAT (Consorci de Serveis Universitaris de Catalunya)|Jul 14, 2015
Formal Methods in Verification参考文献 22被引用数 6
ひとこと要約

本稿では、Max-SMTを用いて条件付き帰納的不変条件を合成するコンpositionalな安全検証フレームワークを提示する。この不変条件は、プログラムの安全を保証する前提条件として機能する。失敗した証明を新しい狭小化技術を用いて反復的に精製し、前提条件を下位から上位へ伝搬することで、スケーラブルで正確かつ分散可能な順次プログラムの検証を可能にする。数値ベンチマークにおいて、速度と証明カバレッジの両面で既存のツールを上回る性能を発揮する。

ABSTRACT

We present an automated compositional program verification technique for safety properties based on conditional inductive invariants. For a given program part (e.g., a single loop) and a postcondition $φ$, we show how to, using a Max-SMT solver, an inductive invariant together with a precondition can be synthesized so that the precondition ensures the validity of the invariant and that the invariant implies $φ$. From this, we build a bottom-up program verification framework that propagates preconditions of small program parts as postconditions for preceding program parts. The method recovers from failures to prove the validity of a precondition, using the obtained intermediate results to restrict the search space for further proof attempts. As only small program parts need to be handled at a time, our method is scalable and distributable. The derived conditions can be viewed as implicit contracts between different parts of the program, and thus enable an incremental program analysis.

研究の動機と目的

  • 大規模なソフトウェアシステムにおける自動プログラム検証のスケーラビリティと正確性の課題に対処すること。
  • 証明の合成に適した関連する中間的仮定(条件付き不変条件)を合成することで、コンポジショナルな推論を可能にすること。
  • 証明の失敗を、中間結果を用いて精製の方向性を導くことで回復し、探索空間を縮小し収束を向上させること。
  • プログラムコンポーネント間で前提条件を終了条件として伝搬させることで、インクリメンタルかつ分散可能な解析を支援すること。
  • 数値的かつ順次プログラムにおいて、既存のツールを上回る実用的でスケーラブルな検証フレームワークの開発

提案手法

  • 条件付き帰納的不変条件の合成において、硬い制約(整合性)と柔らかい制約(有用性)を同時に処理するMax-SMTソルバを用いる。
  • 前提条件が成立しない場合に、欠落している証明要素に焦点を当てるための新しい狭小化変換を適用し、反復的精製を促進する。
  • 下位から上位への解析戦略を採用し、プログラム部の終了条件をその直前の部の前提条件として扱うことで、インクリメンタルな検証を可能にする。
  • 失敗した証明試行のメモ化を導入し、重複する探索を回避し、反復的精製における収束を加速する。
  • 不変条件の合成タスクをプログラムコンポーネントに分散させることで並列実行をサポートし、マルチコアシステムで性能向上を確認した。
  • 手続き呼び出しにはインライン化を適用し、テンプレートベースの事前/事後条件合成を用いて再帰関数への対応を計画している。

実験結果

リサーチクエスチョン

  • RQ1どのようにして、安全な性質の証明に適した、正確でコンポジショナルな不変条件を自動で合成できるか?
  • RQ2探索空間を縮小し収束を加速させるために、証明の失敗をどのように回復できるか?
  • RQ3Max-SMTソルビングは、順次プログラムの不変条件合成において、整合性と有用性のバランスを効果的にとれるか?
  • RQ4実際のベンチマークにおいて、コンポジショナルで下位から上位への検証フレームワークは、既存のツールと比較してどのようにスケーリングし、性能を発揮するか?
  • RQ5並列処理とメモ化は、検証プロセスの性能と完全性にどのような影響を与えるか?

主な発見

  • HOLA-BENCHSベンチマークセットにおいて、VeryMax-Parは45件の安全プロパティを検証し、CPAchecker(33件)、SeaHorn(32件)、HOLA(43件)を上回った。合計実行時間は151.21秒であった。
  • 6,452件の数値的安全性問題からなるNR-BENCHSの大きなセットにおいて、VeryMax-Parは6,452件中6,106件の仮定を検証し、比較対象のすべてのツールを上回る証明カバレッジを達成した。
  • 4コア環境において、VeryMaxの並列版は順次版の約2倍の速度を示し、効果的な並列処理が実証された。
  • VeryMaxの順次版は、1問題あたり平均2.8回の再帰的または狭小化された証明試行を要し、最大で16回に達した。これは中程度の反復オーバーヘッドであることを示している。
  • 失敗した証明試行のメモ化は約1/3のケースに適用され、中間結果の再利用により冗長な計算を効果的に回避していることが示された。
  • NR-BENCHSにおいて、VeryMax-Parの合計実行時間は23,668.15秒であり、CPAcheckerの735,336.82秒と比べて著しく速く、より多くの問題を解決した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。