Analysis library compatible with Mathematical Components
This repository contains an experimental library for real analysis for the Coq proof-assistant and using the Mathematical Components library.
Meta
- Author(s):
- Reynald Affeldt (initial)
- Yves Bertot
- Cyril Cohen (initial)
- Marie Kerjean
- Assia Mahboubi (initial)
- Damien Rouhling (initial)
- Pierre Roux
- Kazuhiko Sakaguchi
- Zachary Stone
- Pierre-Yves Strub (initial)
- Laurent Théry
- License: CeCILL-C
- Compatible Coq versions: Coq 8.14 to 8.17 (or dev)
- Additional dependencies:
- Coq namespace:
mathcomp.analysis
- Related publication(s):
- Formalization Techniques for Asymptotic Reasoning in Classical Analysis (2018) doi:10.6092/issn.1972-5787/8124
- Formalisation Tools for Classical Analysis (2019)
- Competing inheritance paths in dependent type theory---a case study in functional analysis (2020) doi:10.1007/978-3-030-51054-1_1
- Measure Construction by Extension in Dependent Type Theory with Application to Integration (2023) doi:10.1007/s10817-023-09671-5
Building and installation instructions
The easiest way to install the latest released version of Analysis library compatible with Mathematical Components is via OPAM:
opam repo add coq-released https://coq.inria.fr/opam/released
opam install coq-mathcomp-analysis
To instead build and install manually, do:
git clone https://github.com/math-comp/analysis.git
cd analysis
make # or make -j <number-of-cores-on-your-machine>
make install
Disclaimer
This library is still at an experimental stage. Contents may change, definitions and theorems may be renamed, and inference mechanisms may be replaced at any major version bump. Use at your own risk.
Documentation
Each file is documented in its header (coqdoc presentation for the last version).
Changes are documented in CHANGELOG.md and CHANGELOG_UNRELEASED.md.
Overview presentation: Classical Analysis with Coq (2018)
See also "Related publication(s)" above.
Other work using MathComp-Analysis:
- A Formal Classical Proof of Hahn-Banach in Coq (2019)
- Semantics of Probabilistic Programs using s-Finite Kernels in Coq (2023)
- CoqQ: Foundational Verification of Quantum Programs (2023)
Mathematical structures
MathComp-Analysis adds mathematical structures on top of MathComp's ones.
The following inheritance diagram displays the resulting hiearchy
(excluding finGroupType
, countalg
, finalg
, and some order
structures).
The structures and inheritance introduced by MathComp-Analysis are highlighted.
The dotted inheritance edges to the numFieldType
structure are enabled only
when one imports numFieldNormedType.Exports
.
Development information
Detailed requirements and installation procedure
Previous work reused at the time of the first releases
This library was inspired by the Coquelicot library
by Sylvie Boldo, Catherine Lelay, and Guillaume Melquiond.
topology.v
and normedtype.v
contained a reimplementation of file
Hierarchy.v
from the library Coquelicot.
The instantiation of the mathematical structures of the Mathematical Components library
with the real numbers of the standard Coq library used a well-known file (Rstruct.v
)
from the CoqApprox library (with
modifications from various authors).
Our proof of Zorn's Lemma in classical_sets.v
(NB: new filename) is a reimplementation
of the one by Daniel Schepler (https://github.com/coq-community/zorns-lemma); we also took
inspiration from his work on topology (https://github.com/coq-community/topology) for parts
of topology.v
.
ORIGINAL_FILES.md gives more details about the files in the first releases.
Acknowledgments
Many thanks to various contributors