-
Notifications
You must be signed in to change notification settings - Fork 1.2k
feat(Analysis/CStarAlgebra): norms of sums of orthogonal selfadjoint elements #36416
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 4 commits
98cd087
7e9cc94
4da3f1d
a45bfe2
16f32ea
84f642a
d9d8925
2a972f7
cf2e343
eb2b873
716fc90
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -130,6 +130,8 @@ end ComplexBanachAlgebra | |
|
|
||
| section ComplexCStarAlgebra | ||
|
|
||
| section Commutative | ||
|
|
||
| variable {A : Type*} [CommCStarAlgebra A] | ||
|
|
||
| theorem gelfandTransform_map_star (a : A) : | ||
|
|
@@ -193,6 +195,88 @@ noncomputable def gelfandStarTransform : A ≃⋆ₐ[ℂ] C(characterSpace ℂ A | |
| { gelfandTransform ℂ A with map_star' := fun x => gelfandTransform_map_star x }) | ||
| (gelfandTransform_bijective A) | ||
|
|
||
| end Commutative | ||
|
|
||
| section NonUnitalComm | ||
|
|
||
| variable {A : Type*} [NonUnitalCommCStarAlgebra A] | ||
|
|
||
| open scoped CStarAlgebra in | ||
| open Unitization in | ||
| lemma CommCStarAlgebra.norm_add_eq_max {a b : A} (h : a * b = 0) : | ||
| ‖a + b‖ = max ‖a‖ ‖b‖ := by | ||
| let f := gelfandStarTransform A⁺¹ ∘ inrNonUnitalAlgHom ℂ A | ||
| have hf : Isometry f := gelfandTransform_isometry _ |>.comp isometry_inr | ||
| simp_rw [← hf.norm_map_of_map_zero (by simp [f]), show f (a + b) = f a + f b by simp [f]] | ||
| exact ContinuousMap.norm_add_eq_max <| by simpa [f] using congr(f $h) | ||
|
|
||
| lemma CommCStarAlgebra.nnnorm_add_eq_max {a b : A} (h : a * b = 0) : | ||
| ‖a + b‖₊ = max ‖a‖₊ ‖b‖₊ := | ||
| NNReal.eq <| CommCStarAlgebra.norm_add_eq_max h | ||
|
|
||
| lemma CommCStarAlgebra.norm_sub_eq_max {a b : A} (h : a * b = 0) : | ||
| ‖a - b‖ = max ‖a‖ ‖b‖ := by | ||
| simpa [sub_eq_add_neg] using norm_add_eq_max (a := a) (b := -b) (by simpa) | ||
|
|
||
| lemma CommCStarAlgebra.nnnorm_sub_eq_max {a b : A} (h : a * b = 0) : | ||
| ‖a - b‖₊ = max ‖a‖₊ ‖b‖₊ := | ||
| NNReal.eq <| norm_sub_eq_max h | ||
|
|
||
| end NonUnitalComm | ||
|
|
||
| section NonUnital | ||
|
|
||
| variable {A : Type*} [NonUnitalCStarAlgebra A] | ||
|
|
||
| open NonUnitalStarAlgebra in | ||
| lemma IsSelfAdjoint.norm_add_eq_max {a b : A} (hab : a * b = 0) | ||
| (ha : IsSelfAdjoint a) (hb : IsSelfAdjoint b) : | ||
j-loreaux marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| ‖a + b‖ = max ‖a‖ ‖b‖ := by | ||
| let S : NonUnitalStarSubalgebra ℂ A := (adjoin ℂ {a, b}).topologicalClosure | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe a comment in the proof to explain the strategy might be helpful, "we show that the closed subalgebra generated by (By the way: I was slightly puzzled that this statement does not actually imply the commutative version, because you have
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @loefflerd thanks for the review! I have added a brief explanation. Indeed, this does not imply the commutative version. The reason I didn't originally state it for That being said, it's not unreasonable to have the
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Doesn't the second
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Right, we don't have it. I think we may have all the tools necessary though. I'll look into it.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Indeed, I have a proof of Fuglede–Putnam–Rosenblum now. I'll create a PR for that first.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great! The statement of Fuglede–Putnam is pretty much the sole thing I remember from the Banach Algebras course I took decades ago as a masters student, so it's nice to see it make its way into mathlib :-)
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
| have hS : IsClosed (S : Set A) := (adjoin ℂ {a, b}).isClosed_topologicalClosure | ||
| have hab' : a * b = b * a := by | ||
| rw [hab, eq_comm]; simpa [ha.star_eq, hb.star_eq] using congr(star $hab) | ||
| let _ : NonUnitalCommRing (adjoin ℂ {a, b}) := | ||
| adjoinNonUnitalCommRingOfComm ℂ (by grind) (by grind [IsSelfAdjoint.star_eq]) | ||
| let _ : NonUnitalCommRing S := (adjoin ℂ {a, b}).nonUnitalCommRingTopologicalClosure mul_comm | ||
| let _ : NonUnitalCommCStarAlgebra S := { } | ||
| let c : S := ⟨a, subset_closure <| subset_adjoin _ _ <| by grind⟩ | ||
| let d : S := ⟨b, subset_closure <| subset_adjoin _ _ <| by grind⟩ | ||
loefflerd marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| exact CommCStarAlgebra.norm_add_eq_max (a := c) (b := d) (by ext; simpa) | ||
|
|
||
| lemma IsSelfAdjoint.nnnorm_add_eq_max {a b : A} (hab : a * b = 0) | ||
| (ha : IsSelfAdjoint a) (hb : IsSelfAdjoint b) : | ||
| ‖a + b‖₊ = max ‖a‖₊ ‖b‖₊ := | ||
| NNReal.eq <| IsSelfAdjoint.norm_add_eq_max hab ha hb | ||
|
|
||
| lemma IsSelfAdjoint.norm_sub_eq_max {a b : A} (hab : a * b = 0) | ||
| (ha : IsSelfAdjoint a) (hb : IsSelfAdjoint b) : | ||
| ‖a - b‖ = max ‖a‖ ‖b‖ := by | ||
| simpa [sub_eq_add_neg] using ha.norm_add_eq_max (by simpa) hb.neg | ||
|
|
||
| lemma IsSelfAdjoint.nnnorm_sub_eq_max {a b : A} (hab : a * b = 0) | ||
| (ha : IsSelfAdjoint a) (hb : IsSelfAdjoint b) : | ||
| ‖a - b‖₊ = max ‖a‖₊ ‖b‖₊ := | ||
| NNReal.eq <| IsSelfAdjoint.norm_sub_eq_max hab ha hb | ||
|
|
||
| attribute [aesop safe apply (rule_sets := [CStarAlgebra])] isSelfAdjoint_sum | ||
|
|
||
| open scoped Function in | ||
| lemma IsSelfAdjoint.nnnorm_sum_eq_sup {ι : Type*} {f : ι → A} (s : Finset ι) | ||
j-loreaux marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| (h0 : Pairwise ((· * · = 0) on f)) (h : ∀ i ∈ s, IsSelfAdjoint (f i)) : | ||
| ‖∑ i ∈ s, f i‖₊ = s.sup (‖f ·‖₊) := by | ||
| classical | ||
| induction s using Finset.induction with | ||
| | empty => simp | ||
| | insert j s hj ih => | ||
| suffices f j * ∑ i ∈ s, f i = 0 by | ||
| simp_all only [Finset.mem_insert, or_true, implies_true, forall_const, forall_eq_or_imp, | ||
| not_false_eq_true, Finset.sum_insert, Finset.sup_insert] | ||
| simpa [← ih] using h.1.nnnorm_add_eq_max this (by cfc_tac) | ||
| simpa [Finset.mul_sum] using Finset.sum_eq_zero fun i hi ↦ h0 (by grind) | ||
|
|
||
| end NonUnital | ||
|
|
||
| end ComplexCStarAlgebra | ||
|
|
||
| section Functoriality | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.