@@ -6,6 +6,7 @@ Authors: Shing Tak Lam, Frédéric Dupuis
66import Mathlib.Algebra.Group.Submonoid.Operations
77import Mathlib.Algebra.Star.SelfAdjoint
88import Mathlib.Algebra.Algebra.Spectrum.Basic
9+ import Mathlib.Tactic.ContinuousFunctionalCalculus
910
1011/-!
1112# Unitary elements of a star monoid
@@ -135,12 +136,36 @@ theorem _root_.IsUnit.mem_unitary_iff_mul_star_self {u : R} (hu : IsUnit u) :
135136alias ⟨_, _root_.IsUnit.mem_unitary_of_star_mul_self⟩ := IsUnit.mem_unitary_iff_star_mul_self
136137alias ⟨_, _root_.IsUnit.mem_unitary_of_mul_star_self⟩ := IsUnit.mem_unitary_iff_mul_star_self
137138
139+ lemma mul_inv_mem_iff {G : Type *} [Group G] [StarMul G] (a b : G) :
140+ a * b⁻¹ ∈ unitary G ↔ star a * a = star b * b := by
141+ rw [(Group.isUnit _).mem_unitary_iff_star_mul_self, star_mul, star_inv, mul_assoc,
142+ inv_mul_eq_iff_eq_mul, mul_one, ← mul_assoc, mul_inv_eq_iff_eq_mul]
143+
144+ lemma inv_mul_mem_iff {G : Type *} [Group G] [StarMul G] (a b : G) :
145+ a⁻¹ * b ∈ unitary G ↔ a * star a = b * star b := by
146+ simpa [← mul_inv_rev] using mul_inv_mem_iff a⁻¹ b⁻¹
147+
148+ theorem _root_.Units.unitary_eq : unitary Rˣ = (unitary R).comap (Units.coeHom R) := by
149+ ext
150+ simp [unitary.mem_iff, Units.ext_iff]
151+
152+ /-- In a star monoid, the product `a * b⁻¹` of units is unitary if `star a * a = star b * b`. -/
153+ protected lemma _root_.Units.mul_inv_mem_unitary (a b : Rˣ) :
154+ (a * b⁻¹ : R) ∈ unitary R ↔ star a * a = star b * b := by
155+ simp [← mul_inv_mem_iff, Units.unitary_eq]
156+
157+ /-- In a star monoid, the product `a⁻¹ * b` of units is unitary if `a * star a = b * star b`. -/
158+ protected lemma _root_.Units.inv_mul_mem_unitary (a b : Rˣ) :
159+ (a⁻¹ * b : R) ∈ unitary R ↔ a * star a = b * star b := by
160+ simp [← inv_mul_mem_iff, Units.unitary_eq]
161+
138162instance instIsStarNormal (u : unitary R) : IsStarNormal u where
139163 star_comm_self := star_mul_self u |>.trans <| (mul_star_self u).symm
140164
141165instance coe_isStarNormal (u : unitary R) : IsStarNormal (u : R) where
142166 star_comm_self := congr(Subtype.val $(star_comm_self' u))
143167
168+ @[aesop 10% apply (rule_sets := [CStarAlgebra] )]
144169lemma _root_.isStarNormal_of_mem_unitary {u : R} (hu : u ∈ unitary R) : IsStarNormal u :=
145170 coe_isStarNormal ⟨u, hu⟩
146171
0 commit comments