Core Concepts
SMT支援型証明指向プログラミングにおいて、AIを使ってプログラムとその証明を自動的に合成することができる。
Abstract
本論文では、SMT支援型証明指向プログラミングにおけるAIによる自動合成の可能性を探る。
まず、600K行に及ぶオープンソースのF*プログラムと証明からなるFSTARDATASETを構築した。これは、SMT支援型証明指向プログラムの最大のデータセットである。
次に、与えられた型に対してプログラムを合成する問題を設定した。単純型、依存型、完全な証明の3つのカテゴリに分類し、それぞれの合成問題に取り組んだ。
実験の結果、fine-tuningした小規模モデルが大規模モデルと同等以上の性能を発揮することが分かった。また、関連例や前提の選択などの工夫により、性能が大幅に向上することが分かった。
一方で、合成されたプログラムにはシンタックスエラー、識別子未定義エラー、意味的エラーなどの課題が残されている。今後、静的解析に基づくガイダンスなどの手法を組み合わせることで、さらなる改善が期待できる。
全体として、本研究は、SMT支援型証明指向プログラミングにおけるAIによる自動合成の可能性を示したものと言える。
Stats
証明指向プログラムの合成には、プログラムの型情報が重要である
単純型の問題は最も容易に解けるが、依存型、完全な証明の問題になるほど難しくなる
関連例や前提の選択が合成性能に大きな影響を与える
Quotes
"Proof-oriented programs mix computational content with proofs of program correctness."
"Seeking to spur research on using AI to automate the construction of proof-oriented programs, we curate a dataset of 600K lines of open-source F⋆programs and proofs."
"Our main finding in that the performance of fine-tuned smaller language models (such as Phi-2 or StarCoder) compare favorably with large language models (such as GPT-4), at a much lower computational cost."