@@ -184,6 +184,57 @@ lemma _root_.isStarNormal_of_mem_unitary {u : R} (hu : u ∈ unitary R) : IsStar
184184
185185end 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+
187238section Map
188239
189240variable {F R S : Type *} [Monoid R] [StarMul R] [Monoid S] [StarMul S]
0 commit comments