AxDafny: Agentic Verified Code Generation in Dafny
本論文は、実装と証明を反復的に洗練させる検証器主導型のエージェント的コード生成フレームワークであるAxDafnyを紹介し、新たに提案されたLCB-Pro-Dafnyベンチマークおよび既存のDafnyBenchにおいて、最先端のベースラインと比較して検証成功率の大幅な向上を実証している。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
あなたは、非常に有能だが少し無鉄砲な建築家を雇い、家を建てるよう依頼していると想像してください。あなたは設計図(ルール)を渡し、「キッチン、寝室、そして屋根がある家を建ててくれ」と言います。
コンピュータ・コーディングの世界では、ほとんどのAIモデルはこの建築家のように振る舞います。彼らは「一見正しそうに見える」家を建てますが、実際に住もうとすると、屋敷の屋根から雨漏りがしたり、キッチンにドアがなかったりします。彼らは、その家が十分に機能するかどうかを確認するために、「テストドライブ(特定のシナリオで動作を確認すること)」に頼っています。
AxDafnyは、このゲームのルールを変える新しいシステムです。ただ建ててあとは祈るというのではなく、家が建てられている最中に、その背後にある数学的な証明をチェックする「スーパー検査官(形式検証器)」を使用します。
論文の内容を、シンプルな概念に分解して説明します。
1. 課題:数学的証明を伴う家の建設
研究者たちは、AIが単に「動く」コードだけでなく、「数学的に正しいことが証明された」コードを書けるかどうかを検証したいと考えました。彼らは、Dafnyと呼ばれる特殊な言語を使用しました。
Dafnyを、「単に『ドアを作った』と言うだけでは不十分な言語」だと考えてください。Dafnyでは、「このドアは幅が正確に3フィートであり、ハンドルを回した時のみ開き、決して蝶番から外れることはない」ということを証明しなければなりません。
- 問題点: コードを書くことは難しい作業です。コードを書き、さらにそれが正しく動作するという数学的証明を書くことは、さらに困難です。ほとんどのAIは、この「証明」の部分で立ち往生してしまいます。
2. 解決策:AxDafny(「修正」ループ)
チームは、2人の人間が協力して働いているようなシステムであるAxDafnyを作成しました。
- 建築家(AI): コードと証明を書こうと試みます。
- 検査官(検証器): 即座に作業をチェックします。
もし建築家がミスをした場合、検査官は単に「間違いです」と言うのではありません。ドアが外れないことを証明し忘れた、といった具合に、どこに雨漏りがあるか、あるいはどのドアが足りないかを正確に指摘します。「あなたはドアが固定されていることを証明し忘れています」と伝えるのです。
その後、建築家はその特定の箇所を修正し、再度試行します。彼らは、検査官が完璧な「合格(Pass)」を出すまで、このループ(構築 → チェック → 修正 → 構築)を繰り返します。
3. 新しいテスト:「LCB-Pro-Dafny」
このシステムが実際に機能するかどうかを確認するために、研究者たちはLCB-Pro-Dafnyという新しいテストを作成しました。
- プログラミングコンテスト(コーダー向けのハイレベルな数学オリンピックのようなもの)から、250個の難解なパズルを取り出すことを想像してください。
- 彼らはこれらのパズルを、厳格な「Dafny」言語へと翻訳しました。
- これにより、AIはパズルを解くだけでなく、その解法が正しいという証明も行わなければなりません。
4. 結果:誰が勝ったのか?
研究者たちは、この新システム(AxDafny)を、修正ループなしで一度だけコードを書こうとする標準的な強力なAI(GPT-5.5)と比較しました。
「証明」テスト(DafnyBench)において:
- 標準的なAIは、約**54%**の証明に成功しました。
- AxDafny(修正ループを使用)は、**92.7%**に成功しました。
- 比喩: 標準的なAIが答えを推測しているのに対し、AxDafnyは、満点を取るために自分の間違いを何度もチェックし続ける学生のようなものです。
「コンテスト」テスト(LCB-Pro-Dafny)において:
- 標準的なAIは、難しいパズルのうちわずか**11.6%**しか正しく解けませんでした。
- AxDafnyは、**56.4%**を解きました。
- 比喩: AxDafnyは実際の問題を解く能力においてはるかに優れていましたが、「ハード」レベルのパズルには依然として苦戦しており、スーパー検査官がいてもなお、一部のパズルは極めて困難であることを示しました。
5. 落とし穴:「正しい」ことと「速い」こと
この論文から得られた驚くべき発見があります。
時として、AxDafnyは数学的に完璧な家を建てましたが(検査官は「合格!」を出しましたが)、実際に住んでみると、その家は動作が遅すぎるか、電力を消費しすぎるものでした。
- なぜか? 検査官は、その家が「安全で正しい」かどうかのみをチェックします。「効率的」かどうかはチェックしません。
- AIは、証明するのが難しい「速い」解法よりも、証明するのが簡単な「遅い」解法を選んでしまうことがあったのです。
- 実際のコンピュータ上でこれらのコードをテストしたところ、多くの「完璧な」解法が、実行時間がかかりすぎた(実行時間制限超過)か、メモリを使いすぎたために失敗しました。
まとめ
AxDafnyは、「チェックして修正する」というループを用いることで、AIに数学的に正しいことが証明されたコードを書かせるためのシステムです。
- 非常に優れた点: コードが意図した通りに動作することを保証する能力(バグがないこと)に長けています。
- 大きな進歩: 単に推測するだけの標準的なAIよりも、大幅な改善が見られます。
- 限界: コードが「数学的に正しい」と証明されたからといって、それが現実世界のコンテストにおいて「十分に速い」とは限りません。AIは、正しさだけでなく、効率性についても学ぶ必要があります。
論文は、このアプローチはコードの信頼性を高める強力な方法であるが、私たちはAIに対して、正しさだけでなくスピードについても意識させる必要があると結論付けています。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。