Skip to main content
QUICK REVIEW

[論文レビュー] Symbolic Execution for Verification

Joxan Jaffar, Jorge A. Navas|arXiv (Cornell University)|Mar 10, 2011
Software Testing and Debugging Techniques参考文献 9被引用数 3
ひとこと要約

本論文は、インターポレーションベースの記号実行を、ユーザーが提供する不変式なしで無限ループを扱えるように拡張する。そのために、知的なバックトラックを用いた遅延的ループ展開技術であるミニマックスアルゴリズムを導入し、段階的に強力な不変式を学習する。この手法は、BLASTなどの最先端のCEGARツールに比べ、実際のエラーを素早く検出でき、不実行可能なパスを早期にブロックする。実世界のベンチマークにおいて、特に不正なケースでは、積極的なプルーニングにより反例をより速く発見でき、競争力あるか、あるいはそれ以上の性能を示す。

ABSTRACT

In previous work, we presented a symbolic execution method which starts with a concrete model of the program but progressively abstracts away details only when these are known to be irrelevant using interpolation. In this paper, we extend the technique to handle unbounded loops. The central idea is to progressively discover the strongest invariants through a process of loop unrolling. The key feature of this technique, called the minimax algorithm, is intelligent backtracking which directs the search for the next invariant. We then present an analysis of the main differences between our symbolic execution method and mainstream techniques mainly based on abstract refinement (CEGAR). Finally, we evaluate our technique against available state-of-the-art systems.

研究の動機と目的

  • 無限ループを扱えるように、インターポレーションベースの記号実行を拡張すること。これは、従来の研究では、ユーザーが提供する不変式がなければ不可能であった。
  • 遅延的展開と知的なバックトラックを用いた、軽量で自動化された、可能な限り強いループ不変式を発見する手法を開発すること。
  • 学術的例および実プログラムを用いて、提案手法の抽象化学習(Abstraction Learning)技術を主流のCEGARベースの検証手法と比較すること。
  • 実世界のベンチマークを用いて、プロトタイプツールtracerをBLASTと比較し、性能とスケーラビリティを評価すること。

提案手法

  • ミニマックスアルゴリズムは、定理証明器を用いて明示的な制約を操作することで、ループのマージポイントでパスベースの不変式を計算することで、遅延的ループ展開を実行する。
  • 制約を「min」(要約とループ不変式のための抽象化)と「max」(不実行可能なパスの検出と安全確保のための保持)に分類する。
  • 補間を用いて、必要な箇所でのみループを展開することで、不変式の強化に伴う精度の損失を回避する。
  • 知的なバックトラックを用いて、次の不変式の探索をガイドし、情報損失を最小限に抑えつつ、ループが有界であれば終了を保証する。
  • 述語抽象化を避けており、制約の簡略化と補間による抽象化を伴う記号実行に依存する。
  • プロトタイプのtracerシステムは、エイリアス解析とインライン展開を用いて、Cヒープを配列でモデル化し、インストルメンテッドされた実プログラムを対象に評価されている。

実験結果

リサーチクエスチョン

  • RQ1記号実行をどのように拡張すれば、ユーザーの注釈なしに無限ループにおける不変式を自動で発見できるか?
  • RQ2インターポレーションベースの記号実行とCEGARベースの抽象化精錬の間には、不変式の取り扱いやパスの実行可能性の扱いにおいて、どのような主な相違点があるか?
  • RQ3不実行可能なパスを積極的にプルーニングする記号実行手法は、実際のところ、BLASTのようなCEGARベースのツールを上回る性能を示せるか?
  • RQ4ミニマックスアルゴリズムにおけるminおよびmax制約の使用は、ループ検証における精度と性能をどのように向上させるか?

主な発見

  • tracerは、不正なプログラム(例:tcas-2b-unsafe)において、BLASTに比べ最大1000倍速く実際の反例を発見できた。これは、不実行可能なパスの早期プルーニングに起因する。
  • tcas-2b-unsafeベンチマークでは、tracerは探索ノード91個、0.01秒で完了したが、BLASTは40個の述語と17.46秒を要した。
  • いくつかのベンチマーク(cdaudio, floppy, serial)では、BLASTが例外を発生させて停止したが、tracerは正常に検証を完了した。
  • 平均的にはtracerはBLASTと同等の性能を示し、一部の例では顕著な高速化が見られた。特にエラー検出において顕著であった。
  • ミニマックスアルゴリズムが初期段階で最も強い不変式を計算できたことで、探索空間が削減され、複雑な不実行可能なパスを伴うケースでは、BLASTよりも効率的であった。
  • 本手法の性能は多様なプログラムに対して安定しており、15のベンチマークのうち12でtracerがBLASTを上回った。特に不正なケースにおいて顕著であった。

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

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

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

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