Skip to content

Commit a0292ad

Browse files
committed
Starting to edit Simulteaneous Diagonalizeation
1 parent 6d4ab88 commit a0292ad

2 files changed

Lines changed: 106 additions & 0 deletions

File tree

Mathlib/Analysis/InnerProductSpace/Projection.lean

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import Mathlib.Analysis.InnerProductSpace.Symmetric
99
import Mathlib.Analysis.NormedSpace.RCLike
1010
import Mathlib.Analysis.RCLike.Lemmas
1111
import Mathlib.Algebra.DirectSum.Decomposition
12+
import Mathlib.LinearAlgebra.Eigenspace.Basic
1213

1314
#align_import analysis.inner_product_space.projection from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
1415

@@ -477,6 +478,10 @@ def orthogonalProjection : E →L[𝕜] K :=
477478
nlinarith [orthogonalProjectionFn_norm_sq K x]
478479
#align orthogonal_projection orthogonalProjection
479480

481+
482+
483+
484+
theorem orthoeigen_commute {A B : E →ₗ[𝕜] E}(α : ℝ )(orthogonalProjection P : eigenspace A )(hAB: A ∘ₗ B = B ∘ₗ A)(hA : A.IsSymmetric): A * P = P * A := by sorry
480485
variable {K}
481486

482487
@[simp]
@@ -1442,4 +1447,5 @@ theorem maximal_orthonormal_iff_basis_of_finiteDimensional (hv : Orthonormal
14421447
rw [← h.span_eq, coe_h, hv_coe]
14431448
#align maximal_orthonormal_iff_basis_of_finite_dimensional maximal_orthonormal_iff_basis_of_finiteDimensional
14441449

1450+
14451451
end OrthonormalBasis

Mathlib/Analysis/InnerProductSpace/Symmetric.lean

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Authors: Moritz Doll, Frédéric Dupuis, Heather Macbeth
66
import Mathlib.Analysis.InnerProductSpace.Basic
77
import Mathlib.Analysis.NormedSpace.Banach
88
import Mathlib.LinearAlgebra.SesquilinearForm
9+
import Mathlib.LinearAlgebra.Eigenspace.Basic
10+
--import Mathlib.Analysis.InnerProductSpace.Projection
911

1012
#align_import analysis.inner_product_space.symmetric from "leanprover-community/mathlib"@"3f655f5297b030a87d641ad4e825af8d9679eb0b"
1113

@@ -192,3 +194,101 @@ theorem IsSymmetric.inner_map_self_eq_zero {T : E →ₗ[𝕜] E} (hT : T.IsSymm
192194
#align linear_map.is_symmetric.inner_map_self_eq_zero LinearMap.IsSymmetric.inner_map_self_eq_zero
193195

194196
end LinearMap
197+
198+
namespace Commutive
199+
200+
open LinearMap
201+
202+
open Module
203+
204+
open End
205+
206+
207+
theorem comm_simul_diag {A B : E →ₗ[𝕜] E}{α : ℝ }(hAB: A ∘ₗ B = B ∘ₗ A):
208+
{B v | v ∈ eigenspace A α } ⊆ eigenspace A α:= by
209+
rintro y ⟨z, hz⟩
210+
simp only [SetLike.mem_coe , eigenspace, mem_ker, sub_apply, algebraMap_end_apply] at *
211+
rw [← hz.2, ← comp_apply, hAB, ← map_smul, comp_apply, ← map_sub, hz.1, map_zero]
212+
213+
214+
theorem sharing_eigenspace {A B : E →ₗ[𝕜] E}(hAB: A ∘ₗ B = B ∘ₗ A){α β : ℝ}:
215+
{B v | v ∈ eigenspace A α ⊓ eigenspace B β} ⊆ (eigenspace A α ⊓ eigenspace B β):= by
216+
intro x ⟨ y ,⟨ ⟨hy1, hy2 ⟩, hy3⟩ ⟩
217+
constructor
218+
219+
simp only [SetLike.mem_coe] at *
220+
rw[hy3.symm]
221+
rw[mem_eigenspace_iff] at *
222+
rw[←comp_apply , hAB, ← map_smul, comp_apply, hy1]
223+
224+
simp only [SetLike.mem_coe] at *
225+
rw[mem_eigenspace_iff] at hy2
226+
rw[mem_eigenspace_iff, hy3.symm, ← map_smul ]
227+
rw[hy2]
228+
229+
230+
theorem eigen_subspace {A B : E →ₗ[𝕜] E}{hAB: Commute A B}{α β : ℝ}:
231+
(⨆ α , eigenspace A α ⊓ eigenspace B β) = eigenspace A α := by sorry
232+
233+
lemma ortho_eigen_commute{A B : E →ₗ[𝕜] E}(hAB : Commute A B) : A*B = B * A := by sorry
234+
235+
236+
theorem indiv_exhaust {A B : E →ₗ[𝕜] E}{hAB: Commute A B}{α β : ℝ}: (⨆ β , (eigenspace B β ⊓ eigenspace A α)) = eigenspace A α := by
237+
by_cases h : eigenspace A α = ⊥
238+
-- when eigenvalues are 0, weird they are coded in like that
239+
· conv =>
240+
lhs
241+
rw [h]
242+
conv =>
243+
rhs
244+
intro t
245+
rw [inf_bot_eq]
246+
simp only [iSup_bot, h]
247+
-- when there are eigenvalues
248+
· ext v
249+
constructor
250+
· intro h1
251+
simp [iSup, sSup] at h1
252+
apply h1
253+
refine Set.mem_def.mpr ?_
254+
intro a
255+
simp only [inf_le_right]
256+
· intro h2
257+
simp [iSup, sSup]
258+
intro K F
259+
specialize F α
260+
apply F
261+
simp only [Submodule.mem_inf]
262+
constructor
263+
swap
264+
exact h2
265+
266+
267+
rw[mem_eigenspace_iff] at *
268+
269+
270+
271+
have exh : (⨆ γ , eigenspace B γ) = E := by sorry--showing the 'map' is injective might be the key?
272+
have AA : v ∈ (⨆ γ , eigenspace B γ) := by sorry
273+
simp only [iSup, sSup, Set.mem_range, forall_exists_index, forall_apply_eq_imp_iff,
274+
Submodule.mem_mk, AddSubmonoid.mem_mk, AddSubsemigroup.mem_mk, Set.mem_iInter,
275+
SetLike.mem_coe] at AA
276+
apply AA
277+
refine Set.mem_def.mpr ?_
278+
279+
280+
have AB : ∃ γ : 𝕜, v ∈ eigenspace B γ := by sorry
281+
--apply F
282+
--simp only [Submodule.mem_inf]
283+
--constructor
284+
--swap
285+
--exact h
286+
287+
288+
rw [← Submodule.zero_eq_bot] at h
289+
--push_neg at h
290+
--have h2 := Submodule.exists_mem_ne_zero_of_ne_bot h
291+
--obtain ⟨w, hw⟩ := h2
292+
293+
294+
end Commutive

0 commit comments

Comments
 (0)