Skip to main content
QUICK REVIEW

[論文レビュー] Synthesis of Parametric Programs using Genetic Programming and Model Checking

Gal Katz, Doron Peled|arXiv (Cornell University)|Feb 27, 2014
Formal Methods in Verification参考文献 19被引用数 5
ひとこと要約

本稿では、遺伝的プログラミング(GP)とモデルチェックを組み合わせたハイブリッド手法を提示し、正しい設計を保証するパラメトリックプログラムを合成する。適合性評価には充足可能性チェックを、反例駆動型の改善には反例を用いることで、時刻論理仕様を満たすプログラムを進化させる。オーバーフローを伴わない平均計算や相互排他プロトコルといった複雑な問題に対し、正しく動作する解決策を成功裏に生成した。

ABSTRACT

Formal methods apply algorithms based on mathematical principles to enhance the reliability of systems. It would only be natural to try to progress from verification, model checking or testing a system against its formal specification into constructing it automatically. Classical algorithmic synthesis theory provides interesting algorithms but also alarming high complexity and undecidability results. The use of genetic programming, in combination with model checking and testing, provides a powerful heuristic to synthesize programs. The method is not completely automatic, as it is fine tuned by a user that sets up the specification and parameters. It also does not guarantee to always succeed and converge towards a solution that satisfies all the required properties. However, we applied it successfully on quite nontrivial examples and managed to find solutions to hard programming challenges, as well as to improve and to correct code. We describe here several versions of our method for synthesizing sequential and concurrent systems.

研究の動機と目的

  • 古典的合成手法における決定不能性と高い計算複雑性のため、本質的に困難である正しい設計を保証するパラメトリックプログラムの合成に取り組む。
  • 従来のモデルチェックの限界を克服するため、完全な検証手法としてではなく、固定パラメータインスタンスの包括的テストエンジンとしてモデルチェックを用いる。
  • 人間によるガイド付き、ヒューリスティック駆動の進化的プロセスを通じて、誤りや非最適なコードの自動的補正と最適化を可能にする。
  • 遺伝的プログラミングを拡張し、コード論理だけでなく、プロセス構造や通信チャネルを含むシステムアーキテクチャの進化も可能にする。
  • 形式的検証のみでは不適切な複雑な並列および逐次プログラムの合成に実用的でスケーラブルなフレームワークを提供する。

提案手法

  • 代入、ビット操作、制御構造などの句単位の構文的構造に対する変異操作を用いて、遺伝的プログラミングにより候補プログラムを生成・進化させる。
  • 強化されたモデルチェックまたはSMTソルバーを用いて正しさを評価し、yes/noの判定に加え、時刻論理的性質の充足可能性に基づいた反例および適合度レベルを返す。
  • 充足可能性チェックとテストケースカバレッジを組み合わせた適合度関数を統合し、前回の反復で失敗したテストケースを再利用して進化を導く。
  • 失敗した候補から得られる反例とパラメータ集合を蓄積し、完全な検証を要せずとも、正しさに対する信頼性を高めるための継続的なテストセットを構築する。
  • 仕様、適合度ヒューリスティクス、または初期コードテンプレートの変更によって、ユーザーが介入し、望ましい解決策への探索を制御できる。
  • プロセス構造や通信チャネルの変異を許容することで、アーキテクチャの進化を支援し、アーキテクチャ的欠陥の発見と是正を可能にする。

実験結果

リサーチクエスチョン

  • RQ1古典的合成における決定不能性にもかかわらず、モデルチェックによって導かれる遺伝的プログラミングが、正しい設計を保証するパラメトリックプログラムを効果的に合成できるか。
  • RQ2完全な検証が不適切なパラメトリックシステムにおいて、モデルチェックを一般化されたテストメカニズムとして再利用できるか。
  • RQ3形式的仕様に基づいて、誤りや非最適なコードをどの程度自動的に補正または最適化できるか。
  • RQ4このフレームワークは、コード論理だけでなく、プロセス数や通信パターンなどのシステムアーキテクチャ(例:並列設計の正しさの発見)を進化させることができるか。
  • RQ5充足可能性チェックと反例駆動型テストケース蓄積の組み合わせが、正しい解決策への収束をどの程度効果的に導くか。

主な発見

  • 反復的進化により初期の誤りを含むバージョンを改善し、正しいオーバーフローを伴わない平均計算プログラム([23]で知られている解決策と同一)を合成した。
  • 相互排他アルゴリズムがフレームワークを用いて合成され、形式的検証も実施され、複雑な並列システムへの適用性が示された。
  • ビットベクトル問題(入力が2^n - 1のときのみ出力が0)に対して、数秒で正しいプログラムを生成し、固定幅のすべてのビットベクトル入力に対して正しさを証明した。
  • 失敗した候補から得た反例が、効果的に再利用され、収束性と適合度評価の正確性が顕著に向上した。
  • 大きな入力でオーバーフローを起こす単純な平均計算アルゴリズムが、自動的に補正され、正しいかつ効率的な解決策に進化した。
  • この手法は終了が保証されず、常に成功するとは限らないが、広範なテストケースカバレッジと充足可能性チェックを通じて、正しさに関する強い実証的根拠を提供し、実世界の合成タスクにおいて実用的である。

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

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

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

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