Skip to main content
QUICK REVIEW

[論文レビュー] Exact Separation Logic (Extended Version)

Petar Maksimović, Caroline Cronjäger|arXiv (Cornell University)|Aug 15, 2022
Software Testing and Debugging Techniques被引用数 2
ひとこと要約

本稿では、すべての終了動作が特徴付けられ、すべての確立された結果およびエラーが到達可能であることを保証することで、検証と真のバグ発見を統合する新しいプログラム論理である正確分離論理(ESL)を紹介する。ESLは、相互再帰関数に対しても整合性を保ち、下位近似論理の関数合成可能性を証明し、重要なヒープ操作コードに対する扱いやすい抽象的仕様を可能にする。

ABSTRACT

Over-approximating (OX) program logics, such as separation logic (SL), are used for verifying properties of heap-manipulating programs: all terminating behaviour is characterised, but established results and errors need not be reachable. OX function specifications are thus incompatible with true bug-finding supported by symbolic execution tools such as Pulse and Pulse-X. In contrast, under-approximating (UX) program logics, such as incorrectness separation logic, are used to find true results and bugs: established results and errors are reachable, but there is no mechanism for understanding if all terminating behaviour has been characterised. We introduce exact separation logic (ESL), which provides fully-verified function specifications compatible with both OX verification and UX true bug-funding: all terminating behaviour is characterised and all established results and errors are reachable. We prove soundness for ESL with mutually recursive functions, demonstrating, for the first time, function compositionality for a UX logic. We show that UX program logics require subtle definitions of internal and external function specifications compared with the familiar definitions of OX logics. We investigate the expressivity of ESL and, for the first time, explore the role of abstraction in UX reasoning by verifying abstract ESL specifications of various data-structure algorithms. In doing so, we highlight the difference between abstraction (hiding information) and over-approximation (losing information). Our findings demonstrate that abstraction cannot be used as freely in UX logics as in OX logics, but also that it should be feasible to use ESL to provide tractable function specifications for self-contained, critical code, which would then be used for both verification and true bug-finding.

研究の動機と目的

  • プログラム論理における検証(過剰近似)と真のバグ発見(不足近似)の間のギャップを埋めること。
  • すべての終了動作が特徴付けられ、すべての結果/エラーが到達可能であることを保証する論理を開発すること。両者の長所を統合すること。
  • 不足近似論理における関数合成可能性を証明すること。これは、従来の誤り論理では解決されていなかった重要な課題であった。
  • 不足近似推論における抽象化の役割を明らかにし、過剰近似とは区別すること。
  • ESLを自己完結的で重要なコード(例:データ構造ライブラリ)に適用できることを示し、正確で再利用可能な仕様を提供できることを実証すること。

提案手法

  • 過剰近似と不足近介の特徴を統合した新しいプログラム論理として正確分離論理(ESL)を提唱する。
  • すべての結果とエラーが真であることを保証する、整合的かつ完全に到達可能なESLにおける関数仕様を定義する。
  • 相互再帰関数に対してESLの整合性を証明し、不足近似論理における関数合成のための初めての構成的推論フレームワークを確立する。
  • 標準的なOX論理とは異なり、UX論理における内部および外部関数仕様の微妙な違いを導入する。
  • データ構造アルゴリズムのための抽象的ESL仕様を開発し、過剰近似を伴わずに抽象化を実現することを示す。
  • 記号実行とフレーム推論を用いて、BST挿入やリスト長計算アルゴリズムを含む、複雑なヒープ操作コードを検証する。

実験結果

リサーチクエスチョン

  • RQ1終了動作の完全な特徴付けと、結果・エラーの完全な到達可能性を同時に満たすプログラム論理を設計可能か?
  • RQ2不足近似論理において関数合成可能性は達成可能か? もしそうなら、過剰近似論理とはどのように異なる仕様定義が必要か?
  • RQ3情報の損失や到達可能性の損なわれることなく、不足近似論理に意味的に抽象化を適用する方法は何か?
  • RQ4フレーム性質と局所性は不足近似推論においてどのような役割を果たし、到達可能性保証とどのように相互作用するか?
  • RQ5ESLを自己完結的で重要なコードに適用でき、検証と真のバグ発見の両方に適した扱いやすい再利用可能な仕様を提供できるか?

主な発見

  • ESLは相互再帰関数に対し整合性を達成し、不足近似論理における関数合成可能性が初めて証明された。
  • 本稿は、UX論理における内部および外部関数仕様が、前向きの帰結が存在せず、到達可能性を維持する必要があるため、OX論理とは根本的に異なる定義を必要とするという事実を確立した。
  • UX論理における抽象化は、OX論理ほど自由に使用できない。情報の損失を許容するのではなく、情報の保持を必要とするため、情報の隠蔽と過剰近似の間の重要な違いが浮き彫りになった。
  • 著者らは、データ構造アルゴリズムのための抽象的ESL仕様を成功裏に検証し、重要なコードに対して正確で再利用可能かつ扱いやすい仕様が実現可能であることを示した。
  • リスト長計算およびBST挿入の例から、ESLが到達可能性保証付きの記号的推論をサポートしており、同じフレームワーク内で検証と真のバグ発見の両方が可能であることが明らかになった。
  • arXiv(arXiv:2208.07200)の拡張版には完全な証明と詳細な事例研究が含まれており、ESLが実世界の検証シナリオにおいて実用的であることが確認された。

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

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

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

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