Core Concepts
データ構造を再帰的な定義ではなく、局所的な条件を満たす単射写像を用いて定義する新しい手法を提案する。この手法により、プログラムの検証が決定可能な論理で行えるようになり、検証エンジニアが検証メカニズムを知る必要がなくなる。
Abstract
本論文では、データ構造を再帰的に定義するのではなく、単射写像と局所的な条件を用いて定義する新しい手法「内在的定義」を提案している。この手法により、データ構造の保守性を検証する際に、検証エンジニアが検証メカニズムを知る必要がなくなる予測可能な検証が実現できる。
具体的には以下の3つのステージで検証手法を提示している:
内在的定義に含まれる存在量化を、検証エンジニアによるゴースト・コードを用いて除去する。
局所的条件の全称量化を、「壊れたオブジェクトの集合」を導入することで緩和する。
適切に振る舞うプログラムに対して、全称量化を完全に除去する。
これにより、検証条件は決定可能な論理で表現できるようになり、SMTソルバーなどを用いた自動化が可能となる。
著者らは、リスト、木、AVL木、赤黒木などの典型的なデータ構造について、内在的定義と修正プログラムの検証を行い、Boogieを用いて自動的に検証できることを示している。