Skip to content
Open
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
b99310d
IsStarProjection.conjugatE_of_nonneg_of_le
themathqueen Mar 2, 2026
320f5da
Merge branch 'conjugate_starProj' into extreme_starProj
themathqueen Mar 5, 2026
8205b4f
star proj iff extreme
themathqueen Mar 5, 2026
c049067
variables
themathqueen Mar 5, 2026
042c2be
mk_all
themathqueen Mar 5, 2026
8c367be
fix
themathqueen Mar 5, 2026
e5a66e7
part 1
themathqueen Mar 7, 2026
0a6a8f6
the rest
themathqueen Mar 7, 2026
36f7a2e
imports
themathqueen Mar 7, 2026
f7a60cb
Merge branch 'master' into extreme_unital
themathqueen Mar 10, 2026
33a6c6d
Merge branch 'master' into extreme_unital
themathqueen Mar 11, 2026
aed5bb1
Merge branch 'master' into extreme_unital
themathqueen Mar 13, 2026
42ca3e8
move
themathqueen Mar 13, 2026
f655951
Merge branch 'master' into extreme_unital
themathqueen Mar 20, 2026
504fa80
Update Real.lean
themathqueen Mar 20, 2026
984cb80
Merge branch 'master' into extreme_unital
themathqueen Apr 9, 2026
0f63a2d
Merge branch 'master' into extreme_unital
themathqueen Apr 29, 2026
eeb2b2b
isunital class
themathqueen Jul 19, 2026
e426078
fix
themathqueen Jul 19, 2026
fa8915a
Merge branch 'master' into extreme_unital
themathqueen Jul 19, 2026
dac10da
fix
themathqueen Jul 19, 2026
708a13e
fix
themathqueen Jul 19, 2026
a3e48b4
Merge branch 'IsUnital' into extreme_unital
themathqueen Jul 19, 2026
82189d9
isunital
themathqueen Jul 19, 2026
678b658
remove expose
themathqueen Jul 19, 2026
d0560b9
fix
themathqueen Jul 19, 2026
f9f2d31
fix
themathqueen Jul 19, 2026
d521c2d
inline instance
themathqueen Jul 20, 2026
5569c7c
cleanup
themathqueen Jul 21, 2026
3ad373b
Merge branch 'master' into extreme_unital
themathqueen Jul 29, 2026
c09a9fb
star_ball
themathqueen Jul 29, 2026
f76a1ee
cleanup golfs
themathqueen Jul 29, 2026
c7f4169
review
themathqueen Jul 29, 2026
731922b
star_ball
themathqueen Jul 31, 2026
ab6de65
star_segments
themathqueen Jul 31, 2026
a1f15f1
Merge branch 'star_segments' into extreme_unital
themathqueen Jul 31, 2026
b652154
Merge branch 'star_ball' into extreme_unital
themathqueen Jul 31, 2026
c26090a
merge
themathqueen Jul 31, 2026
b500d17
Merge branch 'master' into extreme_unital
themathqueen Aug 13, 2026
9ee302d
Merge branch 'master' into extreme_unital
themathqueen Aug 13, 2026
0b0f36a
Update Extreme.lean
themathqueen Aug 13, 2026
8aa25e6
Update Basic.lean
themathqueen Aug 13, 2026
7dcc292
Update Extreme.lean
themathqueen Aug 13, 2026
b1c7071
Apply suggestion from @themathqueen
themathqueen Aug 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Mathlib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -1595,6 +1595,7 @@ public import Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.Unitary
public import Mathlib.Analysis.CStarAlgebra.ContinuousLinearMap
public import Mathlib.Analysis.CStarAlgebra.ContinuousMap
public import Mathlib.Analysis.CStarAlgebra.Exponential
public import Mathlib.Analysis.CStarAlgebra.Extreme
public import Mathlib.Analysis.CStarAlgebra.GelfandDuality
public import Mathlib.Analysis.CStarAlgebra.GelfandNaimarkSegal
public import Mathlib.Analysis.CStarAlgebra.Hom
Expand Down
12 changes: 12 additions & 0 deletions Mathlib/Analysis/CStarAlgebra/ApproximateUnit.lean
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,16 @@ lemma eventually_star_eq {l : Filter A} (hl : l.IsIncreasingApproximateUnit) :
∀ᶠ x in l, star x = x :=
hl.eventually_isSelfAdjoint.mp <| .of_forall fun _ ↦ IsSelfAdjoint.star_eq

omit [StarOrderedRing A] in
lemma closedBall_mem {l : Filter A} (hl : l.IsIncreasingApproximateUnit) :
Metric.closedBall 0 1 ∈ l := by
simpa [Metric.closedBall] using hl.eventually_norm

omit [StarOrderedRing A] in
lemma nonneg_mem {l : Filter A} (hl : l.IsIncreasingApproximateUnit) :
{x | 0 ≤ x} ∈ l := by
simpa using hl.eventually_nonneg

end Filter.IsIncreasingApproximateUnit

namespace CStarAlgebra
Expand Down Expand Up @@ -330,4 +340,6 @@ lemma increasingApproximateUnit :

end CStarAlgebra

instance : (approximateUnit A).NeBot := (increasingApproximateUnit A).neBot

end ApproximateUnit
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,9 @@ lemma norm_quasispectrum_le (a : A) ⦃x : 𝕜⦄ (hx : x ∈ σₙ 𝕜 a) (ha
‖x‖ ≤ ‖a‖ := by
simpa only [cfcₙ_id 𝕜 a] using norm_apply_le_norm_cfcₙ (id : 𝕜 → 𝕜) a hx

alias _root_.quasispectrum.norm_le_norm_of_mem :=
NonUnitalIsometricContinuousFunctionalCalculus.norm_quasispectrum_le

lemma isGreatest_nnnorm_quasispectrum (a : A) (ha : p a := by cfc_tac) :
IsGreatest ((‖·‖₊) '' σₙ 𝕜 a) ‖a‖₊ := by
simpa only [cfcₙ_id 𝕜 a] using IsGreatest.nnnorm_cfcₙ (id : 𝕜 → 𝕜) a
Expand Down
279 changes: 279 additions & 0 deletions Mathlib/Analysis/CStarAlgebra/Extreme.lean

Large diffs are not rendered by default.

33 changes: 33 additions & 0 deletions Mathlib/Analysis/CStarAlgebra/GelfandDuality.lean
Original file line number Diff line number Diff line change
Expand Up @@ -295,3 +295,36 @@ lemma WeakDual.CharacterSpace.homeoEval_naturality {X Y 𝕜 : Type*} [RCLike
(homeoEval Y 𝕜 : C(_, _)).comp f =
(f.compStarAlgHom' 𝕜 𝕜 |> compContinuousMap).comp (homeoEval X 𝕜 : C(_, _)) :=
rfl

open scoped CStarAlgebra in
open Unitization in
lemma CommCStarAlgebra.norm_add_eq_max {A : Type*} [NonUnitalCommCStarAlgebra A]
{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)

open NonUnitalStarAlgebra in
lemma IsSelfAdjoint.norm_add_eq_max {A : Type*} [NonUnitalCStarAlgebra A]
{a b : A} (hab : a * b = 0) (ha : IsSelfAdjoint a) (hb : IsSelfAdjoint b) :
‖a + b‖ = max ‖a‖ ‖b‖ := by
let S : NonUnitalStarSubalgebra ℂ A := (adjoin ℂ {a, b}).topologicalClosure
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⟩
exact CommCStarAlgebra.norm_add_eq_max (a := c) (b := d) (by ext; simpa)

lemma IsSelfAdjoint.norm_sub_eq_max {A : Type*} [NonUnitalCStarAlgebra A]
{a b : A} (hab : a * b = 0) (ha : IsSelfAdjoint a) (hb : IsSelfAdjoint b) :
‖a - b‖ = max ‖a‖ ‖b‖ := by
rw [← sq_eq_sq₀ (by positivity) (by positivity)]
simp only [sq, ← ha.norm_add_eq_max hab hb, ← CStarRing.norm_star_mul_self]
have : b * a = 0 := by simpa [ha.star_eq, hb.star_eq] using congr(star $hab)
simp [sub_mul, mul_sub, hb.star_eq, ha.star_eq, hab, this, add_mul, mul_add]
4 changes: 4 additions & 0 deletions Mathlib/Analysis/Convex/Extreme.lean
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,10 @@ theorem IsExtreme.extremePoints_eq (hAB : IsExtreme 𝕜 A B) :
Subset.antisymm (fun _ hx ↦ ⟨hx.1, hAB.extremePoints_subset_extremePoints hx⟩)
(inter_extremePoints_subset_extremePoints_of_subset hAB.1)

@[nontriviality]
lemma Set.extremePoints_eq_self [Subsingleton E] (A : Set E) : Set.extremePoints 𝕜 A = A :=
subset_antisymm extremePoints_subset fun _ h ↦ ⟨h, fun _ _ _ _ _ ↦ Subsingleton.elim ..⟩

end SMul

section OrderedSemiring
Expand Down
18 changes: 18 additions & 0 deletions Mathlib/Topology/ContinuousMap/Bounded/Normed.lean
Original file line number Diff line number Diff line change
Expand Up @@ -611,4 +611,22 @@ lemma norm_sub_nonneg (f : α →ᵇ ℝ) :

end

/-- If the product of bounded continuous functions is zero, then the norm of their sum is the
maximum of their norms. -/
lemma norm_add_eq_max {X R : Type*} [TopologicalSpace X] [NormedRing R] [IsDomain R]
{f g : X →ᵇ R} (h : f * g = 0) : ‖f + g‖ = max ‖f‖ ‖g‖ := by
have hfg : ∀ x, f x = 0 ∨ g x = 0 := by simpa [DFunLike.ext_iff, mul_eq_zero] using h
have hfg' (x : X) : ‖(f + g) x‖ = max ‖f x‖ ‖g x‖ := by obtain (h | h) := hfg x <;> simp [h]
apply le_antisymm
· rw [norm_le (by positivity)]
intro x
rw [hfg']
apply max_le <;> exact norm_coe_le_norm _ x |>.trans (by simp)
· apply max_le
all_goals
rw [norm_le (by positivity)]
intro x
grw [← (f + g).norm_coe_le_norm x, hfg']
simp

end BoundedContinuousFunction
5 changes: 5 additions & 0 deletions Mathlib/Topology/ContinuousMap/Compact.lean
Original file line number Diff line number Diff line change
Expand Up @@ -460,4 +460,9 @@ instance [NonUnitalNormedRing β] [StarRing β] [CStarRing β] : CStarRing C(α,

end CStarRing

lemma norm_add_eq_max {X R : Type*} [TopologicalSpace X] [NormedRing R] [IsDomain R]
[CompactSpace X] {f g : C(X, R)} (h : f * g = 0) : ‖f + g‖ = max ‖f‖ ‖g‖ := by
replace h : mkOfCompact f * mkOfCompact g = 0 := by ext x; simpa using congr($h x)
simpa using BoundedContinuousFunction.norm_add_eq_max h

end ContinuousMap
Loading