Skip to main content
QUICK REVIEW

[論文レビュー] Verifying Eiffel Programs with Boogie

Julian Tschannen, Carlo A. Furia|arXiv (Cornell University)|Jun 23, 2011
Logic, programming, and type systems参考文献 18被引用数 13
ひとこと要約

本稿では、設計による契約の注釈が付加されたEiffelプログラムをBoogieに翻訳し、自動検証を可能にする静的検証ツールであるAutoProofを提示する。このツールは継承、ポリモーフィズム、例外、関数オブジェクト(エージェント)といった高度なOOP機能をサポートし、フレーム条件の自動生成により注釈の負荷を低減し、最小限の手動作業で多数のEiffelケーススタディを正当に検証できた。

ABSTRACT

Static program verifiers such as Spec#, Dafny, jStar, and VeriFast define the state of the art in automated functional verification techniques. The next open challenges are to make verification tools usable even by programmers not fluent in formal techniques. This paper presents AutoProof, a verification tool that translates Eiffel programs to Boogie and uses the Boogie verifier to prove them. In an effort to be usable with real programs, AutoProof fully supports several advanced object-oriented features including polymorphism, inheritance, and function objects. AutoProof also adopts simple strategies to reduce the amount of annotations needed when verifying programs (e.g., frame conditions). The paper illustrates the main features of AutoProof's translation, including some whose implementation is underway, and demonstrates them with examples and a case study.

研究の動機と目的

  • 形式的技法の深い専門知識を必要とせずに、Eiffelプログラムに対して実用的で使いやすい形式的検証を可能にすること。
  • 特にフレーム条件や例外処理に関する手作業の注釈負荷を軽減すること。
  • 継承、ポリモーフィズム、関数オブジェクト(エージェント)、例外処理といった複雑なEiffel言語機能を、検証可能な翻訳パイプラインでサポートすること。
  • 統合された検証ワークフローを実現するため、Eiffel検証環境(EVE)と統合すること。
  • Boogieのような中間検証言語に基づく自動化ツールを用いて、実世界のEiffelプログラムを検証する可能性を示すこと。

提案手法

  • 事前条件、事後条件、不変条件、アサーションが付加されたEiffelプログラムを、同等のBoogieプログラムに翻訳する。
  • Eiffel独自の例外メカニズム(リカバリー文とリトライロジックを含む)をBoogieの検証フレームワークに翻訳する。
  • 事後条件から構文的ヒューリスティクスを適用し、デフォルトのフレーム条件を推論することで、明示的なフレーム注釈の必要性を最小限に抑える。
  • ポリモーフィック継承、関数オブジェクト(エージェント)、動的型解釈といった高度なEiffel機能をサポートする。
  • Boogieの検証バックエンドを用いて、ループ不変条件やクラス不変条件を含む正しさの性質を自動で証明する。
  • EVE環境と統合し、分離論理や対話型証明器といった他の検証技法と組み合わせて使用できるようにする。

実験結果

リサーチクエスチョン

  • RQ1Boogieのような中間検証言語に基づく自動化ツールを用いて、複雑なオブジェクト指向特徴を有するEiffelプログラムを効果的に検証できるか?
  • RQ2検証の整合性を保ちつつ、フレーム条件や例外処理に関する注釈の負荷をどのように最小限に抑えることができるか?
  • RQ3フレーム条件や中間アサーションの自動推論は、検証のパワーを損なわせることなく、使いやすさをどの程度向上させられるか?
  • RQ4継承、エージェント、例外処理といった特徴を有する実世界のEiffelプログラムに対して、この翻訳はどの程度スケーラブルか?
  • RQ5EVEのような統合検証環境へのAutoProofの統合は、全体の検証体験やツール間の連携をどの程度向上させられるか?

主な発見

  • AutoProofは、例外、継承、エージェント、複雑なデータ構造を含む11のEiffelケーススタディを正常に翻訳および検証した。
  • すべての例における平均検証時間は1プログラムあたり2.76秒であり、最も時間がかかったケース(Calculator)でも9.73秒であった。
  • ほとんどのケースでフレーム条件が自動的に推論されたため、手作業での注釈の必要性が低減したが、複雑なケースでは明示的なフレーム仕様が必要だった。
  • 翻訳はEiffel独自の例外メカニズム(リトライロジックやリカバリー文における状態の復元)を正しくモデル化したが、執筆時点では完全なサポートは実装中だった。
  • このツールは、設計パターン(CommandやObserver)をエージェントを介して使用する実世界のEiffelコードに対してもスケーラビリティと使いやすさを示した。
  • EVEとの統合により、複数の検証技法の連携が可能になり、Eiffel向け包括的な検証スタックの実現に向けた道筋が示された。

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

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

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

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