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 results #
Matrix.comp
is an equivalence betweenMatrix I J (Matrix K L R)
andI × K
byJ × L
matrices.Matrix.swap
is an equivalence between(I × J)
by(K × L)
matrices andJ × I
byL × K
matrices.
@[simp]
theorem
Matrix.comp_stdBasisMatrix_stdBasisMatrix
{I : Type u_1}
{J : Type u_2}
{K : Type u_3}
{L : Type u_4}
{R : Type u_5}
[DecidableEq I]
[DecidableEq J]
[DecidableEq K]
[DecidableEq L]
[Zero R]
(i : I)
(j : J)
(k : K)
(l : L)
(r : R)
:
@[simp]
theorem
Matrix.comp_symm_stdBasisMatrix
{I : Type u_1}
{J : Type u_2}
{K : Type u_3}
{L : Type u_4}
{R : Type u_5}
[DecidableEq I]
[DecidableEq J]
[DecidableEq K]
[DecidableEq L]
[Zero R]
(ii : I × K)
(jj : J × L)
(r : R)
:
(comp I J K L R).symm (stdBasisMatrix ii jj r) = stdBasisMatrix ii.1 jj.1 (stdBasisMatrix ii.2 jj.2 r)
@[simp]
theorem
Matrix.comp_diagonal_diagonal
{I : Type u_1}
{J : Type u_2}
{R : Type u_5}
[DecidableEq I]
[DecidableEq J]
[Zero R]
(d : I → J → R)
:
def
Matrix.compAddEquiv
(I : Type u_1)
(J : Type u_2)
(K : Type u_3)
(L : Type u_4)
(R : Type u_5)
[AddCommMonoid R]
:
Equations
- Matrix.compAddEquiv I J K L R = { toEquiv := Matrix.comp I J K L R, map_add' := ⋯ }
Instances For
@[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)
[AddCommMonoid R]
(M : Matrix I J (Matrix K L R))
:
def
Matrix.compRingEquiv
(I : Type u_1)
(J : Type u_2)
(R : Type u_5)
[Semiring R]
[Fintype I]
[Fintype J]
:
Equations
- Matrix.compRingEquiv I J R = { toEquiv := (Matrix.compAddEquiv I I J J R).toEquiv, map_mul' := ⋯, map_add' := ⋯ }
Instances For
def
Matrix.compLinearEquiv
(I : Type u_1)
(J : Type u_2)
(L : Type u_4)
(R : Type u_5)
(K : Type u_7)
[CommSemiring K]
[AddCommMonoid R]
[Module K R]
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Matrix.compLinearEquiv_apply
(I : Type u_1)
(J : Type u_2)
(L : Type u_4)
(R : Type u_5)
(K : Type u_7)
[CommSemiring K]
[AddCommMonoid R]
[Module K R]
(a✝ : Matrix I J (Matrix K L R))
:
@[simp]
theorem
Matrix.compLinearEquiv_symm_apply
(I : Type u_1)
(J : Type u_2)
(L : Type u_4)
(R : Type u_5)
(K : Type u_7)
[CommSemiring K]
[AddCommMonoid R]
[Module K R]
(a✝ : Matrix (I × K) (J × L) R)
:
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]
:
Equations
- Matrix.compAlgEquiv I J R K = { toEquiv := (Matrix.compRingEquiv I J R).toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
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))
:
@[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)
: