Gillianプラットフォームの拡張により、不正確性推論と自動的な真のバグ発見を実現できた背景には、いくつかの重要な工夫や知見がありました。
UXバイアブダクションの導入: UXバイアブダクションを新たに導入することで、リソース不足エラーに対する自動的な修正を生成し、実行を継続できるようにしました。これにより、従来の手法では捉えきれなかったバグを発見する能力が向上しました。
仕様の合成と自動生成: バイアブダクションを利用して、実行パスごとに関数仕様を自動的に合成する手法を採用しました。これにより、実行中に発生したエラーに基づいて、より正確な仕様を生成し、真のバグを特定することが可能になりました。
述語の取り扱いの強化: ユーザー定義の述語を扱う能力を強化し、複雑なデータ構造に対する仕様をより柔軟に扱えるようにしました。これにより、実際のコードベースにおけるバグ発見の精度が向上しました。
エンジンのモジュール化: 提案したCSEエンジンをモジュール化することで、OXおよびUXの推論を切り替えやすくし、異なる分析手法を統合する柔軟性を持たせました。これにより、ツールの拡張性が向上し、さまざまな分析ニーズに応じた機能追加が容易になりました。
これらの工夫により、Gillianプラットフォームは、正確性と不正確性の両方の推論をサポートする初の統一ツールとしての地位を確立しました。