Reference. Adapting proof automation to adapt proofs
Cite
Cited by (7)
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.
QEDCartographer: Automating Formal Verification Using Reward-Free Reinforcement Learning sanchezstern-2025-qedcartographer
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
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.
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.
Cites 64 works (0 here)
External (64)
- Section 8.9: Controlling Automation (2017)
- iCoq: Regression Proof Selection for Large-scale Verification Projects (2017)
- The essence of ornaments (2017)
- Program Synthesis (2017)
- S3: syntax- and semantic-guided repair synthesis via programming by examples (2017)
- Type-directed diffing of structured data (2017)
- Automatic Software Repair: a Bibliography (2017)
- Equivalences for Free! (July (2017)
- ICoq: Regression proof selection for large-scale verification projects (2017)
- HaRe: The Haskell Refactoring Tool (2017)
- Isabelle/HOL: A Proof Assistant for Higher-Order Logic (2017)
- Lean Theorem Prover (2017)
- Library Coq.Logic.Decidable (2017)
- Software Foundations Solution (blindFS/Software-Foundations-Solutions) (2017)
- Software Foundations Solution (marshall-lee/software_foundations) (2017)
- Hammer for Coq: Automation for Dependent Type Theory (2017)
- Coq 8.7 beta 1 is out (2017)
- Coq Pull Request # 652: Put all plugins behind an “API” (2017)
- Commit to coq: Make IZR use a compact representation of integers (2017)
- Commit to verdi-raft: Port to Coq 8.6 (2017)
- CertiKOS: An Extensible Architecture for Building Certified Concurrent OS Kernels (2016)
- Automatic patch generation by learning correct code (2016)
- Angelix: scalable multiline program patch synthesis via symbolic analysis (2016)
- CoqPIE: An IDE Aimed at Improving Proof Development Productivity (2016)
- Congruence Closure in Intensional Type Theory (2016)
- Planning for change in a formal verification of the raft consensus protocol (2016)
- Automatic and Transparent Transfer of Theorems along Isomorphisms in the Coq Proof Assistant (2015)
- Preserving User Proofs across Specification Changes (2014)
- A theory of changes for higher-order languages: incrementalizing λ-calculi by static differentiation (2014)
- Automatic Program Repair by Fixing Contracts (2014)
- Ornaments in practice (2014)
- Matching Concepts across HOL Libraries (2014)
- The interaction of representation and reasoning (2013)
- The bedrock structured programming system: combining generative metaprogramming and hoare logic in an extensible program verifier (2013)
- Meta-theory à la carte (2013)
- Modular monadic meta-theory (2013)
- Lifting and Transfer: A Modular Design for Quotients in Isabelle/HOL (2013)
- Differential assertion checking (2013)
- Certified Programming with Dependent Types: A Pragmatic Introduction to the Coq Proof Assistant (2013)
- Commit to CompCert: lib/Integers.v (2013)
- Challenges and Experiences in Managing Large-Scale Proofs (2012)
- Programming with HigherOrder Logic (2012)
- How to make ad hoc proof automation less ad hoc (2011)
- Towards Formal Proof Script Refactoring (2011)
- Towards Formal Proof Script Refactoring (2011)
- Commit to coq: change definition of divide (compat with Znumtheory) (2011)
- Semantics-based change impact analysis for heterogeneous collections of documents (2010)
- Change Management for Heterogeneous Development Graphs (2010)
- Engineering formal metatheory (2008)
- Formal certification of a compiler back-end or: programming a compiler with a proof assistant (2006)
- Rippling: Meta-Level Guidance for Mathematical Reasoning (2005)
- Proof Reuse with Extended Inductive Types (2004)
- Theorem Reuse by Proof Term Transformation (2004)
- A survey of software refactoring (2004)
- Changing Data Structures in Type Theory: A Study of Natural Numbers (2002)
- Generalization in Type Theory Based Proof Assistants (2002)
- Type Isomorphisms and Proof Reuse in Dependent Type Theory (2001)
- Type Isomorphisms and Proof Reuse in Dependent Type Theory (2001)
- Management of change in structured verification (2000)
- Management of change in structured verification (2000)
- Semantics and Logics of Computation (1997)
- Generalization and reuse of tactic proofs (1994)
- Generalization and reuse of tactic proofs (1994)
- International Workshop on the Implementation of Logics (IWIL 2010)