Skip to content

Commit 20b17b9

Browse files
committed
feat(LinearAlgebra/Matrix/Defs): lift more algebraic classes
1 parent 25db40a commit 20b17b9

2 files changed

Lines changed: 43 additions & 3 deletions

File tree

Mathlib/Algebra/Group/Pi/Basic.lean

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,21 @@ variable (x y : ∀ i, f i) (i : I)
4343

4444
namespace Pi
4545

46+
@[to_additive]
47+
instance isMulCommutative [∀ i, Mul (f i)] [∀ i, IsMulCommutative (f i)] :
48+
IsMulCommutative (∀ i, f i) where
49+
is_comm.comm _ _ := by ext; apply mul_comm'
50+
51+
@[to_additive]
52+
instance commMagma [∀ i, CommMagma (f i)] : CommMagma (∀ i, f i) where
53+
mul_comm _ _ := by ext; apply mul_comm
54+
4655
@[to_additive]
4756
instance semigroup [∀ i, Semigroup (f i)] : Semigroup (∀ i, f i) where
4857
mul_assoc := by intros; ext; exact mul_assoc _ _ _
4958

5059
@[to_additive]
5160
instance commSemigroup [∀ i, CommSemigroup (f i)] : CommSemigroup (∀ i, f i) where
52-
mul_comm := by intros; ext; exact mul_comm _ _
5361

5462
@[to_additive]
5563
instance mulOneClass [∀ i, MulOneClass (f i)] : MulOneClass (∀ i, f i) where
@@ -69,8 +77,7 @@ instance monoid [∀ i, Monoid (f i)] : Monoid (∀ i, f i) where
6977
npow_succ := by intros; ext; exact Monoid.npow_succ _ _
7078

7179
@[to_additive]
72-
instance commMonoid [∀ i, CommMonoid (f i)] : CommMonoid (∀ i, f i) :=
73-
{ monoid, commSemigroup with }
80+
instance commMonoid [∀ i, CommMonoid (f i)] : CommMonoid (∀ i, f i) where
7481

7582
@[to_additive Pi.subNegMonoid]
7683
instance divInvMonoid [∀ i, DivInvMonoid (f i)] : DivInvMonoid (∀ i, f i) where

Mathlib/LinearAlgebra/Matrix/Defs.lean

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,39 @@ instance distribMulAction [Monoid R] [AddMonoid α] [DistribMulAction R α] :
220220
instance module [Semiring R] [AddCommMonoid α] [Module R α] : Module R (Matrix m n α) :=
221221
inferInstanceAs <| Module R (m → n → α)
222222

223+
instance [Add α] [IsAddCommutative α] : IsAddCommutative <| Matrix m n α :=
224+
inferInstanceAs <| IsAddCommutative <| m → n → α
225+
226+
instance [AddCommMagma α] : AddCommMagma <| Matrix m n α :=
227+
inferInstanceAs <| AddCommMagma <| m → n → α
228+
229+
instance [Add α] [IsLeftCancelAdd α] : IsLeftCancelAdd <| Matrix m n α :=
230+
inferInstanceAs <| IsLeftCancelAdd <| m → n → α
231+
232+
instance [Add α] [IsRightCancelAdd α] : IsRightCancelAdd <| Matrix m n α :=
233+
inferInstanceAs <| IsRightCancelAdd <| m → n → α
234+
235+
instance [Add α] [IsCancelAdd α] : IsCancelAdd <| Matrix m n α :=
236+
inferInstanceAs <| IsCancelAdd <| m → n → α
237+
238+
instance [AddLeftCancelSemigroup α] : AddLeftCancelSemigroup <| Matrix m n α :=
239+
inferInstanceAs <| AddLeftCancelSemigroup <| m → n → α
240+
241+
instance [AddRightCancelSemigroup α] : AddRightCancelSemigroup <| Matrix m n α :=
242+
inferInstanceAs <| AddRightCancelSemigroup <| m → n → α
243+
244+
instance [AddLeftCancelMonoid α] : AddLeftCancelMonoid <| Matrix m n α :=
245+
inferInstanceAs <| AddLeftCancelMonoid <| m → n → α
246+
247+
instance [AddRightCancelMonoid α] : AddRightCancelMonoid <| Matrix m n α :=
248+
inferInstanceAs <| AddRightCancelMonoid <| m → n → α
249+
250+
instance [AddCancelMonoid α] : AddCancelMonoid <| Matrix m n α :=
251+
inferInstanceAs <| AddCancelMonoid <| m → n → α
252+
253+
instance [AddCancelCommMonoid α] : AddCancelCommMonoid <| Matrix m n α :=
254+
inferInstanceAs <| AddCancelCommMonoid <| m → n → α
255+
223256
section
224257

225258
@[simp]

0 commit comments

Comments
 (0)