This site documents the code for the journal version of the paper Formalized functional analysis with semilinear maps by Frédéric Dupuis, Robert Y. Lewis, and Heather Macbeth. For the conference version published at ITP 2022, see here.
All of the code that we describe in our paper is available on the semilinear-paper-update branch of the mathlib repository. This branch is frozen at the date of submission of the camera-ready version. We maintain a backup at another repository
Much of the code we decribe is already integrated into the master branch of the mathlib repository.
The only pieces remaining to be integrated are the proofs of the spectral theorems.
You can view the diff between the semilinear-paper-update
branch and the master branch at the time of submission.
To download the code and explore it yourself:
leanproject get mathlib:semilinear-paper-update
Open folder
feature, or code mathlib_semilinear-paper-update/
, to open the root of the mathlib
repository.
algebra.module.linear_map
and data.equiv.module
.ring_hom_comp_triple
and ring_hom_inv_pair
needed for composition and inversion of semilinear maps appear in algebra.ring.comp_typeclasses
, as do most of the “universal” instances of these type classes. The instance star_ring_end.ring_hom_inv_pair
needed for composition of conjugate-linear maps appears in
algebra.star.basic
(the rest of that file was written by other authors).linear_algebra.basic
,
topology.algebra.module.basic
,
analysis.normed_space.linear_isometry
,
and analysis.normed_space.operator_norm
.is_R_or_C
type class is defined in data.complex.is_R_or_C
.inner_product_space.to_dual
) is defined in analysis.inner_product_space.dual
.continuous_linear_map.adjoint
) is defined in analysis.inner_product_space.adjoint
, as is its finite-dimensional specialization (linear_map.adjoint
).
The definitions of self-adjoint and normal operators (self_adjoint
, is_star_normal
) are in algebra.star.self_adjoint
; these definitions are made in the more abstract context of a star_ring
.
The “implementation detail” inner_product_space.is_normal
is defined in analysis.inner_product_space.basic
(the file as a whole has many authors).analysis.normed_space.lp_space
.
The Hilbert sum of a family of inner product spaces is found in analysis.inner_product_space.l2_space
.analysis.inner_product_space.spectrum
,
with many preliminaries in analysis.inner_product_space.rayleigh
.
Preliminaries about compact operators can be found in analysis.normed_space.compact_map
.analysis/fourier.lean
. The proof that continuous functions are dense in Lp can be found in measure_theory/function/continuous_map_dense.lean
, and the analogous fact for simple functions (our contribution was a refactor generalizing an existing result) is in measure_theory/function/simple_func_dense_lp.lean
.ring_theory.witt_vector.isocrystal
.
The construction of the “Frobenius rotation,” the key lemma of the classification theorem, is done in ring_theory.witt_vector.is_alg_closed
with preliminary work in ring_theory.witt_vector.mul_coeff
. Preliminary work to show that the Witt vectors over a domain are a domain is done in ring_theory.witt_vector.domain
. The fact that Witt vectors are a discrete valuation ring can be found in ring_theory/witt_vector/discrete_valuation_ring.lean
.Much of our work has already been merged into mathlib. We list some of the primary pull requests here for reference. This is far from a complete list of the PRs connected to this paper.
is_R_or_C
type classinner_product_space
from \(\mathbb{R}\) to is_R_or_C
self_adjoint