Projection blocks and reflections #
General RCLike block decomposition relative to an orthogonally complemented
subspace. This module is independent of the Davis--Kahan theory.
Provenance #
- Original repository: Davis--Kahan/DKPS formalization (Kitware, Inc.).
- Original module: authored directly in
ForMathlibat Davis--Kahan commitdf036cd; it has had no prior home. - Extraction class: authored in place, for Tau Ceti —
ForMathlibwas retired on 2026-07-29 andForTauCetiis the single staging library, whose destination is Tau Ceti and not Mathlib (ForTauCeti/README.md). - Original authors / copyright: Jon Crall, GPT 5.6 High; Copyright (c) 2026 Kitware, Inc.; Apache 2.0.
- Spectra influence: none — the
ForTauCetiimport firewall admits only Mathlib,TauCetiandForTauCeti(enforced byscripts/check_dependency_layers.py).
Equal subspaces have the same orthogonal projection.
HasOrthogonalProjection is a Prop class, so once the subspaces are identified
the two instance arguments coincide by proof irrelevance. This is needed
wherever a spectral development names one subspace two ways -- the range selected
by a complement set and the orthogonal complement of the range, say -- because
rw on the subspace itself produces an ill-typed motive: starProjection takes
an instance derived from the subspace being rewritten.
Pointwise form of Submodule.starProjection_congr, for rewriting under an
application.
Reflection through an orthogonally complemented subspace.
Equations
Instances For
Diagonal part of an operator relative to U ⊕ Uᗮ.
Equations
- U.diagonalPart A = U.starProjection ∘SL A ∘SL U.starProjection + Uᗮ.starProjection ∘SL A ∘SL Uᗮ.starProjection
Instances For
Off-diagonal part of an operator relative to U ⊕ Uᗮ.
Equations
- U.offDiagonalPart A = A - U.diagonalPart A
Instances For
The operator has vanishing diagonal blocks relative to U.
Equations
- U.IsOffDiagonal A = (U.diagonalPart A = 0)
Instances For
The diagonal part as a sum of two pinches. The definition is not exposed across module boundaries, so consumers rewrite with this.
The off-diagonal part as the diagonal-part defect.
Pointwise form of the diagonal part.
Pointwise form of the off-diagonal part.
Pointwise formula for reflection.
Reflection fixes the subspace it reflects through.
The pointwise formula gives 2 • P x - x, which is x exactly on U. Stated
separately because the useful form is the fixed-point one: a compression whose
input is restricted to U does not see the reflection at all.
The bundled reflection operator is Mathlib's Submodule.reflection. Stated
because reflectionOperator is not exposed across module boundaries, so a
consumer that needs the LinearIsometryEquiv -- to feed a naturality theorem
that quantifies over unitaries, say -- cannot see that the two agree.
Reflection is involutive.
The reflection in operator form: J_U = 2 P_U - I.
The pointwise formula reflectionOperator_apply is what simp uses, but the
two-projection algebra needs the operator identity, so that products of two
reflections can be expanded by ring normalisation rather than by chasing
vectors.
Reflection preserves norms.
Reflection is onto.
Reflection has operator norm at most one.
A reducing operator commutes with the corresponding reflection.
Complementary projection as I-P, pointwise.
Twice the diagonal pinch is A + JAJ.
Twice the off-diagonal extraction is A-JAJ.
Numerical range of a block-diagonal operator #
An operator that commutes with the reflection is determined block by block, and
so is its numerical range: the quadratic form splits as a sum over U and
Uᗮ with no cross term. Consequently a sign condition tested separately on the
two summands propagates to the whole space. This is the mechanism by which
"the diagonal blocks are positive" upgrades to "the numerical range is
nonnegative"; it is what the two-projection literature uses to characterise the
direct rotation among unitary square roots of the reflection product, and it is
about projections only.
The quadratic form of the diagonal pinch splits along U ⊕ Uᗮ.
⟪(P A P + P' A P') x, x⟫ = ⟪A (P x), P x⟫ + ⟪A (P' x), P' x⟫, each pinch term
read off on its own summand. No hypothesis on A: the pinch is defined to
discard the cross terms, and this identity says what survives.
Commuting with the reflection is the same as being block diagonal.
J A J = A forces A to equal its own diagonal pinch. Immediate from
two_smul_diagonalPart_eq_add_reflectionConjugate, which says
2 (P A P + P' A P') = A + J A J.
A block-diagonal operator with nonnegative blocks has nonnegative numerical range.
The hypotheses only constrain A on U and on Uᗮ separately, which for a
general operator says nothing about a mixed vector; commuting with the
reflection is exactly what removes the cross term.