Module docstring
{"# Standard basis on matrices
Main results
Basis.matrix: extend a basis onMto the standard basis onMatrix n m M"}
{"# Standard basis on matrices
Basis.matrix: extend a basis on M to the standard basis on Matrix n m M
"}Basis.matrix
definition
(b : Basis ι R M) : Basis (m × n × ι) R (Matrix m n M)
/-- The standard basis of `Matrix m n M` given a basis on `M`. -/
protected noncomputable def matrix (b : Basis ι R M) :
Basis (m × n × ι) R (Matrix m n M) :=
Basis.reindex (Pi.basis fun _ : m => Pi.basis fun _ : n => b)
((Equiv.sigmaEquivProd _ _).trans <| .prodCongr (.refl _) (Equiv.sigmaEquivProd _ _))
|>.map (Matrix.ofLinearEquiv R)
Basis.matrix_apply
theorem
(b : Basis ι R M) (i : m) (j : n) (k : ι) [DecidableEq m] [DecidableEq n] :
b.matrix m n (i, j, k) = Matrix.stdBasisMatrix i j (b k)
@[simp]
theorem matrix_apply (b : Basis ι R M) (i : m) (j : n) (k : ι) [DecidableEq m] [DecidableEq n] :
b.matrix m n (i, j, k) = Matrix.stdBasisMatrix i j (b k) := by
simp [Basis.matrix, Matrix.stdBasisMatrix_eq_of_single_single]
Matrix.stdBasis
definition
: Basis (m × n) R (Matrix m n R)
/-- The standard basis of `Matrix m n R`. -/
noncomputable def stdBasis : Basis (m × n) R (Matrix m n R) :=
Basis.reindex (Pi.basis fun _ : m => Pi.basisFun R n) (Equiv.sigmaEquivProd _ _)
|>.map (ofLinearEquiv R)
Matrix.stdBasis_eq_stdBasisMatrix
theorem
(i : m) (j : n) [DecidableEq m] [DecidableEq n] : stdBasis R m n (i, j) = stdBasisMatrix i j (1 : R)
theorem stdBasis_eq_stdBasisMatrix (i : m) (j : n) [DecidableEq m] [DecidableEq n] :
stdBasis R m n (i, j) = stdBasisMatrix i j (1 : R) := by
simp [stdBasis, stdBasisMatrix_eq_of_single_single]
Module.Free.matrix
instance
{m n : Type*} [Finite m] [Finite n] : Module.Free R (Matrix m n M)
/-- The module of finite matrices is free. -/
instance matrix {m n : Type*} [Finite m] [Finite n] : Module.Free R (Matrix m n M) :=
Module.Free.pi R _