Documentation

Mathlib.Analysis.InnerProductSpace.Projection.Submodule

Subspaces associated with orthogonal projections #

Here, the orthogonal projection is used to prove a series of more subtle lemmas about the orthogonal complement of subspaces of E (the orthogonal complement itself was defined in Analysis.InnerProductSpace.Orthogonal) such that they admit orthogonal projections; the lemma Submodule.sup_orthogonal_of_hasOrthogonalProjection, stating that for a subspace K of E such that K admits an orthogonal projection we have K ⊔ Kᗮ = ⊤, is a typical example.

theorem Submodule.sup_orthogonal_inf_of_hasOrthogonalProjection {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K₁ K₂ : Submodule 𝕜 E} (h : K₁ ≤ K₂) [K₁.HasOrthogonalProjection] :
K₁ ⊔ K₁ᗮ ⊓ K₂ = K₂

If K₁ admits an orthogonal projection and is contained in K₂, then K₁ and K₁ᗮ ⊓ K₂ span K₂.

@[deprecated Submodule.sup_orthogonal_inf_of_hasOrthogonalProjection (since := "2025-07-27")]
theorem Submodule.sup_orthogonal_inf_of_completeSpace {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K₁ K₂ : Submodule 𝕜 E} (h : K₁ ≤ K₂) [K₁.HasOrthogonalProjection] :
K₁ ⊔ K₁ᗮ ⊓ K₂ = K₂

Alias of Submodule.sup_orthogonal_inf_of_hasOrthogonalProjection.


If K₁ admits an orthogonal projection and is contained in K₂, then K₁ and K₁ᗮ ⊓ K₂ span K₂.

theorem Submodule.sup_orthogonal_of_hasOrthogonalProjection {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K : Submodule 𝕜 E} [K.HasOrthogonalProjection] :
K ⊔ Kᗮ = ⊤

If K admits an orthogonal projection, then K and Kᗮ span the whole space.

@[deprecated Submodule.sup_orthogonal_of_hasOrthogonalProjection (since := "2025-07-27")]
theorem Submodule.sup_orthogonal_of_completeSpace {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K : Submodule 𝕜 E} [K.HasOrthogonalProjection] :
K ⊔ Kᗮ = ⊤

Alias of Submodule.sup_orthogonal_of_hasOrthogonalProjection.


If K admits an orthogonal projection, then K and Kᗮ span the whole space.

@[simp]
theorem Submodule.orthogonal_orthogonal {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (K : Submodule 𝕜 E) [K.HasOrthogonalProjection] :

If K admits an orthogonal projection, then the orthogonal complement of its orthogonal complement is itself.

theorem Submodule.orthogonal_le_orthogonal_iff {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K₀ K₁ : Submodule 𝕜 E} [K₀.HasOrthogonalProjection] [K₁.HasOrthogonalProjection] :
K₀ᗮ ≤ K₁ᗮ ↔ K₁ ≤ K₀
theorem Submodule.orthogonal_le_iff_orthogonal_le {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K₀ K₁ : Submodule 𝕜 E} [K₀.HasOrthogonalProjection] [K₁.HasOrthogonalProjection] :
K₀ᗮ ≤ K₁ ↔ K₁ᗮ ≤ K₀
theorem Submodule.le_orthogonal_iff_le_orthogonal {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K₀ K₁ : Submodule 𝕜 E} [K₀.HasOrthogonalProjection] [K₁.HasOrthogonalProjection] :
K₀ ≤ K₁ᗮ ↔ K₁ ≤ K₀ᗮ
theorem Submodule.orthogonal_orthogonal_eq_closure {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] (K : Submodule 𝕜 E) [CompleteSpace E] :

In a Hilbert space, the orthogonal complement of the orthogonal complement of a subspace K is the topological closure of K.

Note that the completeness assumption is necessary. Let E be the space ℕ →₀ ℝ with inner space structure inherited from PiLp 2 (fun _ : ℕ ↦ ℝ). Let K be the subspace of sequences with the sum of all elements equal to zero. Then Kᗮ = ⊥, Kᗮᗮ = ⊤.

If K admits an orthogonal projection, K and Kᗮ are complements of each other.

@[deprecated Submodule.isCompl_orthogonal_of_hasOrthogonalProjection (since := "2025-07-27")]
theorem Submodule.isCompl_orthogonal_of_completeSpace {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K : Submodule 𝕜 E} [K.HasOrthogonalProjection] :

Alias of Submodule.isCompl_orthogonal_of_hasOrthogonalProjection.


If K admits an orthogonal projection, K and Kᗮ are complements of each other.

@[simp]
theorem Submodule.orthogonal_eq_bot_iff {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K : Submodule 𝕜 E} [K.HasOrthogonalProjection] :
theorem Submodule.starProjection_tendsto_closure_iSup {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {ι : Type u_4} [Preorder ι] (U : ι → Submodule 𝕜 E) [∀ (i : ι), (U i).HasOrthogonalProjection] [(⨆ (i : ι), U i).topologicalClosure.HasOrthogonalProjection] (hU : Monotone U) (x : E) :
Filter.Tendsto (fun (i : ι) => (U i).starProjection x) Filter.atTop (nhds ((⨆ (i : ι), U i).topologicalClosure.starProjection x))

Given a monotone family U of complete submodules of E and a fixed x : E, the orthogonal projection of x on U i tends to the orthogonal projection of x on (⨆ i, U i).topologicalClosure along atTop.

@[deprecated Submodule.starProjection_tendsto_closure_iSup (since := "2025-07-07")]
theorem Submodule.orthogonalProjection_tendsto_closure_iSup {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {ι : Type u_4} [Preorder ι] (U : ι → Submodule 𝕜 E) [∀ (i : ι), (U i).HasOrthogonalProjection] [(⨆ (i : ι), U i).topologicalClosure.HasOrthogonalProjection] (hU : Monotone U) (x : E) :
Filter.Tendsto (fun (i : ι) => (U i).starProjection x) Filter.atTop (nhds ((⨆ (i : ι), U i).topologicalClosure.starProjection x))

Alias of Submodule.starProjection_tendsto_closure_iSup.


Given a monotone family U of complete submodules of E and a fixed x : E, the orthogonal projection of x on U i tends to the orthogonal projection of x on (⨆ i, U i).topologicalClosure along atTop.

theorem Submodule.starProjection_tendsto_self {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {ι : Type u_4} [Preorder ι] (U : ι → Submodule 𝕜 E) [∀ (t : ι), (U t).HasOrthogonalProjection] (hU : Monotone U) (x : E) (hU' : ⊤ ≤ (⨆ (t : ι), U t).topologicalClosure) :
Filter.Tendsto (fun (t : Κ) => (U t).starProjection x) Filter.atTop (nhds x)

Given a monotone family U of complete submodules of E with dense span supremum, and a fixed x : E, the orthogonal projection of x on U i tends to x along at_top.

@[deprecated Submodule.starProjection_tendsto_self (since := "2025-07-07")]
theorem Submodule.orthogonalProjection_tendsto_self {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {ι : Type u_4} [Preorder ι] (U : ι → Submodule 𝕜 E) [∀ (t : ι), (U t).HasOrthogonalProjection] (hU : Monotone U) (x : E) (hU' : ⊤ ≤ (⨆ (t : ι), U t).topologicalClosure) :
Filter.Tendsto (fun (t : Κ) => (U t).starProjection x) Filter.atTop (nhds x)

Alias of Submodule.starProjection_tendsto_self.


Given a monotone family U of complete submodules of E with dense span supremum, and a fixed x : E, the orthogonal projection of x on U i tends to x along at_top.

theorem Submodule.triorthogonal_eq_orthogonal {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K : Submodule 𝕜 E} [CompleteSpace E] :

The orthogonal complement satisfies Kᗮᗮᗮ = Kᗮ.

The closure of K is the full space iff Kᗮ is trivial.

@[deprecated Submodule.orthogonalProjection_eq_linearProjOfIsCompl (since := "2025-07-11")]
theorem Submodule.orthogonalProjection_eq_linear_proj {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K : Submodule 𝕜 E} [K.HasOrthogonalProjection] (x : E) :

Alias of Submodule.orthogonalProjection_eq_linearProjOfIsCompl.

@[deprecated Submodule.orthogonalProjection_coe_eq_linearProjOfIsCompl (since := "2025-07-11")]

Alias of Submodule.orthogonalProjection_coe_eq_linearProjOfIsCompl.

theorem Dense.eq_zero_of_inner_left {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K : Submodule 𝕜 E} {x : E} (hK : Dense ↑K) (h : ∀ (v : ↥K), inner 𝕜 x ↑v = 0) :
x = 0
theorem Dense.eq_zero_of_mem_orthogonal {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K : Submodule 𝕜 E} {x : E} (hK : Dense ↑K) (h : x ∈ Kᗮ) :
x = 0
theorem Dense.eq_of_sub_mem_orthogonal {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K : Submodule 𝕜 E} {x y : E} (hK : Dense ↑K) (h : x - y ∈ Kᗮ) :
x = y

If S is dense and x - y ∈ Kᗮ, then x = y.

theorem Dense.eq_of_inner_left {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K : Submodule 𝕜 E} {x y : E} (hK : Dense ↑K) (h : ∀ (v : ↥K), inner 𝕜 x ↑v = inner 𝕜 y ↑v) :
x = y
theorem Dense.eq_of_inner_right {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K : Submodule 𝕜 E} {x y : E} (hK : Dense ↑K) (h : ∀ (v : ↥K), inner 𝕜 (↑v) x = inner 𝕜 (↑v) y) :
x = y
theorem Dense.eq_zero_of_inner_right {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {K : Submodule 𝕜 E} {x : E} (hK : Dense ↑K) (h : ∀ (v : ↥K), inner 𝕜 (↑v) x = 0) :
x = 0