Reference. Ornaments for Proof Reuse in Coq

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.

Cite

Cite as @ringer-2019-ornaments (helia, typst) · \cite{ringer-2019-ornaments} (LaTeX)
BibTeX
bibtex · 14 lines
@inproceedings{ringer-2019-ornaments,
  doi = {10.4230/LIPICS.ITP.2019.26},
  url = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ITP.2019.26},
  author = {Ringer, Talia and Yazdani, Nathaniel and Leo, John and Grossman, Dan},
  keywords = {ornaments, proof reuse, proof automation, Software and its engineering → Formal software verification},
  language = {en},
  title = {Ornaments for Proof Reuse in Coq},
  volume = {141},
  pages = {26:1-26:19},
  publisher = {Schloss Dagstuhl – Leibniz-Zentrum für Informatik},
  year = {2019},
  copyright = {Creative Commons Attribution 3.0 Unported license},
  booktitle = {10th International Conference on Interactive Theorem Proving (ITP 2019)}
}
hayagriva YAML (typst)
yaml · 18 lines
ringer-2019-ornaments:
  type: article
  title: Ornaments for Proof Reuse in Coq
  author:
  - Ringer, Talia
  - Yazdani, Nathaniel
  - Leo, John
  - Grossman, Dan
  date: 2019
  page-range: 26:1-26:19
  url: https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ITP.2019.26
  serial-number:
    doi: 10.4230/LIPICS.ITP.2019.26
  parent:
    type: proceedings
    title: 10th International Conference on Interactive Theorem Proving (ITP 2019)
    publisher: Schloss Dagstuhl – Leibniz-Zentrum für Informatik
    volume: 141
Cited by (5)

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.
DOI

Proof repair across type equivalences ringer-2021-proof

PDF · DOI · pldb

Internalizing representation independence with univalence angiuli-2021-internalizing

In their usual form, representation independence metatheorems provide an external guarantee that two implementations of an abstract interface are interchangeable when they are related by an operation-preserving correspondence. If our programming language is dependently-typed, however, we would like to appeal to such invariance results within the language itself, in order to obtain correctness theorems for complex implementations by transferring them from simpler, related implementations. Recent work in proof assistants has shown that Voevodsky’s univalence principle allows transferring theorems between isomorphic types, but many instances of representation independence in programming involve non-isomorphic representations. In this paper, we develop techniques for establishing internal relational representation independence results in dependent type theory, by using higher inductive types to simultaneously quotient two related implementation types by a heterogeneous correspondence between them. The correspondence becomes an isomorphism between the quotiented types, thereby allowing us to obtain an equality of implementations by univalence. We illustrate our techniques by considering applications to matrices, queues, and finite multisets. Our results are all formalized in Cubical Agda, a recent extension of Agda which supports univalence and higher inductive types in a computationally well-behaved way.
PDF · DOI · pldb

REPLica: REPL instrumentation for Coq analysis ringer-2020-replica

PDF · DOI · pldb

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.
DOI
Cites 34 works (2 here)
With notes (2)

Adapting proof automation to adapt proofs ringer-2018-adapting

PDF · DOI · pldb

Homotopy Type Theory: Univalent Foundations of Mathematics hottbook

Web · arXiv
External (32)
ringer-2019-ornaments reference entries/refs/ringer-2019-ornaments/ringer-2019-ornaments.hel