FLAINov 7, 2023

Leveraging Large Language Models for Automated Proof Synthesis in Rust

arXiv:2311.03739v219 citationsh-index: 4
Originality Incremental advance
AI Analysis

This addresses the problem of making formal verification more accessible for software developers, though it is incremental as it builds on existing LLM and static analysis techniques.

The paper tackles the high proof burden in formal verification by combining LLMs with static analysis to synthesize invariants and assertions for Rust verification. Their prototype reduced human effort in writing proof code for 20 vector-manipulating programs.

Formal verification can provably guarantee the correctness of critical system software, but the high proof burden has long hindered its wide adoption. Recently, Large Language Models (LLMs) have shown success in code analysis and synthesis. In this paper, we present a combination of LLMs and static analysis to synthesize invariants, assertions, and other proof structures for a Rust-based formal verification framework called Verus. In a few-shot setting, LLMs demonstrate impressive logical ability in generating postconditions and loop invariants, especially when analyzing short code snippets. However, LLMs lack the ability to retain and propagate context information, a strength of traditional static analysis. Based on these observations, we developed a prototype based on OpenAI's GPT-4 model. Our prototype decomposes the verification task into multiple smaller ones, iteratively queries GPT-4, and combines its output with lightweight static analysis. We evaluated the prototype with a developer in the automation loop on 20 vector-manipulating programs. The results demonstrate that it significantly reduces human effort in writing entry-level proof code.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes