Reference. REPLica: REPL instrumentation for Coq analysis
Cite
Cited by (6)
Cobblestone: A Divide-and-Conquer Approach for Automating Formal Verification kasibatla-2026-cobblestone
Proof Repair across Quotient Type Equivalences viola-2025-proof
Proofs in proof assistants like Rocq can be brittle, breaking easily in response to changes. To address this, recent work introduced an algorithm and tool in Rocq to automatically repair broken proofs in response to changes that correspond to type equivalences. However, many changes remained out of the scope of this algorithm and tool—especially changes in underlying behavior . We extend this proof repair algorithm so that it can express certain changes in behavior that were previously out of scope. We focus in particular on equivalences between quotient types —types equipped with a relation that describes what it means for any two elements of that type to be equal. Quotient type equivalences can be used to express interesting changes in representations of mathematical structures, as well as changes in the implementations of data structures. We extend this algorithm and tool to support quotient type equivalences in Rocq. Notably, since Rocq lacks quotient types entirely, our extensions use Rocq’s setoid machinery in place of quotients. Specifically, (1) our extension to the algorithm supports new changes corresponding to setoids, and (2) our extension to the tool supports this new class of changes and further automates away some of the new proof obligations. We demonstrate our extensions on proof repair case studies for previously unsupported changes. We also perform manual proof repair in Cubical Agda, a language with a univalent metatheory, which allows us to construct the first ever internal proofs of correctness for proof repair.
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.
Proof Repair Infrastructure for Supervised Models: Building a Large Proof Repair Dataset reichel-2023-proof
We report on our efforts building a new, large proof-repair dataset and benchmark suite for the Coq proof assistant. The dataset is made up of Git commits from open-source projects with old and new versions of definitions and proofs aligned across commits. Building this dataset has been a significant undertaking, highlighting a number of challenges and gaps in existing infrastructure. We discuss these challenges and gaps, and we provide recommendations for how the proof assistant community can address them. Our hope is to make it easier to build datasets and benchmark suites so that machine-learning tools for proofs will move to target the tasks that matter most and do so equitably across proof assistants.
Proof repair across type equivalences ringer-2021-proof
Cites 50 works (3 here)
With notes (3)
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.
Ornaments for Proof Reuse in Coq ringer-2019-ornaments
Ornaments express relations between inductive types with the same inductive structure. We implement fully automatic proof reuse for a particular class of ornaments in a Coq plugin, and show how such a tool can give programmers the rewards of using indexed inductive types while automating away many of the costs. The plugin works directly on Coq code; it is the first ornamentation tool for a non-embedded dependently typed language. It is also the first tool to automatically identify ornaments: To lift a function or proof, the user must provide only the source type, the destination type, and the source function or proof. In taking advantage of the mathematical properties of ornaments, our approach produces faster functions and smaller terms than a more general approach to proof reuse in Coq.
Adapting proof automation to adapt proofs ringer-2018-adapting
External (47)
- Generating Correctness Proofs with Neural Networks (2019)
- Automatic refactoring for Agda (2019)
- The Coq Proof Assistant (2019)
- Learning to Prove Theorems via Interacting with Proof Assistants (2019)
- Pull Request: Highlight differences between successive proof steps (color, underline, etc.) (2018)
- TacticToe: Learning to Reason with HOL4 Tactics (2018)
- BP: Formal Proofs, the Fine Print and Side Effects (2018)
- PaMpeR: proof method recommendation system for Isabelle/HOL (2018)
- Hammer for Coq: Automation for Dependent Type Theory (2018)
- Front-end tooling for building and maintaining dependently-typed functional programs (2018)
- The Coq Commands: Customization at launch time (2018)
- The Coq Commands (2018)
- Coq Integrated Development Environment (2018)
- Guide to HOL4 interaction and basic proofs (2018)
- Type-directed diffing of structured data (2017)
- Formal Reasoning About Programs (2017)
- The Idris REPL (2017)
- Towards Formal Proof Metrics (2016)
- What’s in a Theorem Name? (2016)
- CoqPIE: An IDE Aimed at Improving Proof Development Productivity (2016)
- Planning for change in a formal verification of the raft consensus protocol (2016)
- SerAPI: Machine-Friendly, Data-Centric Serialization for Coq (2016)
- Refactoring Proofs with Tactician (2015)
- Mining the Archive of Formal Proofs (2015)
- Empirical study towards a leading indicator for cost of formal software verification (2015)
- Reducing Feedback Delay of Software Development Tools via Continuous Analysis (2015)
- Foundational Property-Based Testing (2015)
- Productivity for proof engineering (2014)
- Asynchronous User Interaction and Tool Integration in Isabelle/PIDE (2014)
- Polar: A Framework for Proof Refactoring (2013)
- Proof-Pattern Recognition and Lemma Discovery in ACL2 (2013)
- Machine Learning in Proof General: Interfacing Interfaces (2013)
- Formal specifications better than function points for code sizing (2013)
- Large-scale formal verification in practice: A process perspective (2012)
- Challenges and Experiences in Managing Large-Scale Proofs (2012)
- Isabelle/jEdit – A Prover IDE within the PIDE Framework (2012)
- Simulation modeling of a large-scale formal verification process (2012)
- Statistics on Digital Libraries of Mathematics (2009)
- Program comprehension as fact finding (2007)
- An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks (2006)
- Mylar: a degree-of-interest model for IDEs (2005)
- Proof Reuse with Extended Inductive Types (2004)
- A framework and methodology for studying the causes of software errors in programming systems (2004)
- How effective developers investigate source code: an exploratory study (2004)
- TreeJuxtaposer: scalable tree comparison using Focus+Context with guaranteed visibility (2003)
- Does code decay? Assessing the evidence from change management data (2001)
- Proof General: A Generic Tool for Proof Development (2000)