mathlib documentation

linear_algebra.projection

Projection to a subspace #

In this file we define

We also provide some lemmas justifying correctness of our definitions.

Tags #

projection, complement subspace

theorem linear_map.ker_id_sub_eq_of_proj {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p : submodule R E} {f : E →ₗ[R] ↥p} (hf : ∀ (x : ↥p), ⇑f ↑x = x) :
theorem linear_map.range_eq_of_proj {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p : submodule R E} {f : E →ₗ[R] ↥p} (hf : ∀ (x : ↥p), ⇑f ↑x = x) :
theorem linear_map.is_compl_of_proj {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p : submodule R E} {f : E →ₗ[R] ↥p} (hf : ∀ (x : ↥p), ⇑f ↑x = x) :
noncomputable def submodule.quotient_equiv_of_is_compl {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p q : submodule R E) (h : is_compl p q) :
(E ⧸ p) ≃ₗ[R] ↥q

If q is a complement of p, then M/p ≃ q.

Equations
@[simp]
theorem submodule.quotient_equiv_of_is_compl_symm_apply {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p q : submodule R E) (h : is_compl p q) (x : ↥q) :
@[simp]
theorem submodule.quotient_equiv_of_is_compl_apply_mk_coe {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p q : submodule R E) (h : is_compl p q) (x : ↥q) :
@[simp]
theorem submodule.mk_quotient_equiv_of_is_compl_apply {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p q : submodule R E) (h : is_compl p q) (x : E ⧸ p) :
noncomputable def submodule.prod_equiv_of_is_compl {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p q : submodule R E) (h : is_compl p q) :

If q is a complement of p, then p × q is isomorphic to E. It is the unique linear map f : E → p such that f x = x for x ∈ p and f x = 0 for x ∈ q.

Equations
@[simp]
theorem submodule.coe_prod_equiv_of_is_compl {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p q : submodule R E) (h : is_compl p q) :
@[simp]
theorem submodule.coe_prod_equiv_of_is_compl' {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p q : submodule R E) (h : is_compl p q) (x : ↥p × ↥q) :
@[simp]
theorem submodule.prod_equiv_of_is_compl_symm_apply_left {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p q : submodule R E) (h : is_compl p q) (x : ↥p) :
@[simp]
theorem submodule.prod_equiv_of_is_compl_symm_apply_right {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p q : submodule R E) (h : is_compl p q) (x : ↥q) :
@[simp]
theorem submodule.prod_equiv_of_is_compl_symm_apply_fst_eq_zero {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p q : submodule R E) (h : is_compl p q) {x : E} :
@[simp]
theorem submodule.prod_equiv_of_is_compl_symm_apply_snd_eq_zero {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p q : submodule R E) (h : is_compl p q) {x : E} :
@[simp]
noncomputable def submodule.linear_proj_of_is_compl {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p q : submodule R E) (h : is_compl p q) :

Projection to a submodule along its complement.

Equations
@[simp]
theorem submodule.linear_proj_of_is_compl_apply_left {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p q : submodule R E} (h : is_compl p q) (x : ↥p) :
@[simp]
theorem submodule.linear_proj_of_is_compl_range {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p q : submodule R E} (h : is_compl p q) :
@[simp]
theorem submodule.linear_proj_of_is_compl_apply_eq_zero_iff {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p q : submodule R E} (h : is_compl p q) {x : E} :
theorem submodule.linear_proj_of_is_compl_apply_right' {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p q : submodule R E} (h : is_compl p q) (x : E) (hx : x ∈ q) :
@[simp]
theorem submodule.linear_proj_of_is_compl_apply_right {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p q : submodule R E} (h : is_compl p q) (x : ↥q) :
@[simp]
theorem submodule.linear_proj_of_is_compl_ker {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p q : submodule R E} (h : is_compl p q) :
theorem submodule.linear_proj_of_is_compl_comp_subtype {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p q : submodule R E} (h : is_compl p q) :
theorem submodule.linear_proj_of_is_compl_idempotent {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p q : submodule R E} (h : is_compl p q) (x : E) :
theorem submodule.exists_unique_add_of_is_compl_prod {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p q : submodule R E} (hc : is_compl p q) (x : E) :
∃! (u : ↥p × ↥q), ↑(u.fst) + ↑(u.snd) = x
theorem submodule.exists_unique_add_of_is_compl {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p q : submodule R E} (hc : is_compl p q) (x : E) :
∃ (u : ↥p) (v : ↥q), ↑u + ↑v = x ∧ ∀ (r : ↥p) (s : ↥q), ↑r + ↑s = x → r = u ∧ s = v
theorem submodule.linear_proj_add_linear_proj_of_is_compl_eq_self {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p q : submodule R E} (hpq : is_compl p q) (x : E) :
noncomputable def linear_map.of_is_compl {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {F : Type u_3} [add_comm_group F] [module R F] {p q : submodule R E} (h : is_compl p q) (φ : ↥p →ₗ[R] F) (ψ : ↥q →ₗ[R] F) :

Given linear maps φ and ψ from complement submodules, of_is_compl is the induced linear map over the entire module.

Equations
@[simp]
theorem linear_map.of_is_compl_left_apply {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {F : Type u_3} [add_comm_group F] [module R F] {p q : submodule R E} (h : is_compl p q) {φ : ↥p →ₗ[R] F} {ψ : ↥q →ₗ[R] F} (u : ↥p) :
@[simp]
theorem linear_map.of_is_compl_right_apply {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {F : Type u_3} [add_comm_group F] [module R F] {p q : submodule R E} (h : is_compl p q) {φ : ↥p →ₗ[R] F} {ψ : ↥q →ₗ[R] F} (v : ↥q) :
theorem linear_map.of_is_compl_eq {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {F : Type u_3} [add_comm_group F] [module R F] {p q : submodule R E} (h : is_compl p q) {φ : ↥p →ₗ[R] F} {ψ : ↥q →ₗ[R] F} {χ : E →ₗ[R] F} (hφ : ∀ (u : ↥p), ⇑φ u = ⇑χ ↑u) (hψ : ∀ (u : ↥q), ⇑ψ u = ⇑χ ↑u) :
theorem linear_map.of_is_compl_eq' {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {F : Type u_3} [add_comm_group F] [module R F] {p q : submodule R E} (h : is_compl p q) {φ : ↥p →ₗ[R] F} {ψ : ↥q →ₗ[R] F} {χ : E →ₗ[R] F} (hφ : φ = χ.comp p.subtype) (hψ : ψ = χ.comp q.subtype) :
@[simp]
theorem linear_map.of_is_compl_zero {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {F : Type u_3} [add_comm_group F] [module R F] {p q : submodule R E} (h : is_compl p q) :
@[simp]
theorem linear_map.of_is_compl_add {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {F : Type u_3} [add_comm_group F] [module R F] {p q : submodule R E} (h : is_compl p q) {φ₁ φ₂ : ↥p →ₗ[R] F} {ψ₁ ψ₂ : ↥q →ₗ[R] F} :
linear_map.of_is_compl h (φ₁ + φ₂) (ψ₁ + ψ₂) = linear_map.of_is_compl h φ₁ ψ₁ + linear_map.of_is_compl h φ₂ ψ₂
@[simp]
theorem linear_map.of_is_compl_smul {R : Type u_1} [comm_ring R] {E : Type u_2} [add_comm_group E] [module R E] {F : Type u_3} [add_comm_group F] [module R F] {p q : submodule R E} (h : is_compl p q) {φ : ↥p →ₗ[R] F} {ψ : ↥q →ₗ[R] F} (c : R) :
noncomputable def linear_map.of_is_compl_prod {E : Type u_2} [add_comm_group E] {F : Type u_3} [add_comm_group F] {R₁ : Type u_5} [comm_ring R₁] [module R₁ E] [module R₁ F] {p q : submodule R₁ E} (h : is_compl p q) :
(↥p →ₗ[R₁] F) × (↥q →ₗ[R₁] F) →ₗ[R₁] E →ₗ[R₁] F

The linear map from (p →ₗ[R₁] F) × (q →ₗ[R₁] F) to E →ₗ[R₁] F.

Equations
@[simp]
theorem linear_map.of_is_compl_prod_apply {E : Type u_2} [add_comm_group E] {F : Type u_3} [add_comm_group F] {R₁ : Type u_5} [comm_ring R₁] [module R₁ E] [module R₁ F] {p q : submodule R₁ E} (h : is_compl p q) (φ : (↥p →ₗ[R₁] F) × (↥q →ₗ[R₁] F)) :
noncomputable def linear_map.of_is_compl_prod_equiv {E : Type u_2} [add_comm_group E] {F : Type u_3} [add_comm_group F] {R₁ : Type u_5} [comm_ring R₁] [module R₁ E] [module R₁ F] {p q : submodule R₁ E} (h : is_compl p q) :
((↥p →ₗ[R₁] F) × (↥q →ₗ[R₁] F)) ≃ₗ[R₁] E →ₗ[R₁] F

The natural linear equivalence between (p →ₗ[R₁] F) × (q →ₗ[R₁] F) and E →ₗ[R₁] F.

Equations
@[simp]
theorem linear_map.linear_proj_of_is_compl_of_proj {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {p : submodule R E} (f : E →ₗ[R] ↥p) (hf : ∀ (x : ↥p), ⇑f ↑x = x) :
noncomputable def linear_map.equiv_prod_of_surjective_of_is_compl {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {F : Type u_3} [add_comm_group F] [module R F] {G : Type u_4} [add_comm_group G] [module R G] (f : E →ₗ[R] F) (g : E →ₗ[R] G) (hf : f.range = ⊤) (hg : g.range = ⊤) (hfg : is_compl f.ker g.ker) :
E ≃ₗ[R] F × G

If f : E →ₗ[R] F and g : E →ₗ[R] G are two surjective linear maps and their kernels are complement of each other, then x ↦ (f x, g x) defines a linear equivalence E ≃ₗ[R] F × G.

Equations
@[simp]
theorem linear_map.coe_equiv_prod_of_surjective_of_is_compl {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {F : Type u_3} [add_comm_group F] [module R F] {G : Type u_4} [add_comm_group G] [module R G] {f : E →ₗ[R] F} {g : E →ₗ[R] G} (hf : f.range = ⊤) (hg : g.range = ⊤) (hfg : is_compl f.ker g.ker) :
@[simp]
theorem linear_map.equiv_prod_of_surjective_of_is_compl_apply {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] {F : Type u_3} [add_comm_group F] [module R F] {G : Type u_4} [add_comm_group G] [module R G] {f : E →ₗ[R] F} {g : E →ₗ[R] G} (hf : f.range = ⊤) (hg : g.range = ⊤) (hfg : is_compl f.ker g.ker) (x : E) :
noncomputable def submodule.is_compl_equiv_proj {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p : submodule R E) :
{q // is_compl p q} ≃ {f // ∀ (x : ↥p), ⇑f ↑x = x}

Equivalence between submodules q such that is_compl p q and linear maps f : E →ₗ[R] p such that ∀ x : p, f x = x.

Equations
@[simp]
theorem submodule.coe_is_compl_equiv_proj_apply {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p : submodule R E) (q : {q // is_compl p q}) :
@[simp]
theorem submodule.coe_is_compl_equiv_proj_symm_apply {R : Type u_1} [ring R] {E : Type u_2} [add_comm_group E] [module R E] (p : submodule R E) (f : {f // ∀ (x : ↥p), ⇑f ↑x = x}) :