🤖 AI Summary
This study addresses the limitations of weak specifications and excessive reliance on unproven assumptions when using large language models (LLMs) to assist Verus in verifying doubly linked lists (DLLs). To overcome these challenges, this work proposes a specialized, reusable verification skill tailored for DLLs. The proposed method encodes domain knowledge and task decomposition strategies into structured prompts, guiding LLM agents to automatically generate strong formal specifications in Rust. Consequently, this approach significantly reduces the verification process's dependence on trusted computing bases such as axioms and lemmas. By successfully producing robust specifications for doubly linked lists with minimal trust assumptions, the project effectively enhances the rigor and reliability of LLM-assisted formal verification.
📝 Abstract
LLM-assisted Verus verification is a less tedious method to verify Rust implementations, but paired with self-referential structures, e.g., Doubly Linked Lists (DLLs)—notoriously difficult to formalise for verification—it becomes a substantially more demanding verification task. Moreover, a specification weakness can arise when verification relies on unproven or invalidated assumptions, such as axiomatic lemmas and assume statements. We investigate whether LLM agents can synthesize strong DLL specifications while minimizing these trusted base. The analysis follows three different approaches: manual verification, property-specific verification, and a defined skill for the specific case of DLLs and certain properties of this type of data structure. The skill encodes domain knowledge and a task-decomposition strategy. We show that an LLM agent equipped with a carefully designed verification skill can generate strong, low-trust specifications for DLLs in Verus.