Skip to main content
QUICK REVIEW

[論文レビュー] Automating Deductive Verification for Weak-Memory Programs

Alexander J. Summers, Péter Müller|arXiv (Cornell University)|Mar 18, 2017
Logic, programming, and type systems参考文献 31被引用数 1
ひとこと要約

本論文は、Viperの検証インfraストラクチャに高度な分離論理—リラクスト・セパレーション論理(RSL)、フェンス・セパレーション論理(FSL)、FSL++—をエンコードすることで、弱記憶モデルプログラムの最初の自動的帰納的検証手法を提示する。この手法により、最小限のユーザーアノテーションでC11プログラムの完全自動検証が可能となり、検証時間は1分未塔、Coqベースの証明と比較してアノテーションのオーバーヘッドが1〜2桁減少する。

ABSTRACT

Writing correct programs for weak memory models such as the C11 memory model is challenging because of the weak consistency guarantees these models provide. The first program logics for the verification of such programs have recently been proposed, but their usage has been limited thus far to manual proofs. Automating proofs in these logics via first-order solvers is non-trivial, due to reasoning features such as higher-order assertions, modalities and rich permission resources. In this paper, we provide the first implementation of a weak memory program logic using existing deductive verification tools. We tackle three recent program logics: Relaxed Separation Logic and two forms of Fenced Separation Logic, and show how these can be encoded using the Viper verification infrastructure. In doing so, we illustrate several novel encoding techniques which could be employed for other logics. Our work is implemented, and has been evaluated on examples from existing papers as well as the Facebook open-source Folly library.

研究の動機と目的

  • C11記憶モデル下での弱記憶モデルプログラムの検証という課題に取り組む。これは、非順序一貫性実行と複雑な記憶操作のため、困難である。
  • Coqにおける既存の手動またはインタラクティブ証明の限界を克服する。これらは高いユーザ作業を要し、弱記憶モデルプログラム論理の広範な採用を妨げる。
  • 帰納的検証ツールを用いてC11プログラムの完全自動検証を可能にし、アノテーションのオーバーヘッドを低減し、スケーラビリティを向上させる。
  • 現代の弱記憶モデルプログラム論理を、Viperのような既存の検証スタックにエンコードする可能性と効率性を示す。これにより、成熟した自動化の再利用が可能になる。

提案手法

  • RSL、FSL、FSL++をViperの中間検証言語にエンコードし、複雑な並列処理および論理的特徴をより単純な順序実行論理に翻訳する。
  • Viperの既存の検証バックエンドを活用して証明探索を自動化し、分離論理、パーミッション、一階論理推論の組み込みサポートを活用する。
  • 高階述語、モダリティ、カスタムパーミッション構造のための新規エンコード技術を適用し、パーミッションの数え上げとビット単位の演算を含むサポートを実現する。
  • スピンループやフェッチ・アンド・アド操作のような複雑なパターンを、多くの場合に明示的なループ不変条件を必要とせず、ネイティブに処理する。
  • ゴースト状態や不変条件といった高度な機能をViperに手動でエンコードし、将来的な拡張を模倣することで、実世界の例と互換性を保つ。
  • 文献のベンチマークおよび生産コード(例:Follyライブラリ)を対象に、誤りを組み込んだバージョンを含めて検証し、整合性をテストする。

実験結果

リサーチクエスチョン

  • RQ1RSL、FSL、FSL++のような現代の弱記憶モデルプログラム論理を、Viperのような自動検証スタックに効果的にエンコードできるか?
  • RQ2これらの論理をViperにエンコードすることで、インタラクティブなCoqベースの証明と比較して、顕著にアノテーションのオーバーヘッドが削減される自動検証が可能になるか?
  • RQ3得られるシステムは、Follyのリーダー・ライター・スピンロックのような実用的なC11プログラムを、効率的かつ正確に検証できるか?
  • RQ4カスタムパーミッション構造、ゴースト状態、アトミック操作といった高度な機能を、手動による介入なしにどの程度処理できるか?

主な発見

  • RSL、FSL、FSL++論理を用いたC11プログラムの検証が、成功裏に自動化され、平均して1分未塔の検証時間で達成された。
  • Coqベースの機械的証明と比較して、アノテーションのオーバーヘッドが1〜2桁削減され、これらの論理の広範な採用が可能になった。
  • FacebookのFollyリーダー・ライター・スピンロックのコア関数のうち5つが検証に成功した。残り2つは、現在の論理の範囲外のイディオムに起因し、代替実装が必要だった。
  • 強化されたアクセスモードとカウントパーミッションを用いることで、カスタムパーミッション構造を備えたRustのARCライブラリも、プロトタイプが正しく検証した。
  • スピンループやアトミック・フェッチ・アンド・インクリメント操作のような複雑なパターンが、明示的なループ不変条件を必要とせず、ネイティブに処理された。

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

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

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

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