Documentation

LeanPool.DavisKahan.ForTauCeti.Analysis.InnerProductSpace.Projection.Blocks

Projection blocks and reflections #

General RCLike block decomposition relative to an orthogonally complemented subspace. This module is independent of the Davis--Kahan theory.

Provenance #

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.

noncomputable def Submodule.reflectionOperator {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (U : Submodule 𝕜 E) [U.HasOrthogonalProjection] :
E →L[𝕜] E

Reflection through an orthogonally complemented subspace.

Equations
Instances For
    noncomputable def Submodule.diagonalPart {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (U : Submodule 𝕜 E) [U.HasOrthogonalProjection] (A : E →L[𝕜] E) :
    E →L[𝕜] E

    Diagonal part of an operator relative to U ⊕ Uᗮ.

    Equations
    Instances For
      noncomputable def Submodule.offDiagonalPart {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (U : Submodule 𝕜 E) [U.HasOrthogonalProjection] (A : E →L[𝕜] E) :
      E →L[𝕜] E

      Off-diagonal part of an operator relative to U ⊕ Uᗮ.

      Equations
      Instances For
        def Submodule.IsOffDiagonal {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (U : Submodule 𝕜 E) [U.HasOrthogonalProjection] (A : E →L[𝕜] E) :

        The operator has vanishing diagonal blocks relative to U.

        Equations
        Instances For

          The diagonal part as a sum of two pinches. The definition is not exposed across module boundaries, so consumers rewrite with this.

          theorem Submodule.offDiagonalPart_eq {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (U : Submodule 𝕜 E) [U.HasOrthogonalProjection] (A : E →L[𝕜] E) :

          The off-diagonal part as the diagonal-part defect.

          theorem Submodule.diagonalPart_apply {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (U : Submodule 𝕜 E) [U.HasOrthogonalProjection] (A : E →L[𝕜] E) (x : E) :

          Pointwise form of the diagonal part.

          theorem Submodule.offDiagonalPart_apply {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (U : Submodule 𝕜 E) [U.HasOrthogonalProjection] (A : E →L[𝕜] E) (x : E) :
          (U.offDiagonalPart A) x = A x - (U.diagonalPart A) x

          Pointwise form of the off-diagonal part.

          @[simp]

          Pointwise formula for reflection.

          theorem Submodule.reflectionOperator_apply_of_mem {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (U : Submodule 𝕜 E) [U.HasOrthogonalProjection] {x : E} (hx : x ∈ U) :

          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.

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

          theorem Submodule.inner_diagonalPart_apply_self {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (U : Submodule 𝕜 E) [U.HasOrthogonalProjection] (A : E →L[𝕜] E) (x : E) :
          inner 𝕜 ((U.diagonalPart A) x) x = inner 𝕜 (A (U.starProjection x)) (U.starProjection x) + inner 𝕜 (A (Uᗮ.starProjection x)) (Uᗮ.starProjection x)

          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.

          theorem Submodule.re_inner_apply_self_nonneg_of_reflectionConjugate {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (U : Submodule 𝕜 E) [U.HasOrthogonalProjection] {A : E →L[𝕜] E} (hA : U.reflectionOperator ∘SL A ∘SL U.reflectionOperator = A) (hU : ∀ x ∈ U, 0 ≤ RCLike.re (inner 𝕜 (A x) x)) (hUperp : ∀ x ∈ Uᗮ, 0 ≤ RCLike.re (inner 𝕜 (A x) x)) (x : E) :
          0 ≤ RCLike.re (inner 𝕜 (A x) x)

          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.