Skip to main content
QUICK REVIEW

[論文レビュー] Separation Logic for Small-step Cminor

Andrew W. Appel, Sandrine Blazy|ArXiv.org|Jul 30, 2007
Logic, programming, and type systems参考文献 12被引用数 9
ひとこと要約

本稿では、検証済みコンパイラで使用される中間言語Cminorの再設計版における、小さなステップの操作的意味論と、機械検証された健全性証明を提示する。本研究により、非終了性、I/O、将来の並列拡張を伴う低レベルC言語風プログラムの形式的検証が可能となり、Coqにおいて小さなステップ意味論に関して、分離論理の最初の大規模な機械検証された健全性証明が確立された。

ABSTRACT

Cminor is a mid-level imperative programming language; there are proved-correct optimizing compilers from C to Cminor and from Cminor to machine language. We have redesigned Cminor so that it is suitable for Hoare Logic reasoning and we have designed a Separation Logic for Cminor. In this paper, we give a small-step semantics (instead of the big-step of the proved-correct compiler) that is motivated by the need to support future concurrent extensions. We detail a machine-checked proof of soundness of our Separation Logic. This is the first large-scale machine-checked proof of a Separation Logic w.r.t. a small-step semantics. The work presented in this paper has been carried out in the Coq proof assistant. It is a first step towards an environment in which concurrent Cminor programs can be verified using Separation Logic and also compiled by a proved-correct compiler with formal end-to-end correctness guarantees.

研究の動機と目的

  • 非終了性、I/O、並列処理を考慮した、小さなステップの操作的意味論を備えたCminorの再設計により、非終了性、I/O、並列プログラムの推論を可能にする。
  • 非局所的制御構文(returnやexitなど)をサポートする分離論理を用いて、低レベルC言語風プログラムの形式的検証を可能にする。
  • 高レベル言語から機械語へのエンドツーエンドの検証済みコンパイルの基盤を提供する。
  • オラクルと階層的証明アーキテクチャを用いて、モジュラーかつ拡張可能な方法で、将来の並列拡張を意味論と論理に統合する。

提案手法

  • 継続に基づく小さなステップ意味論を用いて、Cminorを非局所的制御と将来の並列処理をサポートする形で再設計する。
  • 制御フロー追跡を備えた sextuples(事前条件・事後条件)を用いて、Cminorの分離論理を定義し、return文やexit文を扱えるようにする。
  • Coq証明支援システムに論理と意味論を実装し、新しい直線的ステートメントを追加できるモジュラーかつパラメータ化されたアプローチを採用する。
  • 各規則をCoqの補題として検証することで分離論理の健全性を証明し、主要関数の安全性を保証する主要定理を確立する。
  • オラクルを用いて拡張命令(例:spawn, lock, unlock)をモデル化し、逐次的健全性を保ちつつ並列的推論を可能にする。
  • 新しい小さなステップ意味論とCompCertの大きなステップ意味論との間で意味的同値性を確立し、検証済みコンパイラとの互換性を保証する。

実験結果

リサーチクエスチョン

  • RQ1Cminorのような低レベル命令型言語に対して、小さなステップ操作的意味論に関して、分離論理を健全に定義・検証することは可能か?
  • RQ2小さなステップ意味論内での非局所的制御構文(例:return, exit)を、分離論理内で形式的にモデル化する方法は何か?
  • RQ3得られた論理は、スレッド、ロック、共有メモリといった並列機能をサポートするように拡張可能であり、かつ健全性を保つことができるか?
  • RQ4Coqにおいて、逐次検証と将来の並列的推論を両立できるモジュラーかつ拡張可能なフレームワークを構築することは可能か?
  • RQ5小さなステップ意味論は、既存のCompCertコンパイラの大きなステップ意味論と互換性を持たせることができるか?これによりエンドツーエンドの検証保証が得られるか?

主な発見

  • 本稿では、Coqで検証された、小さなステップ意味論に関して分離論理の最初の機械検証された健全性証明を提示する。
  • 小さなステップ意味論は継続ベースの設計により、return や exit などの非局所的制御構文をサポートし、非終了性やI/Oプログラムの推論を可能にする。
  • 制御フロー効果を追跡できるように、分離論理が sextuples に拡張されている。これにより、早期リターンやexitを伴う手続きの正しい推論が可能になる。
  • 健全性証明はモジュラーかつ拡張可能である。新しい直線的ステートメント(例:spawn, lock)はオラクルを介して追加可能であり、コア論理の再証明が不要である。
  • 新しい小さなステップ意味論は、CompCertの大きなステップ意味論と意味的に同値である。これにより、新しい論理で検証されたプログラムは、検証済みのCompCertコンパイラでコンパイル可能である。
  • 本フレームワークは、将来の並列Cminorの研究を支援するように設計されており、並列分離論理を用いて非干渉性と並列プログラムの正しさを証明する明確な道筋が示されている。

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

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

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

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