@@ -19,8 +19,8 @@ import Mathlib.Topology.Algebra.Module.Star
19
19
A normed star group is a normed group with a compatible `star` which is isometric.
20
20
21
21
A C⋆-ring is a normed star group that is also a ring and that verifies the stronger
22
- condition `‖x⋆ * x‖ = ‖x‖^2 ` for all `x`. If a C⋆-ring is also a star algebra, then it is a
23
- C⋆-algebra.
22
+ condition `‖x‖^2 ≤ ‖x⋆ * x‖ ` for all `x` (which actually implies equality). If a C⋆-ring is also
23
+ a star algebra, then it is a C⋆-algebra.
24
24
25
25
To get a C⋆-algebra `E` over field `𝕜`, use
26
26
`[NormedField 𝕜] [StarRing 𝕜] [NormedRing E] [StarRing E] [CstarRing E]
@@ -79,13 +79,16 @@ instance RingHomIsometric.starRingEnd [NormedCommRing E] [StarRing E] [NormedSta
79
79
⟨@norm_star _ _ _ _⟩
80
80
#align ring_hom_isometric.star_ring_end RingHomIsometric.starRingEnd
81
81
82
- /-- A C*-ring is a normed star ring that satisfies the stronger condition `‖x⋆ * x‖ = ‖x‖^2`
83
- for every `x`. -/
82
+ /-- A C*-ring is a normed star ring that satisfies the stronger condition `‖x‖ ^ 2 ≤ ‖x⋆ * x‖`
83
+ for every `x`. Note that this condition actually implies equality, as is shown in
84
+ `norm_star_mul_self` below. -/
84
85
class CstarRing (E : Type *) [NonUnitalNormedRing E] [StarRing E] : Prop where
85
- norm_star_mul_self : ∀ { x : E} , ‖x⋆ * x‖ = ‖x‖ * ‖ x‖
86
+ norm_mul_self_le : ∀ x : E, ‖x‖ * ‖ x‖ ≤ ‖x⋆ * x‖
86
87
#align cstar_ring CstarRing
87
88
88
- instance : CstarRing ℝ where norm_star_mul_self {x} := by simp only [star, id, norm_mul]
89
+ instance : CstarRing ℝ where
90
+ norm_mul_self_le x := by
91
+ simp only [Real.norm_eq_abs, abs_mul_abs_self, star, id, norm_mul, le_refl]
89
92
90
93
namespace CstarRing
91
94
@@ -101,19 +104,19 @@ instance (priority := 100) to_normedStarGroup : NormedStarGroup E :=
101
104
by_cases htriv : x = 0
102
105
· simp only [htriv, star_zero]
103
106
· have hnt : 0 < ‖x‖ := norm_pos_iff.mpr htriv
104
- have hnt_star : 0 < ‖x⋆‖ :=
105
- norm_pos_iff.mpr ((AddEquiv.map_ne_zero_iff starAddEquiv (M := E)).mpr htriv)
106
- have h₁ :=
107
- calc
108
- ‖x‖ * ‖x‖ = ‖x⋆ * x‖ := norm_star_mul_self.symm
109
- _ ≤ ‖x⋆‖ * ‖x‖ := norm_mul_le _ _
110
- have h₂ :=
111
- calc
112
- ‖x⋆‖ * ‖x⋆‖ = ‖x * x⋆‖ := by rw [← norm_star_mul_self, star_star]
113
- _ ≤ ‖x‖ * ‖x⋆‖ := norm_mul_le _ _
114
- exact le_antisymm (le_of_mul_le_mul_right h₂ hnt_star) (le_of_mul_le_mul_right h₁ hnt)⟩
107
+ have h₁ : ∀ z : E, ‖z⋆ * z‖ ≤ ‖z⋆‖ * ‖z‖ := fun z => norm_mul_le z⋆ z
108
+ have h₂ : ∀ z : E, 0 < ‖z‖ → ‖z‖ ≤ ‖z⋆‖ := fun z hz => by
109
+ rw [← mul_le_mul_right hz]; exact (CstarRing.norm_mul_self_le z).trans (h₁ z)
110
+ have h₃ : ‖x⋆‖ ≤ ‖x‖ := by
111
+ conv_rhs => rw [← star_star x]
112
+ exact h₂ x⋆ (gt_of_ge_of_gt (h₂ x hnt) hnt)
113
+ exact le_antisymm h₃ (h₂ x hnt)⟩
115
114
#align cstar_ring.to_normed_star_group CstarRing.to_normedStarGroup
116
115
116
+ theorem norm_star_mul_self {x : E} : ‖x⋆ * x‖ = ‖x‖ * ‖x‖ :=
117
+ le_antisymm ((norm_mul_le _ _).trans (by rw [norm_star])) (CstarRing.norm_mul_self_le x)
118
+ #align cstar_ring.norm_star_mul_self CstarRing.norm_star_mul_self
119
+
117
120
theorem norm_self_mul_star {x : E} : ‖x * x⋆‖ = ‖x‖ * ‖x‖ := by
118
121
nth_rw 1 [← star_star x]
119
122
simp only [norm_star_mul_self, norm_star]
@@ -167,19 +170,16 @@ instance _root_.Pi.starRing' : StarRing (∀ i, R i) :=
167
170
variable [Fintype ι] [∀ i, CstarRing (R i)]
168
171
169
172
instance _root_.Prod.cstarRing : CstarRing (R₁ × R₂) where
170
- norm_star_mul_self {x} := by
173
+ norm_mul_self_le x := by
171
174
dsimp only [norm]
172
175
simp only [Prod.fst_mul, Prod.fst_star, Prod.snd_mul, Prod.snd_star, norm_star_mul_self, ← sq]
173
- refine le_antisymm ?_ ?_
174
- · refine max_le ?_ ?_ <;> rw [sq_le_sq, abs_of_nonneg (norm_nonneg _)]
175
- · exact (le_max_left _ _).trans (le_abs_self _)
176
- · exact (le_max_right _ _).trans (le_abs_self _)
177
- · rw [le_sup_iff]
178
- rcases le_total ‖x.fst‖ ‖x.snd‖ with (h | h) <;> simp [h]
176
+ rw [le_sup_iff]
177
+ rcases le_total ‖x.fst‖ ‖x.snd‖ with (h | h) <;> simp [h]
179
178
#align prod.cstar_ring Prod.cstarRing
180
179
181
180
instance _root_.Pi.cstarRing : CstarRing (∀ i, R i) where
182
- norm_star_mul_self {x} := by
181
+ norm_mul_self_le x := by
182
+ refine le_of_eq (Eq.symm ?_)
183
183
simp only [norm, Pi.mul_apply, Pi.star_apply, nnnorm_star_mul_self, ← sq]
184
184
norm_cast
185
185
exact
@@ -315,7 +315,7 @@ instance toNormedAlgebra {𝕜 A : Type*} [NormedField 𝕜] [StarRing 𝕜] [Se
315
315
316
316
instance to_cstarRing {R A} [CommRing R] [StarRing R] [NormedRing A] [StarRing A] [CstarRing A]
317
317
[Algebra R A] [StarModule R A] (S : StarSubalgebra R A) : CstarRing S where
318
- norm_star_mul_self {x} := @CstarRing.norm_star_mul_self A _ _ _ x
318
+ norm_mul_self_le x := @CstarRing.norm_mul_self_le A _ _ _ x
319
319
#align star_subalgebra.to_cstar_ring StarSubalgebra.to_cstarRing
320
320
321
321
end StarSubalgebra
0 commit comments