Reference. Baldur: Whole-Proof Generation and Repair with Large Language Models
Cite
Cited by (6)
Cobblestone: A Divide-and-Conquer Approach for Automating Formal Verification kasibatla-2026-cobblestone
HybridProver: Augmenting Theorem Proving with LLM-Driven Proof Synthesis and Refinement hu-2025-hybridprover
Formal methods play a crucial role in ensuring the reliability of critical systems through rigorous mathematical verification. However, their adoption remains limited due to the labor-intensive nature of manual proof construction. Recent advances in large language models (LLMs) have opened new opportunities for automated theorem proving. Two main paradigms have emerged: stepwise tactic-based generation and whole-proof synthesis. While both approaches have complementary strengths, existing work largely treats them in isolation. In this work, we propose HybridProver, a unified framework that integrates whole-proof synthesis and tactic-based generation through proof sketches as an intermediate representation. This design enables the reuse of partially correct proof structures while effectively combining high-level planning with fine-grained reasoning. We implement HybridProver in Isabelle/HOL and post-train two 7B-scale LLMs on our optimized Isabelle datasets. Experiments on the miniF2F Isabelle benchmark achieved a 73.8% success rate and improved upon the previous state of the art (61.9%), demonstrating that lightweight models, when combined with our approach, can effectively generate Isabelle/HOL proofs without relying on very large LLMs. Ablation studies further analyze the impact of dataset quality, training configurations, and sampling strategies on proof generation.
QEDCartographer: Automating Formal Verification Using Reward-Free Reinforcement Learning sanchezstern-2025-qedcartographer
AlphaVerus: Bootstrapping Formally Verified Code Generation through Self-Improving Translation and Treefinement aggarwal-2024-alphaverus
Automated code generation with large language models has gained significant traction, but there remains no guarantee on the correctness of generated code. We aim to use formal verification to provide mathematical guarantees that the generated code is correct. However, generating formally verified code with LLMs is hindered by the scarcity of training data and the complexity of formal proofs. To tackle this challenge, we introduce AlphaVerus, a self-improving framework that bootstraps formally verified code generation by iteratively translating programs from a higher-resource language and leveraging feedback from a verifier. AlphaVerus operates in three phases: exploration of candidate translations, Treefinement – a novel tree search algorithm for program refinement using verifier feedback, and filtering misaligned specifications and programs to prevent reward hacking. Through this iterative process, AlphaVerus enables a LLaMA-3.1-70B model to generate verified code without human intervention or model finetuning. AlphaVerus shows an ability to generate formally verified solutions for HumanEval and MBPP, laying the groundwork for truly trustworthy code-generation agents.
Passport: Improving Automated Formal Verification Using Identifiers sanchezstern-2023-passport
Formally verifying system properties is one of the most effective ways of improving system quality, but its high manual effort requirements often render it prohibitively expensive. Tools that automate formal verification by learning from proof corpora to synthesize proofs have just begun to show their promise. These tools are effective because of the richness of the data the proof corpora contain. This richness comes from the stylistic conventions followed by communities of proof developers, together with the powerful logical systems beneath proof assistants. However, this richness remains underexploited, with most work thus far focusing on architecture rather than on how to make the most of the proof data. This article systematically explores how to most effectively exploit one aspect of that proof data: identifiers. We develop the Passport approach, a method for enriching the predictive Coq model used by an existing proof-synthesis tool with three new encoding mechanisms for identifiers: category vocabulary indexing, subword sequence modeling, and path elaboration. We evaluate our approach’s enrichment effect on three existing base tools: ASTactic, Tac, and Tok. In head-to-head comparisons, Passport automatically proves 29% more theorems than the best-performing of these base tools. Combining the three tools enhanced by the Passport approach automatically proves 38% more theorems than combining the three base tools. Finally, together, these base tools and their enhanced versions prove 45% more theorems than the combined base tools. Overall, our findings suggest that modeling identifiers can play a significant role in improving proof synthesis, leading to higher-quality software.
Getting More out of Large Language Models for Proofs zhang-2023-getting
Large language models have the potential to simplify formal theorem proving and make it more accessible. But how to get the most out of these models is still an open question. To answer this question, we take a step back and explore the failure cases of these models using common prompting-based techniques. Our talk will discuss these failure cases and what they can teach us about how to get more out of these models.
Cites 111 works (6 here)
With notes (6)
Passport: Improving Automated Formal Verification Using Identifiers sanchezstern-2023-passport
Formally verifying system properties is one of the most effective ways of improving system quality, but its high manual effort requirements often render it prohibitively expensive. Tools that automate formal verification by learning from proof corpora to synthesize proofs have just begun to show their promise. These tools are effective because of the richness of the data the proof corpora contain. This richness comes from the stylistic conventions followed by communities of proof developers, together with the powerful logical systems beneath proof assistants. However, this richness remains underexploited, with most work thus far focusing on architecture rather than on how to make the most of the proof data. This article systematically explores how to most effectively exploit one aspect of that proof data: identifiers. We develop the Passport approach, a method for enriching the predictive Coq model used by an existing proof-synthesis tool with three new encoding mechanisms for identifiers: category vocabulary indexing, subword sequence modeling, and path elaboration. We evaluate our approach’s enrichment effect on three existing base tools: ASTactic, Tac, and Tok. In head-to-head comparisons, Passport automatically proves 29% more theorems than the best-performing of these base tools. Combining the three tools enhanced by the Passport approach automatically proves 38% more theorems than combining the three base tools. Finally, together, these base tools and their enhanced versions prove 45% more theorems than the combined base tools. Overall, our findings suggest that modeling identifiers can play a significant role in improving proof synthesis, leading to higher-quality software.
PRoofster: Automated Formal Verification agrawal-2023-proofster
REPLica: REPL instrumentation for Coq analysis ringer-2020-replica
QED at Large: A Survey of Engineering of Formally Verified Software ringer-2019-qed
Development of formal proofs of correctness of programs can increase actual and perceived reliability and facilitate better understanding of program specifications and their underlying assumptions. Tools supporting such development have been available for over 40 years, but have only recently seen wide practical use. Projects based on construction of machine-checked formal proofs are now reaching an unprecedented scale, comparable to large software projects, which leads to new challenges in proof development and maintenance. Despite its increasing importance, the field of proof engineering is seldom considered in its own right; related theories, techniques, and tools span many fields and venues. This survey of the literature presents a holistic understanding of proof engineering for program correctness, covering impact in practice, foundations, proof automation, proof organization, and practical proof development.
Finding and Understanding Bugs in C Compilers yangFindingUnderstandingBugs
Compilers should be correct. To improve the quality of C compilers, we created Csmith, a randomized test-case generation tool, and spent three years using it to find compiler bugs. During this period we reported more than 325 previously unknown bugs to compiler developers. Every compiler we tested was found to crash and also to silently generate wrong code when presented with valid input. In this paper we present our compiler-testing tool and the results of our bug-hunting study. Our first contribution is to advance the state of the art in compiler testing. Unlike previous tools, Csmith generates programs that cover a large subset of C while avoiding the undefined and unspecified behaviors that would destroy its ability to automatically find wrong-code bugs. Our second contribution is a collection of qualitative and quantitative results about the bugs we have found in open-source C compilers.
Formal verification of a realistic compiler leroy_formal_2009
This paper reports on the development and formal verification (proof of semantic preservation) of CompCert, a compiler from Clight (a large subset of the C programming language) to PowerPC assembly code, using the Coq proof assistant both for programming the compiler and for proving its correctness. Such a verified compiler is useful in the context of critical software and its formal verification: the verification of the compiler guarantees that the safety properties proved on the source code hold for the executable compiled code as well.
External (105)
- Towards Autoformalization of Mathematics and Code Correctness: Experiments with Elementary Proofs (2023)
- The Sledgehammer: Let Automatic Theorem Provers write your Isabelle scripts! (2023)
- Baldur: Whole-Proof Generation and Repair with Large Language Models (arXiv version) (2023)
- Better Automatic Program Repair by Using Bug Reports and Tests Together (2023)
- ProofNet: A benchmark for autoformalizing and formally proving undergraduate-level mathematics problems (2022)
- GPT-NeoX-20B: An Open-Source Autoregressive Language Model (2022)
- PaLM: Scaling Language Modeling with Pathways (2022)
- Diversity-driven automated formal verification (2022)
- Fairness Guarantees under Demographic Shift (2022)
- Formal Specifications from Natural Language (2022)
- Thor: Wielding Hammers to Integrate Language Models and Automated Theorem Provers (2022)
- Draft, Sketch, and Prove: Guiding Formal Theorem Provers with Informal Proofs (2022)
- HyperTree Proof Search for Neural Theorem Proving (2022)
- Solving Quantitative Reasoning Problems with Language Models (2022)
- Proof Mate: An Interactive Proof Helper for PVS (Tool Paper) (2022)
- Efficiently Scaling Transformer Inference (2022)
- Enforcing Delayed-Impact Fairness Guarantees (2022)
- Chain of Thought Prompting Elicits Reasoning in Large Language Models (2022)
- Autoformalization with Large Language Models (2022)
- miniF2F: a cross-system benchmark for formal Olympiad-level mathematics (2022)
- Proof Artifact Co-Training for Theorem Proving with Language Models (2022)
- Evaluating Large Language Models Trained on Code (2021)
- Training Verifiers to Solve Math Word Problems (2021)
- Measuring Mathematical Problem Solving With the MATH Dataset (2021)
- LISA: Language models of ISAbelle proofs (2021)
- Roosterize: Suggesting Lemma Names for Coq Verification Projects Using Deep Learning (2021)
- Pretrained Language Models are Symbolic Mathematics Solvers too! (2021)
- Show Your Work: Scratchpads for Intermediate Computation with Language Models (2021)
- RoFormer: Enhanced Transformer with Rotary Position Embedding (2021)
- Break-it-fix-it: Unsupervised learning for program repair (2021)
- Automated patch assessment for program repair at scale (2021)
- A syntax-guided edit decoder for neural program repair (2021)
- Proof Repair (PhD dissertation) (2021)
- TacticZero: Learning to Prove Theorems from Scratch with Deep Learning (2021)
- The Tactician (2020)
- TacTok: semantics-aware proof synthesis (2020)
- TacticToe: Learning to Prove with Tactics (2020)
- MCoq: Mutation Analysis for Coq Verification Projects (2020)
- Can automated program repair refine fault localization? a unified debugging approach (2020)
- Quality of Automated Program Repair on Real-World Defects (2020)
- Deep Generation of Coq Lemma Names Using Elaborated Terms (2020)
- Learning to Format Coq Code Using Language Models (2020)
- Experience Report: How Effective is Automated Program Repair for Industrial Software? (2020)
- Graph Representations for Higher-Order Logic and Theorem Proving (2020)
- Refining Fitness Functions in Test-Based Program Repair (2020)
- Generative Language Modeling for Automated Theorem Proving (2020)
- Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (2020)
- Generating correctness proofs with neural networks (2020)
- Evaluating representation learning of code changes for predicting patch correctness in program repair (2020)
- Automated patch correctness assessment (2020)
- Language Models Are Few-Shot Learners (2020)
- SOSRepair: Expressive Semantic Search for Real-World Program Repair (2019)
- Mutation Analysis for Coq (2019)
- SEQUENCER: Sequence-to-Sequence Learning for End-to-End Program Repair (2019)
- A manual inspection of Defects4J bugs and its implications for automatic program repair (2019)
- iFixR: bug report driven program repair (2019)
- Automated program repair (2019)
- Harnessing Evolution for Multi-Hunk Program Repair (2019)
- Fast Transformer Decoding: One Write-Head is All You Need (2019)
- Preventing undesirable behavior of intelligent machines (2019)
- HOList: An Environment for Machine Learning of Higher Order Logic Theorem Proving (2019)
- GamePad: A Learning Environment for Theorem Proving (2019)
- Offline Contextual Bandits with High Probability Fairness Guarantees (2019)
- Learning to prove theorems via interacting with proof assistants (2019)
- A regression proof selection tool for coq (2018)
- Hammer for Coq: Automation for Dependent Type Theory (2018)
- Automated clustering and program repair for introductory programming assignments (2018)
- Shaping program repair space with existing patches and similar code (2018)
- Semantic program repair using a reference implementation (2018)
- PaMpeR: proof method recommendation system for Isabelle/HOL (2018)
- piCoq: parallel regression proving for large-scale verification projects (2018)
- Search-Based Efficient Automated Program Repair Using Mutation and Fault Localization (2018)
- Search, align, and repair: data-driven feedback generation for introductory programming exercises (2018)
- Context-aware patch generation for better automated program repair (2018)
- Evaluating the Strategies of Statement Selection in Automated Program Repair (2018)
- Alleviating patch overfitting with automatic test generation: a study of feasibility and effectiveness for the Nopol repair system (2018)
- Hierarchical Neural Story Generation (2018)
- ICoq: Regression proof selection for large-scale verification projects (2017)
- Contract-based program repair without the contracts (2017)
- Fairness testing: testing software for discrimination (2017)
- Generating good generators for inductive relations (2017)
- Attention is all you need (2017)
- Identifying test-suite-overfitted patches through test case generation (2017)
- Better test cases for better automated program repair (2017)
- DeepFix: Fixing Common C Language Errors by Deep Learning (2017)
- ELIXIR: Effective object oriented program repair (2017)
- Coq, v.8.7 (2017)
- Automatically diagnosing and repairing error handling bugs in C (2017)
- Fault localization for automated program repair: effectiveness, performance, repair correctness (2016)
- Qlose: Program Repair with Quantitative Objectives (2016)
- History Driven Program Repair (2016)
- Automatic patch generation by learning correct code (2016)
- WaveNet: A Generative Model for Raw Audio (2016)
- Repairing Programs with Semantic Code Search (T) (2015)
- Preventing data errors with continuous testing (2015)
- An analysis of patch plausibility and correctness for generate-and-validate patch generation systems (2015)
- Is the cure worse than the disease? overfitting in automated program repair (2015)
- ACL2(ml): Machine-Learning for ACL2 (2014)
- Probabilistic Relational Reasoning for Differential Privacy (2013)
- Automatic patch generation learned from human-written patches (2013)
- Data debugging with continuous testing (2013)
- Leveraging program equivalence for adaptive program repair: Models and first results (2013)
- GenProg: A Generic Method for Automatic Software Repair (2011)
- seL4: Formal Verification of an OS Kernel (2009)
- The Current State and Future of Search Based Software Engineering (2007)