核心概念
大規模言語モデルを活用し、静的解析とプログラム検証を組み合わせることで、様々なプログラム構造に対応した満足できる仕様を自動的に合成することができる。
要約
本論文は、プログラム検証の自動化に向けた取り組みを紹介している。プログラム検証では、ドメイン専門知識と多大な労力が必要とされる仕様の構築が課題となっている。
提案手法AutoSpecは、以下の3つの方法で実用的な課題に取り組んでいる:
静的解析とプログラム検証を駆動力とし、大規模言語モデルを仕様生成器として活用する。
プログラムを階層的に分解し、大規模言語モデルの注意を適切に誘導する。
候補仕様を毎回検証し、大規模言語モデルとの対話中のエラー蓄積を回避する。
これにより、AutoSpecは段階的かつ反復的に、満足できる仕様を生成することができる。
評価では、251個のCプログラムを対象に、既存手法と比較して79%のプログラムを自動的に検証できることを示した。また、実際のX509パーサプロジェクトにも適用し、有用性を実証した。
統計
プログラムの検証に成功したのは251個中199個(79%)であり、既存手法と比べて59.2%改善された。
X509パーサプロジェクトの6つの関数について、数分で満足できる仕様を自動生成できた。
引用
"大規模言語モデルを活用し、静的解析とプログラム検証を組み合わせることで、様々なプログラム構造に対応した満足できる仕様を自動的に合成することができる。"
"AutoSpecは段階的かつ反復的に、満足できる仕様を生成することができる。"