Skip to content

Commit 5a089cf

Browse files
committed
feat: lift star-preserving actions to actions between unitary groups (#28309)
1 parent 37e871d commit 5a089cf

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

Mathlib/Algebra/Star/Unitary.lean

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,57 @@ lemma _root_.isStarNormal_of_mem_unitary {u : R} (hu : u ∈ unitary R) : IsStar
184184

185185
end Monoid
186186

187+
section SMul
188+
189+
section
190+
191+
variable {A : Type*}
192+
[Monoid R] [Monoid A] [MulAction R A] [SMulCommClass R A A]
193+
[IsScalarTower R A A] [StarMul R] [StarMul A] [StarModule R A]
194+
195+
lemma smul_mem_of_mem {r : R} {a : A} (hr : r ∈ unitary R) (ha : a ∈ unitary A) :
196+
r • a ∈ unitary A := by
197+
simp [mem_iff, smul_smul, mul_smul_comm, smul_mul_assoc, hr, ha]
198+
199+
lemma smul_mem (r : unitary R) {a : A} (ha : a ∈ unitary A) :
200+
r • a ∈ unitary A :=
201+
smul_mem_of_mem (R := R) r.prop ha
202+
203+
instance : SMul (unitary R) (unitary A) where
204+
smul r a := ⟨r • a, smul_mem r a.prop⟩
205+
206+
@[simp, norm_cast]
207+
lemma coe_smul (r : unitary R) (a : unitary A) : ↑(r • a) = r • (a : A) := rfl
208+
209+
instance : MulAction (unitary R) (unitary A) where
210+
one_smul _ := Subtype.ext <| one_smul ..
211+
mul_smul _ _ _ := Subtype.ext <| mul_smul ..
212+
213+
instance : StarModule (unitary R) (unitary A) where
214+
star_smul _ _ := Subtype.ext <| star_smul (_ : R) _
215+
216+
end
217+
218+
section
219+
220+
variable {S A : Type*}
221+
[Monoid R] [Monoid S] [Monoid A] [StarMul R] [StarMul S] [StarMul A]
222+
[MulAction R S] [MulAction R A] [MulAction S A]
223+
[StarModule R S] [StarModule R A] [StarModule S A]
224+
[IsScalarTower R A A] [IsScalarTower S A A]
225+
[SMulCommClass R A A] [SMulCommClass S A A]
226+
227+
instance [SMulCommClass R S A] : SMulCommClass (unitary R) (unitary S) (unitary A) where
228+
smul_comm _ _ _ := Subtype.ext <| smul_comm _ (_ : S) (_ : A)
229+
230+
instance [IsScalarTower R S S] [SMulCommClass R S S] [IsScalarTower R S A] :
231+
IsScalarTower (unitary R) (unitary S) (unitary A) where
232+
smul_assoc _ _ _ := Subtype.ext <| smul_assoc _ (_ : S) (_ : A)
233+
234+
end
235+
236+
end SMul
237+
187238
section Map
188239

189240
variable {F R S : Type*} [Monoid R] [StarMul R] [Monoid S] [StarMul S]

0 commit comments

Comments
 (0)