Skip to main content
QUICK REVIEW

[論文レビュー] Meta-F*: Metaprogramming and Tactics in an Effectful Program Verifier.

Guido Martínez, Danel Ahman|arXiv (Cornell University)|Mar 17, 2018
Logic, programming, and type systems参考文献 16被引用数 1
ひとこと要約

Meta-F* は、F* にメタプログラミングフレームワークを導入し、効果的(effectful)な証明スクリプティングと、F* の弱い前提計算および SMT 解法と統合されたユーザー定義戦略を可能にする。メタプログラミングと SMT 自動化を組み合わせることで、分離論理や非線形算術などの複雑な論理に対する証明の安定性と自動化が著しく向上し、かつては取り組みが困難であった検証タスクを実用可能にする。

ABSTRACT

Verification tools for effectful programming languages often rely on automated theorem provers such as SMT solvers to discharge their proof obligations, usually with very limited facilities for user interaction. When the need arises for logics (e.g., higher order or separation logic) or theories (e.g., non-linear arithmetic) that are hard for SMT solvers to efficiently automate, this style of program verification becomes problematic. Building on ideas from the interactive theorem proving community we introduce Meta-F*, a metaprogramming framework for the F* effectful language and SMT-based program verification tool. Meta-F* allows developers to write effectful metaprograms suitable for proof scripting, user-defined proof automation, and verified program construction and transformation. Metaprograms are effectful programs in F* itself, making good use of F*'s libraries, IDE support, and extraction to efficient native code. Meta-F*, moreover, is well-integrated with F*'s weakest precondition calculus and can solve or pre-process parts of the verification condition while leaving the rest for the SMT solver. We evaluate Meta-F* on a variety of examples, demonstrating that tactics, and metaprogramming in general, improve proof stability and automation in F*. Using metaprogrammed decision procedures for richer logics in combination with SMT solving makes it practical to apply F* in settings that were previously out of reach, such as separation logic, or that suffered from poor automation, such as the non-linear arithmetic proofs needed for verifying cryptographic primitives.

研究の動機と目的

  • 効果的プログラム検証における高階論理や分離論理といった複雑な論理を扱う SMT ソルバーの限界を克服すること。
  • 特に暗号primitive における非線形算術を含む検証タスクにおいて、F* における証明自動化と安定性を向上させること。
  • 開発者が F* 内で一等級の効果的プログラムとしてユーザー定義戦略および決定手続きを記述できるようにすること。
  • メタプログラミングを F* の弱い前提計算および SMT に基づく検証パイプラインとシームレスに統合すること。
  • メタプログラミングされた決定手続きと SMT 解法を組み合わせることで、高度な検証技法を実用可能にする。

提案手法

  • Meta-F* は、証明の操作および生成を可能にするメタプログラミングフレームワークを F* に拡張する。
  • メタプログラムは F* 自身で記述され、豊富な型システム、ライブラリ、IDE サポートを活用することで、より良い開発体験が得られる。
  • フレームワークは F* の弱い前提計算と統合され、SMT ソルバーに委譲する前に検証条件を事前処理または解決する。
  • 非線形算術や分離論理といった複雑な理論のためのカスタム決定手続きの構築を可能にする。
  • メタプログラムは効率的なネイティブコードに抽出可能であり、証明自動化におけるパフォーマンスを保証する。
  • ユーザー定義戦略のサポートにより、合成可能で再利用可能な証明スクリプトが可能となり、証明スクリプトのモジュラリティと保守性が向上する。

実験結果

リサーチクエスチョン

  • RQ1F* におけるメタプログラミングは、単独の SMT ソルバーの範囲を超えて証明自動化を拡張するために効果的に利用可能か?
  • RQ2ユーザー定義戦略を SMT 解法と統合することで、複雑な検証タスクにおける証明の安定性とパフォーマンスはどのように向上するか?
  • RQ3非線形算術および分離論理のためのメタプログラミングされた決定手続きは、手動による証明構築への依存度をどの程度低減できるか?
  • RQ4効果的メタプログラムは、パフォーマンスや正しさを損なわずに、F* の検証パイプラインにシームレスに統合可能か?
  • RQ5高度なプログラム検証における表現力と自動化の観点から、Meta-F* は既存のアプローチと比べてどのように差をつけるか?

主な発見

  • Meta-F* は、非線形算術のカスタム決定手続きの実装を可能にし、暗号primitive の検証における自動化を顕著に向上させた。
  • メタプログラミングと F* の弱い前提計算の統合により、検証条件の事前処理が可能になり、SMT ソルバーへの負荷が軽減された。
  • 合成可能で再利用可能なユーザー定義戦略のおかげで、証明の安定性と自動化が向上し、複数の検証タスクにわたる統合が可能になった。
  • 開発者が複雑な推論パターンを再利用可能なメタプログラムとしてエンコードできるため、分離論理の検証が実用的になった。
  • フレームワークはメタプログラムをネイティブコードに効率的に抽出でき、表現力に compromise を加えずに証明自動化におけるパフォーマンスを保証した。
  • 評価では、メタプログラミングされた推論と SMT 解法を組み合わせることで、かつては論理の複雑さのため実行不可能とされたプログラムの検証が可能になった。

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

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

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

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