Reference. Cobblestone: A Divide-and-Conquer Approach for Automating Formal Verification
Cite
Cites 80 works (7 here)
With notes (7)
Baldur: Whole-Proof Generation and Repair with Large Language Models first-2023-baldur
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.
REPLica: REPL instrumentation for Coq analysis ringer-2020-replica
CakeML: A verified implementation of ML kumar_cakeml_2014
We have developed and mechanically verified an ML system called CakeML, which supports a substantial subset of Standard ML. CakeML is implemented as an interactive read-eval-print loop (REPL) in x86-64 machine code. Our correctness theorem ensures that this REPL implementation prints only those results permitted by the semantics of CakeML. Our verification effort touches on a breadth of topics including lexing, parsing, type checking, incremental and dynamic compilation, garbage collection, arbitraryprecision arithmetic, and compiler bootstrapping.
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 (73)
- Cobblestone: A Divide-and-Conquer Approach for Automating Formal Verification (replication package) (2025)
- Coq-BB5 release v1.0.0 (2025)
- Forty-first International Conference on Machine Learning (2024)
- Proof Automation with Large Language Models (2024)
- Rango: Adaptive Retrieval-Augmented Proving for Automated Software Verification (2024)
- Proving Theorems Recursively (2024)
- Llemma: An Open Language Model for Mathematics (2024)
- Boosting of Thoughts: Trial-and-Error Problem Solving with Large Language Models (2024)
- MUSTARD: Mastering Uniform Synthesis of Theorem and Proof Data (2024)
- A Survey on Deep Learning for Theorem Proving (2024)
- CrowdStrike blames global it outage on bug in system for checking updates (2024)
- Magnushammer: A Transformer-based Approach to Premise Selection (2024)
- An In-Context Learning Agent for Formal Theorem-Proving (2024)
- LEGO-Prover: Neural Theorem Proving with Growing Libraries (2024)
- Subgoal-based Demonstration Learning for Formal Theorem Proving (2024)
- Lyra: Orchestrating Dual Correction in Automated Theorem Proving (2024)
- Graph of Thoughts: Solving Elaborate Problems with Large Language Models (2023)
- Navigate through Enigmatic Labyrinth A Survey of Chain of Thought Reasoning: Advances, Frontiers and Future (2023)
- Can Large Language Models Transform Natural Language Intent into Formal Method Postconditions? (2023)
- Seldonian Toolkit: Building Software with Safe and Fair Machine Learning (2023)
- Towards the Formal Verification of Wigderson’s Algorithm (2023)
- LeanDojo: Theorem Proving with Retrieval-Augmented Language Models (2023)
- Tree of Thoughts: Deliberate Problem Solving with Large Language Models (2023)
- Palm: Scaling language modeling with pathways (2023)
- Llama 2: Open Foundation and Fine-Tuned Chat Models (2023)
- Complexity-Based Prompting for Multi-step Reasoning (2023)
- Draft, Sketch, and Prove: Guiding Formal Theorem Provers with Informal Proofs (2023)
- GPT-4 Technical Report (2023)
- The Sledgehammer: Let Automatic Theorem Provers write your Isabelle scripts! (2023)
- Code Llama: Open Foundation Models for Code (2023)
- Self-Consistency Improves Chain of Thought Reasoning in Language Models (2023)
- Least-to-Most Prompting Enables Complex Reasoning in Large Language Models (2023)
- Diversity-Driven Automated Formal Verification (2022)
- Thor: Wielding Hammers to Integrate Language Models and Automated Theorem Provers (2022)
- Solving Quantitative Reasoning Problems with Language Models (2022)
- Proof Mate: An Interactive Proof Helper for PVS (Tool Paper) (2022)
- Training language models to follow instructions with human feedback (2022)
- Chain of Thought Prompting Elicits Reasoning in Large Language Models (2022)
- Fairness Guarantees under Demographic Shift (2022)
- The Cost of Poor Software Quality in the US: A 2022 Report (2022)
- The Lean 4 Theorem Prover and Programming Language (2021)
- Conference on Artificial Intelligence and Theorem Proving (AITP) (2021)
- Proof Repair (PhD dissertation, University of Washington) (2021)
- Evaluating Large Language Models Trained on Code (2021)
- TacTok: semantics-aware proof synthesis (2020)
- The Tactician - A Seamless, Interactive Tactic Learner and Prover for Coq (2020)
- C2S: translating natural language comments to formal program specifications (2020)
- Performance Improvements via Formally-Verified Cryptography in Firefox (2020)
- Simple High-Level Code for Cryptographic Arithmetic - With Proofs, Without Compromises (2019)
- Annual Conference on Neural Information Processing Systems (NeurIPS), Advances in Neural Information Processing Systems 32 (2019)
- Automatically Generating Precise Oracles from Structured Natural Language Specifications (2019)
- Graph Representations for Higher-Order Logic and Theorem Proving (2019)
- Generating correctness proofs with neural networks (2019)
- Faster, Higher, Stronger: E (2019)
- Preventing undesirable behavior of intelligent machines (2019)
- Learning to Reason in Large Theories without Imitation (2019)
- Learning to prove theorems via interacting with proof assistants (2019)
- Hammer for Coq: Automation for Dependent Type Theory (2018)
- GamePad: A Learning Environment for Theorem Proving (2018)
- FairSquare: probabilistic verification of program fairness (2017)
- Fairness testing: testing software for discrimination (2017)
- Coq, v.8.7 (2017)
- Automatic generation of oracles for exceptional behaviors (2016)
- Industrial Use of CompCert on a Safety-Critical Software Product (2014)
- seL4: From General Purpose to a Proof of Information Flow Enforcement (2013)
- System Description: E (2013)
- Using the GNU Compiler Collection (2012)
- Invariant Generation in Vampire (2011)
- seL4: formal verification of an OS kernel (2009)
- Z3: An Efficient SMT Solver (2008)
- Formal certification of a compiler back-end or: programming a compiler with a proof assistant (2006)
- LLVM: a compilation framework for lifelong program analysis & transformation (2004)
- 10.1007/978-3-642-22110-1_14