@@ -6,6 +6,8 @@ Authors: Moritz Doll, Frédéric Dupuis, Heather Macbeth
66import Mathlib.Analysis.InnerProductSpace.Basic
77import Mathlib.Analysis.NormedSpace.Banach
88import 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
194196end 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