Composition of matrices #
This file shows that Mₙ(Mₘ(R)) ≃ Mₙₘ(R), Mₙ(Rᵒᵖ) ≃ₐ[K] Mₙ(R)ᵒᵖ
and also different levels of equivalence when R is an AddCommMonoid,
Semiring, and Algebra over a CommSemiring K.
Main definitions #
Matrix.compis an equivalence betweenMatrix I J (Matrix K L R)andI × KbyJ × Lmatrices.Matrix.compAddEquiv:Matrix.compas anAddEquivMatrix.compRingEquiv:Matrix.compas aRingEquivMatrix.compLinearEquiv:Matrix.compas aLinearEquivMatrix.compAlgEquiv:Matrix.compas anAlgEquiv
theorem
Matrix.comp_one
{I : Type u_1}
{J : Type u_2}
{R : Type u_5}
[DecidableEq I]
[DecidableEq J]
[Zero R]
[One R]
:
(comp I I J J R) 1 = 1
@[simp]
@[simp]
@[simp]
@[simp]
theorem
Matrix.compAddEquiv_apply
(I : Type u_1)
(J : Type u_2)
(K : Type u_3)
(L : Type u_4)
(R : Type u_5)
[Add R]
(M : Matrix I J (Matrix K L R))
:
(compAddEquiv I J K L R) M = (comp I J K L R) M
@[simp]
def
Matrix.compRingEquiv
(I : Type u_1)
(J : Type u_2)
(R : Type u_5)
[AddCommMonoid R]
[Mul R]
[Fintype I]
[Fintype J]
:
Instances For
@[simp]
theorem
Matrix.compRingEquiv_apply
(I : Type u_1)
(J : Type u_2)
(R : Type u_5)
[AddCommMonoid R]
[Mul R]
[Fintype I]
[Fintype J]
(M : Matrix I I (Matrix J J R))
:
(compRingEquiv I J R) M = (comp I I J J R) M
@[simp]
theorem
Matrix.compRingEquiv_symm_apply
(I : Type u_1)
(J : Type u_2)
(R : Type u_5)
[AddCommMonoid R]
[Mul R]
[Fintype I]
[Fintype J]
(M : Matrix (I × J) (I × J) R)
:
(compRingEquiv I J R).symm M = (comp I I J J R).symm M
instance
Matrix.instIsStablyFiniteRing
(I : Type u_1)
[Fintype I]
(R : Type u_7)
[MulOne R]
[AddCommMonoid R]
[DecidableEq I]
[IsStablyFiniteRing R]
:
IsStablyFiniteRing (Matrix I I R)
def
Matrix.compLinearEquiv
(I : Type u_1)
(J : Type u_2)
(K : Type u_3)
(L : Type u_4)
(R : Type u_5)
(R₀ : Type u_7)
[Semiring R₀]
[AddCommMonoid R]
[Module R₀ R]
:
Instances For
@[simp]
theorem
Matrix.compLinearEquiv_apply
(I : Type u_1)
(J : Type u_2)
(K : Type u_3)
(L : Type u_4)
(R : Type u_5)
(R₀ : Type u_7)
[Semiring R₀]
[AddCommMonoid R]
[Module R₀ R]
(a✝ : Matrix I J (Matrix K L R))
:
(compLinearEquiv I J K L R R₀) a✝ = (comp I J K L R) a✝
@[simp]
theorem
Matrix.compLinearEquiv_symm_apply
(I : Type u_1)
(J : Type u_2)
(K : Type u_3)
(L : Type u_4)
(R : Type u_5)
(R₀ : Type u_7)
[Semiring R₀]
[AddCommMonoid R]
[Module R₀ R]
(a✝ : Matrix (I × K) (J × L) R)
:
(compLinearEquiv I J K L R R₀).symm a✝ = (comp I J K L R).symm a✝
def
Matrix.compAlgEquiv
(I : Type u_1)
(J : Type u_2)
(R : Type u_5)
(K : Type u_7)
[CommSemiring K]
[Semiring R]
[Fintype I]
[Fintype J]
[Algebra K R]
[DecidableEq I]
[DecidableEq J]
:
Instances For
@[simp]
theorem
Matrix.compAlgEquiv_apply
(I : Type u_1)
(J : Type u_2)
(R : Type u_5)
(K : Type u_7)
[CommSemiring K]
[Semiring R]
[Fintype I]
[Fintype J]
[Algebra K R]
[DecidableEq I]
[DecidableEq J]
(M : Matrix I I (Matrix J J R))
:
(compAlgEquiv I J R K) M = (comp I I J J R) M
@[simp]
theorem
Matrix.compAlgEquiv_symm_apply
(I : Type u_1)
(J : Type u_2)
(R : Type u_5)
(K : Type u_7)
[CommSemiring K]
[Semiring R]
[Fintype I]
[Fintype J]
[Algebra K R]
[DecidableEq I]
[DecidableEq J]
(M : Matrix (I × J) (I × J) R)
:
(compAlgEquiv I J R K).symm M = (comp I I J J R).symm M