Documentation

Mathlib.Data.Matrix.Basic

Matrices #

This file contains basic results on matrices including bundled versions of matrix operators.

Implementation notes #

For convenience, Matrix m n α is defined as m → n → α, as this allows elements of the matrix to be accessed with A i j. However, it is not advisable to construct matrices using terms of the form fun i j ↦ _ or even (fun i j ↦ _ : Matrix m n α), as these are not recognized by Lean as having the right type. Instead, Matrix.of should be used.

TODO #

Under various conditions, multiplication of infinite matrices makes sense. These have not yet been implemented.

instance Matrix.decidableEq {m : Type u_2} {n : Type u_3} {α : Type u_11} [DecidableEq α] [Fintype m] [Fintype n] :
Equations
    instance Matrix.instFintypeOfDecidableEq {n : Type u_14} {m : Type u_15} [Fintype m] [DecidableEq m] [Fintype n] [DecidableEq n] (α : Type u_16) [Fintype α] :
    Fintype (Matrix m n α)
    Equations
      instance Matrix.instFinite {n : Type u_14} {m : Type u_15} [Finite m] [Finite n] (α : Type u_16) [Finite α] :
      Finite (Matrix m n α)
      def Matrix.ofLinearEquiv {m : Type u_2} {n : Type u_3} (R : Type u_7) {α : Type u_11} [Semiring R] [AddCommMonoid α] [Module R α] :
      (mnα) ≃ₗ[R] Matrix m n α

      This is Matrix.of bundled as a linear equivalence.

      Equations
        Instances For
          @[simp]
          theorem Matrix.coe_ofLinearEquiv {m : Type u_2} {n : Type u_3} (R : Type u_7) {α : Type u_11} [Semiring R] [AddCommMonoid α] [Module R α] :
          (ofLinearEquiv R) = of
          @[simp]
          theorem Matrix.coe_ofLinearEquiv_symm {m : Type u_2} {n : Type u_3} (R : Type u_7) {α : Type u_11} [Semiring R] [AddCommMonoid α] [Module R α] :
          theorem Matrix.sum_apply {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} [AddCommMonoid α] (i : m) (j : n) (s : Finset β) (g : βMatrix m n α) :
          (∑ cs, g c) i j = cs, g c i j
          def Matrix.diagonalAddMonoidHom (n : Type u_3) (α : Type u_11) [DecidableEq n] [AddZeroClass α] :
          (nα) →+ Matrix n n α

          Matrix.diagonal as an AddMonoidHom.

          Equations
            Instances For
              @[simp]
              theorem Matrix.diagonalAddMonoidHom_apply (n : Type u_3) (α : Type u_11) [DecidableEq n] [AddZeroClass α] (d : nα) :
              def Matrix.diagonalLinearMap (n : Type u_3) (R : Type u_7) (α : Type u_11) [DecidableEq n] [Semiring R] [AddCommMonoid α] [Module R α] :
              (nα) →ₗ[R] Matrix n n α

              Matrix.diagonal as a LinearMap.

              Equations
                Instances For
                  @[simp]
                  theorem Matrix.diagonalLinearMap_apply (n : Type u_3) (R : Type u_7) (α : Type u_11) [DecidableEq n] [Semiring R] [AddCommMonoid α] [Module R α] (a✝ : nα) :
                  (diagonalLinearMap n R α) a✝ = (↑(diagonalAddMonoidHom n α)).toFun a✝
                  theorem Matrix.zero_le_one_elem {n : Type u_3} {α : Type u_11} [DecidableEq n] [Zero α] [One α] [Preorder α] [ZeroLEOneClass α] (i j : n) :
                  0 1 i j
                  theorem Matrix.zero_le_one_row {n : Type u_3} {α : Type u_11} [DecidableEq n] [Zero α] [One α] [Preorder α] [ZeroLEOneClass α] (i : n) :
                  0 1 i
                  def Matrix.diagAddMonoidHom (n : Type u_3) (α : Type u_11) [AddZeroClass α] :
                  Matrix n n α →+ nα

                  Matrix.diag as an AddMonoidHom.

                  Equations
                    Instances For
                      @[simp]
                      theorem Matrix.diagAddMonoidHom_apply (n : Type u_3) (α : Type u_11) [AddZeroClass α] (A : Matrix n n α) (i : n) :
                      (diagAddMonoidHom n α) A i = A.diag i
                      def Matrix.diagLinearMap (n : Type u_3) (R : Type u_7) (α : Type u_11) [Semiring R] [AddCommMonoid α] [Module R α] :
                      Matrix n n α →ₗ[R] nα

                      Matrix.diag as a LinearMap.

                      Equations
                        Instances For
                          @[simp]
                          theorem Matrix.diagLinearMap_apply (n : Type u_3) (R : Type u_7) (α : Type u_11) [Semiring R] [AddCommMonoid α] [Module R α] (a✝ : Matrix n n α) (a✝¹ : n) :
                          (diagLinearMap n R α) a✝ a✝¹ = (↑(diagAddMonoidHom n α)).toFun a✝ a✝¹
                          @[simp]
                          theorem Matrix.diag_list_sum {n : Type u_3} {α : Type u_11} [AddMonoid α] (l : List (Matrix n n α)) :
                          @[simp]
                          theorem Matrix.diag_multiset_sum {n : Type u_3} {α : Type u_11} [AddCommMonoid α] (s : Multiset (Matrix n n α)) :
                          @[simp]
                          theorem Matrix.diag_sum {n : Type u_3} {α : Type u_11} {ι : Type u_14} [AddCommMonoid α] (s : Finset ι) (f : ιMatrix n n α) :
                          (∑ is, f i).diag = is, (f i).diag
                          def Matrix.diagonalRingHom (n : Type u_3) (α : Type u_11) [NonAssocSemiring α] [Fintype n] [DecidableEq n] :
                          (nα) →+* Matrix n n α

                          Matrix.diagonal as a RingHom.

                          Equations
                            Instances For
                              @[simp]
                              theorem Matrix.diagonalRingHom_apply (n : Type u_3) (α : Type u_11) [NonAssocSemiring α] [Fintype n] [DecidableEq n] (d : nα) :
                              theorem Matrix.diagonal_pow {n : Type u_3} {α : Type u_11} [Semiring α] [Fintype n] [DecidableEq n] (v : nα) (k : ) :
                              diagonal v ^ k = diagonal (v ^ k)
                              def Matrix.scalar {α : Type u_11} [Semiring α] (n : Type u) [DecidableEq n] [Fintype n] :
                              α →+* Matrix n n α

                              The ring homomorphism α →+* Matrix n n α sending a to the diagonal matrix with a on the diagonal.

                              Equations
                                Instances For
                                  @[simp]
                                  theorem Matrix.scalar_apply {n : Type u_3} {α : Type u_11} [Semiring α] [DecidableEq n] [Fintype n] (a : α) :
                                  (scalar n) a = diagonal fun (x : n) => a
                                  theorem Matrix.scalar_inj {n : Type u_3} {α : Type u_11} [Semiring α] [DecidableEq n] [Fintype n] [Nonempty n] {r s : α} :
                                  (scalar n) r = (scalar n) s r = s
                                  theorem Matrix.scalar_comm_iff {m : Type u_2} {n : Type u_3} {α : Type u_11} [Semiring α] [DecidableEq n] [Fintype n] [DecidableEq m] [Fintype m] {r : α} {M : Matrix m n α} :
                                  (scalar m) r * M = M * (scalar n) r r M = MulOpposite.op r M

                                  A version of Matrix.scalar_commute_iff for rectangular matrices.

                                  theorem Matrix.scalar_commute_iff {n : Type u_3} {α : Type u_11} [Semiring α] [DecidableEq n] [Fintype n] {r : α} {M : Matrix n n α} :
                                  theorem Matrix.scalar_comm {m : Type u_2} {n : Type u_3} {α : Type u_11} [Semiring α] [DecidableEq n] [Fintype n] [DecidableEq m] [Fintype m] (r : α) (hr : ∀ (r' : α), Commute r r') (M : Matrix m n α) :
                                  (scalar m) r * M = M * (scalar n) r

                                  A version of Matrix.scalar_commute for rectangular matrices.

                                  theorem Matrix.scalar_commute {n : Type u_3} {α : Type u_11} [Semiring α] [DecidableEq n] [Fintype n] (r : α) (hr : ∀ (r' : α), Commute r r') (M : Matrix n n α) :
                                  Commute ((scalar n) r) M
                                  instance Matrix.instAlgebra {n : Type u_3} {R : Type u_7} {α : Type u_11} [Fintype n] [DecidableEq n] [CommSemiring R] [Semiring α] [Algebra R α] :
                                  Algebra R (Matrix n n α)
                                  Equations
                                    theorem Matrix.algebraMap_matrix_apply {n : Type u_3} {R : Type u_7} {α : Type u_11} [Fintype n] [DecidableEq n] [CommSemiring R] [Semiring α] [Algebra R α] {r : R} {i j : n} :
                                    (algebraMap R (Matrix n n α)) r i j = if i = j then (algebraMap R α) r else 0
                                    theorem Matrix.algebraMap_eq_diagonal {n : Type u_3} {R : Type u_7} {α : Type u_11} [Fintype n] [DecidableEq n] [CommSemiring R] [Semiring α] [Algebra R α] (r : R) :
                                    (algebraMap R (Matrix n n α)) r = diagonal ((algebraMap R (nα)) r)
                                    theorem Matrix.algebraMap_eq_diagonalRingHom {n : Type u_3} {R : Type u_7} {α : Type u_11} [Fintype n] [DecidableEq n] [CommSemiring R] [Semiring α] [Algebra R α] :
                                    algebraMap R (Matrix n n α) = (diagonalRingHom n α).comp (algebraMap R (nα))
                                    @[simp]
                                    theorem Matrix.map_algebraMap {n : Type u_3} {R : Type u_7} {α : Type u_11} {β : Type u_12} [Fintype n] [DecidableEq n] [CommSemiring R] [Semiring α] [Semiring β] [Algebra R α] [Algebra R β] (r : R) (f : αβ) (hf : f 0 = 0) (hf₂ : f ((algebraMap R α) r) = (algebraMap R β) r) :
                                    ((algebraMap R (Matrix n n α)) r).map f = (algebraMap R (Matrix n n β)) r
                                    def Matrix.diagonalAlgHom {n : Type u_3} (R : Type u_7) {α : Type u_11} [Fintype n] [DecidableEq n] [CommSemiring R] [Semiring α] [Algebra R α] :
                                    (nα) →ₐ[R] Matrix n n α

                                    Matrix.diagonal as an AlgHom.

                                    Equations
                                      Instances For
                                        @[simp]
                                        theorem Matrix.diagonalAlgHom_apply {n : Type u_3} (R : Type u_7) {α : Type u_11} [Fintype n] [DecidableEq n] [CommSemiring R] [Semiring α] [Algebra R α] (d : nα) :
                                        def Matrix.scalarAlgHom (n : Type u_3) (R : Type u_7) {α : Type u_11} [Fintype n] [DecidableEq n] [CommSemiring R] [Semiring α] [Algebra R α] :
                                        α →ₐ[R] Matrix n n α

                                        Matrix.scalar as an AlgHom.

                                        Equations
                                          Instances For
                                            @[simp]
                                            theorem Matrix.scalarAlgHom_apply (n : Type u_3) (R : Type u_7) {α : Type u_11} [Fintype n] [DecidableEq n] [CommSemiring R] [Semiring α] [Algebra R α] (a : α) :
                                            (scalarAlgHom n R) a = (scalar n) a
                                            def Matrix.entryAddHom {m : Type u_2} {n : Type u_3} (α : Type u_11) [Add α] (i : m) (j : n) :
                                            Matrix m n α →ₙ+ α

                                            Extracting entries from a matrix as an additive homomorphism.

                                            Equations
                                              Instances For
                                                @[simp]
                                                theorem Matrix.entryAddHom_apply {m : Type u_2} {n : Type u_3} (α : Type u_11) [Add α] (i : m) (j : n) (M : Matrix m n α) :
                                                (entryAddHom α i j) M = M i j
                                                theorem Matrix.entryAddHom_eq_comp {m : Type u_2} {n : Type u_3} {α : Type u_11} [Add α] {i : m} {j : n} :
                                                entryAddHom α i j = ((Pi.evalAddHom (fun (x : n) => α) j).comp (Pi.evalAddHom (fun (i : m) => nα) i)).comp ofAddEquiv.symm
                                                def Matrix.entryAddMonoidHom {m : Type u_2} {n : Type u_3} (α : Type u_11) [AddZeroClass α] (i : m) (j : n) :
                                                Matrix m n α →+ α

                                                Extracting entries from a matrix as an additive monoid homomorphism. Note this cannot be upgraded to a ring homomorphism, as it does not respect multiplication.

                                                Equations
                                                  Instances For
                                                    @[simp]
                                                    theorem Matrix.entryAddMonoidHom_apply {m : Type u_2} {n : Type u_3} (α : Type u_11) [AddZeroClass α] (i : m) (j : n) (M : Matrix m n α) :
                                                    (entryAddMonoidHom α i j) M = M i j
                                                    theorem Matrix.entryAddMonoidHom_eq_comp {m : Type u_2} {n : Type u_3} {α : Type u_11} [AddZeroClass α] {i : m} {j : n} :
                                                    entryAddMonoidHom α i j = ((Pi.evalAddMonoidHom (fun (x : n) => α) j).comp (Pi.evalAddMonoidHom (fun (i : m) => nα) i)).comp ofAddEquiv.symm
                                                    @[simp]
                                                    theorem Matrix.evalAddMonoidHom_comp_diagAddMonoidHom {m : Type u_2} {α : Type u_11} [AddZeroClass α] (i : m) :
                                                    (Pi.evalAddMonoidHom (fun (i : m) => α) i).comp (diagAddMonoidHom m α) = entryAddMonoidHom α i i
                                                    @[simp]
                                                    theorem Matrix.entryAddMonoidHom_toAddHom {m : Type u_2} {n : Type u_3} {α : Type u_11} [AddZeroClass α] {i : m} {j : n} :
                                                    (entryAddMonoidHom α i j) = entryAddHom α i j
                                                    def Matrix.entryLinearMap {m : Type u_2} {n : Type u_3} (R : Type u_7) (α : Type u_11) [Semiring R] [AddCommMonoid α] [Module R α] (i : m) (j : n) :
                                                    Matrix m n α →ₗ[R] α

                                                    Extracting entries from a matrix as a linear map. Note this cannot be upgraded to an algebra homomorphism, as it does not respect multiplication.

                                                    Equations
                                                      Instances For
                                                        @[simp]
                                                        theorem Matrix.entryLinearMap_apply {m : Type u_2} {n : Type u_3} (R : Type u_7) (α : Type u_11) [Semiring R] [AddCommMonoid α] [Module R α] (i : m) (j : n) (M : Matrix m n α) :
                                                        (entryLinearMap R α i j) M = M i j
                                                        theorem Matrix.entryLinearMap_eq_comp {m : Type u_2} {n : Type u_3} {R : Type u_7} {α : Type u_11} [Semiring R] [AddCommMonoid α] [Module R α] {i : m} {j : n} :
                                                        @[simp]
                                                        theorem Matrix.proj_comp_diagLinearMap {m : Type u_2} {R : Type u_7} {α : Type u_11} [Semiring R] [AddCommMonoid α] [Module R α] (i : m) :
                                                        @[simp]
                                                        theorem Matrix.entryLinearMap_toAddMonoidHom {m : Type u_2} {n : Type u_3} {R : Type u_7} {α : Type u_11} [Semiring R] [AddCommMonoid α] [Module R α] {i : m} {j : n} :
                                                        (entryLinearMap R α i j) = entryAddMonoidHom α i j
                                                        @[simp]
                                                        theorem Matrix.entryLinearMap_toAddHom {m : Type u_2} {n : Type u_3} {R : Type u_7} {α : Type u_11} [Semiring R] [AddCommMonoid α] [Module R α] {i : m} {j : n} :
                                                        (entryLinearMap R α i j) = entryAddHom α i j

                                                        Bundled versions of Matrix.map #

                                                        def Equiv.mapMatrix {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} (f : α β) :
                                                        Matrix m n α Matrix m n β

                                                        The Equiv between spaces of matrices induced by an Equiv between their coefficients. This is Matrix.map as an Equiv.

                                                        Equations
                                                          Instances For
                                                            @[simp]
                                                            theorem Equiv.mapMatrix_apply {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} (f : α β) (M : Matrix m n α) :
                                                            f.mapMatrix M = M.map f
                                                            @[simp]
                                                            theorem Equiv.mapMatrix_refl {m : Type u_2} {n : Type u_3} {α : Type u_11} :
                                                            @[simp]
                                                            theorem Equiv.mapMatrix_symm {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} (f : α β) :
                                                            @[simp]
                                                            theorem Equiv.mapMatrix_trans {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} {γ : Type u_13} (f : α β) (g : β γ) :
                                                            def AddMonoidHom.mapMatrix {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} [AddZeroClass α] [AddZeroClass β] (f : α →+ β) :
                                                            Matrix m n α →+ Matrix m n β

                                                            The AddMonoidHom between spaces of matrices induced by an AddMonoidHom between their coefficients. This is Matrix.map as an AddMonoidHom.

                                                            Equations
                                                              Instances For
                                                                @[simp]
                                                                theorem AddMonoidHom.mapMatrix_apply {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} [AddZeroClass α] [AddZeroClass β] (f : α →+ β) (M : Matrix m n α) :
                                                                f.mapMatrix M = M.map f
                                                                @[simp]
                                                                theorem AddMonoidHom.mapMatrix_id {m : Type u_2} {n : Type u_3} {α : Type u_11} [AddZeroClass α] :
                                                                (id α).mapMatrix = id (Matrix m n α)
                                                                @[simp]
                                                                theorem AddMonoidHom.mapMatrix_comp {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} {γ : Type u_13} [AddZeroClass α] [AddZeroClass β] [AddZeroClass γ] (f : β →+ γ) (g : α →+ β) :
                                                                @[simp]
                                                                theorem AddMonoidHom.entryAddMonoidHom_comp_mapMatrix {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} [AddZeroClass α] [AddZeroClass β] (f : α →+ β) (i : m) (j : n) :
                                                                @[simp]
                                                                theorem AddMonoidHom.mapMatrix_zero {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} [AddZeroClass α] [AddZeroClass β] :
                                                                @[simp]
                                                                theorem AddMonoidHom.mapMatrix_add {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} [AddZeroClass α] [AddCommMonoid β] (f g : α →+ β) :
                                                                @[simp]
                                                                theorem AddMonoidHom.mapMatrix_sub {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} [AddZeroClass α] [AddCommGroup β] (f g : α →+ β) :
                                                                @[simp]
                                                                theorem AddMonoidHom.mapMatrix_neg {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} [AddZeroClass α] [AddCommGroup β] (f : α →+ β) :
                                                                @[simp]
                                                                theorem AddMonoidHom.mapMatrix_smul {m : Type u_2} {n : Type u_3} {A : Type u_10} {α : Type u_11} {β : Type u_12} [Monoid A] [AddZeroClass α] [AddMonoid β] [DistribMulAction A β] (a : A) (f : α →+ β) :
                                                                def AddEquiv.mapMatrix {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} [Add α] [Add β] (f : α ≃+ β) :
                                                                Matrix m n α ≃+ Matrix m n β

                                                                The AddEquiv between spaces of matrices induced by an AddEquiv between their coefficients. This is Matrix.map as an AddEquiv.

                                                                Equations
                                                                  Instances For
                                                                    @[simp]
                                                                    theorem AddEquiv.mapMatrix_apply {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} [Add α] [Add β] (f : α ≃+ β) (M : Matrix m n α) :
                                                                    f.mapMatrix M = M.map f
                                                                    @[simp]
                                                                    theorem AddEquiv.mapMatrix_refl {m : Type u_2} {n : Type u_3} {α : Type u_11} [Add α] :
                                                                    (refl α).mapMatrix = refl (Matrix m n α)
                                                                    @[simp]
                                                                    theorem AddEquiv.mapMatrix_symm {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} [Add α] [Add β] (f : α ≃+ β) :
                                                                    @[simp]
                                                                    theorem AddEquiv.mapMatrix_trans {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} {γ : Type u_13} [Add α] [Add β] [Add γ] (f : α ≃+ β) (g : β ≃+ γ) :
                                                                    @[simp]
                                                                    theorem AddEquiv.entryAddHom_comp_mapMatrix {m : Type u_2} {n : Type u_3} {α : Type u_11} {β : Type u_12} [Add α] [Add β] (f : α ≃+ β) (i : m) (j : n) :
                                                                    def LinearMap.mapMatrix {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] {σᵣₛ : R →+* S} [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] (f : α →ₛₗ[σᵣₛ] β) :
                                                                    Matrix m n α →ₛₗ[σᵣₛ] Matrix m n β

                                                                    The LinearMap between spaces of matrices induced by a LinearMap between their coefficients. This is Matrix.map as a LinearMap.

                                                                    Equations
                                                                      Instances For
                                                                        @[simp]
                                                                        theorem LinearMap.mapMatrix_apply {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] {σᵣₛ : R →+* S} [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] (f : α →ₛₗ[σᵣₛ] β) (M : Matrix m n α) :
                                                                        f.mapMatrix M = M.map f
                                                                        @[simp]
                                                                        theorem LinearMap.mapMatrix_id {m : Type u_2} {n : Type u_3} {R : Type u_7} {α : Type u_11} [Semiring R] [AddCommMonoid α] [Module R α] :
                                                                        @[simp]
                                                                        theorem LinearMap.mapMatrix_comp {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {T : Type u_9} {α : Type u_11} {β : Type u_12} {γ : Type u_13} [Semiring R] [Semiring S] [Semiring T] {σᵣₛ : R →+* S} {σₛₜ : S →+* T} {σᵣₜ : R →+* T} [RingHomCompTriple σᵣₛ σₛₜ σᵣₜ] [AddCommMonoid α] [AddCommMonoid β] [AddCommMonoid γ] [Module R α] [Module S β] [Module T γ] (f : β →ₛₗ[σₛₜ] γ) (g : α →ₛₗ[σᵣₛ] β) :
                                                                        @[simp]
                                                                        theorem LinearMap.entryLinearMap_comp_mapMatrix {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] {σᵣₛ : R →+* S} [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] (f : α →ₛₗ[σᵣₛ] β) (i : m) (j : n) :
                                                                        @[simp]
                                                                        theorem LinearMap.mapMatrix_zero {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] {σᵣₛ : R →+* S} [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] :
                                                                        @[simp]
                                                                        theorem LinearMap.mapMatrix_add {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] {σᵣₛ : R →+* S} [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] (f g : α →ₛₗ[σᵣₛ] β) :
                                                                        @[simp]
                                                                        theorem LinearMap.mapMatrix_smul {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {A : Type u_10} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] {σᵣₛ : R →+* S} [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] [Monoid A] [DistribMulAction A β] [SMulCommClass S A β] (a : A) (f : α →ₛₗ[σᵣₛ] β) :
                                                                        def LinearMap.mapMatrixLinear {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} (A : Type u_10) {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] {σᵣₛ : R →+* S} [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] [Semiring A] [Module A β] [SMulCommClass S A β] :
                                                                        (α →ₛₗ[σᵣₛ] β) →ₗ[A] Matrix m n α →ₛₗ[σᵣₛ] Matrix m n β

                                                                        LinearMap.mapMatrix is itself linear in the map being applied.

                                                                        Alternative, this is Matrix.map as a bilinear map.

                                                                        Equations
                                                                          Instances For
                                                                            @[simp]
                                                                            theorem LinearMap.mapMatrixLinear_apply {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} (A : Type u_10) {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] {σᵣₛ : R →+* S} [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] [Semiring A] [Module A β] [SMulCommClass S A β] (f : α →ₛₗ[σᵣₛ] β) :
                                                                            @[simp]
                                                                            theorem LinearMap.mapMatrix_sub {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] {σᵣₛ : R →+* S} [AddCommMonoid α] [AddCommGroup β] [Module R α] [Module S β] (f g : α →ₛₗ[σᵣₛ] β) :
                                                                            @[simp]
                                                                            theorem LinearMap.mapMatrix_neg {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] {σᵣₛ : R →+* S} [AddCommMonoid α] [AddCommGroup β] [Module R α] [Module S β] (f : α →ₛₗ[σᵣₛ] β) :
                                                                            def LinearEquiv.mapMatrix {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] {σᵣₛ : R →+* S} {σₛᵣ : S →+* R} [RingHomInvPair σᵣₛ σₛᵣ] [RingHomInvPair σₛᵣ σᵣₛ] (f : α ≃ₛₗ[σᵣₛ] β) :
                                                                            Matrix m n α ≃ₛₗ[σᵣₛ] Matrix m n β

                                                                            The LinearEquiv between spaces of matrices induced by a LinearEquiv between their coefficients. This is Matrix.map as a LinearEquiv.

                                                                            Equations
                                                                              Instances For
                                                                                @[simp]
                                                                                theorem LinearEquiv.mapMatrix_apply {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] {σᵣₛ : R →+* S} {σₛᵣ : S →+* R} [RingHomInvPair σᵣₛ σₛᵣ] [RingHomInvPair σₛᵣ σᵣₛ] (f : α ≃ₛₗ[σᵣₛ] β) (M : Matrix m n α) :
                                                                                f.mapMatrix M = M.map f
                                                                                @[simp]
                                                                                theorem LinearEquiv.mapMatrix_refl {m : Type u_2} {n : Type u_3} {R : Type u_7} {α : Type u_11} [Semiring R] [AddCommMonoid α] [Module R α] :
                                                                                (refl R α).mapMatrix = refl R (Matrix m n α)
                                                                                @[simp]
                                                                                theorem LinearEquiv.mapMatrix_symm {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] {σᵣₛ : R →+* S} {σₛᵣ : S →+* R} [RingHomInvPair σᵣₛ σₛᵣ] [RingHomInvPair σₛᵣ σᵣₛ] (f : α ≃ₛₗ[σᵣₛ] β) :
                                                                                @[simp]
                                                                                theorem LinearEquiv.mapMatrix_trans {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {T : Type u_9} {α : Type u_11} {β : Type u_12} {γ : Type u_13} [Semiring R] [Semiring S] [Semiring T] [AddCommMonoid α] [AddCommMonoid β] [AddCommMonoid γ] [Module R α] [Module S β] [Module T γ] {σᵣₛ : R →+* S} {σₛₜ : S →+* T} {σᵣₜ : R →+* T} [RingHomCompTriple σᵣₛ σₛₜ σᵣₜ] {σₛᵣ : S →+* R} {σₜₛ : T →+* S} {σₜᵣ : T →+* R} [RingHomCompTriple σₜₛ σₛᵣ σₜᵣ] [RingHomInvPair σᵣₛ σₛᵣ] [RingHomInvPair σₛᵣ σᵣₛ] [RingHomInvPair σₛₜ σₜₛ] [RingHomInvPair σₜₛ σₛₜ] [RingHomInvPair σᵣₜ σₜᵣ] [RingHomInvPair σₜᵣ σᵣₜ] (f : α ≃ₛₗ[σᵣₛ] β) (g : β ≃ₛₗ[σₛₜ] γ) :
                                                                                @[simp]
                                                                                theorem LinearEquiv.mapMatrix_toLinearMap {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] {σᵣₛ : R →+* S} {σₛᵣ : S →+* R} [RingHomInvPair σᵣₛ σₛᵣ] [RingHomInvPair σₛᵣ σᵣₛ] (f : α ≃ₛₗ[σᵣₛ] β) :
                                                                                f.mapMatrix = (↑f).mapMatrix
                                                                                theorem LinearEquiv.entryLinearMap_comp_mapMatrix {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} {α : Type u_11} {β : Type u_12} [Semiring R] [Semiring S] [AddCommMonoid α] [AddCommMonoid β] [Module R α] [Module S β] {σᵣₛ : R →+* S} {σₛᵣ : S →+* R} [RingHomInvPair σᵣₛ σₛᵣ] [RingHomInvPair σₛᵣ σᵣₛ] (f : α ≃ₛₗ[σᵣₛ] β) (i : m) (j : n) :
                                                                                def RingHom.mapMatrix {m : Type u_2} {α : Type u_11} {β : Type u_12} [Fintype m] [DecidableEq m] [NonAssocSemiring α] [NonAssocSemiring β] (f : α →+* β) :
                                                                                Matrix m m α →+* Matrix m m β

                                                                                The RingHom between spaces of square matrices induced by a RingHom between their coefficients. This is Matrix.map as a RingHom.

                                                                                Equations
                                                                                  Instances For
                                                                                    @[simp]
                                                                                    theorem RingHom.mapMatrix_apply {m : Type u_2} {α : Type u_11} {β : Type u_12} [Fintype m] [DecidableEq m] [NonAssocSemiring α] [NonAssocSemiring β] (f : α →+* β) (M : Matrix m m α) :
                                                                                    f.mapMatrix M = M.map f
                                                                                    @[simp]
                                                                                    theorem RingHom.mapMatrix_id {m : Type u_2} {α : Type u_11} [Fintype m] [DecidableEq m] [NonAssocSemiring α] :
                                                                                    (id α).mapMatrix = id (Matrix m m α)
                                                                                    @[simp]
                                                                                    theorem RingHom.mapMatrix_comp {m : Type u_2} {α : Type u_11} {β : Type u_12} {γ : Type u_13} [Fintype m] [DecidableEq m] [NonAssocSemiring α] [NonAssocSemiring β] [NonAssocSemiring γ] (f : β →+* γ) (g : α →+* β) :
                                                                                    theorem Matrix.map_pow {m : Type u_2} [Fintype m] [DecidableEq m] {α : Type u_14} {β : Type u_15} [Semiring α] [Semiring β] (M : Matrix m m α) (f : α →+* β) (a : ) :
                                                                                    (M ^ a).map f = M.map f ^ a
                                                                                    def RingEquiv.mapMatrix {m : Type u_2} {α : Type u_11} {β : Type u_12} [Fintype m] [DecidableEq m] [NonAssocSemiring α] [NonAssocSemiring β] (f : α ≃+* β) :
                                                                                    Matrix m m α ≃+* Matrix m m β

                                                                                    The RingEquiv between spaces of square matrices induced by a RingEquiv between their coefficients. This is Matrix.map as a RingEquiv.

                                                                                    Equations
                                                                                      Instances For
                                                                                        @[simp]
                                                                                        theorem RingEquiv.mapMatrix_apply {m : Type u_2} {α : Type u_11} {β : Type u_12} [Fintype m] [DecidableEq m] [NonAssocSemiring α] [NonAssocSemiring β] (f : α ≃+* β) (M : Matrix m m α) :
                                                                                        f.mapMatrix M = M.map f
                                                                                        @[simp]
                                                                                        theorem RingEquiv.mapMatrix_refl {m : Type u_2} {α : Type u_11} [Fintype m] [DecidableEq m] [NonAssocSemiring α] :
                                                                                        (refl α).mapMatrix = refl (Matrix m m α)
                                                                                        @[simp]
                                                                                        theorem RingEquiv.mapMatrix_symm {m : Type u_2} {α : Type u_11} {β : Type u_12} [Fintype m] [DecidableEq m] [NonAssocSemiring α] [NonAssocSemiring β] (f : α ≃+* β) :
                                                                                        @[simp]
                                                                                        theorem RingEquiv.mapMatrix_trans {m : Type u_2} {α : Type u_11} {β : Type u_12} {γ : Type u_13} [Fintype m] [DecidableEq m] [NonAssocSemiring α] [NonAssocSemiring β] [NonAssocSemiring γ] (f : α ≃+* β) (g : β ≃+* γ) :
                                                                                        def RingEquiv.mopMatrix {m : Type u_2} [Fintype m] {α : Type u_14} [Mul α] [AddCommMonoid α] :

                                                                                        For any ring R, we have ring isomorphism Matₙₓₙ(Rᵒᵖ) ≅ (Matₙₓₙ(R))ᵒᵖ given by transpose.

                                                                                        Equations
                                                                                          Instances For
                                                                                            def AlgHom.mapMatrix {m : Type u_2} {R : Type u_7} {α : Type u_11} {β : Type u_12} [Fintype m] [DecidableEq m] [CommSemiring R] [Semiring α] [Semiring β] [Algebra R α] [Algebra R β] (f : α →ₐ[R] β) :
                                                                                            Matrix m m α →ₐ[R] Matrix m m β

                                                                                            The AlgHom between spaces of square matrices induced by an AlgHom between their coefficients. This is Matrix.map as an AlgHom.

                                                                                            Equations
                                                                                              Instances For
                                                                                                @[simp]
                                                                                                theorem AlgHom.mapMatrix_apply {m : Type u_2} {R : Type u_7} {α : Type u_11} {β : Type u_12} [Fintype m] [DecidableEq m] [CommSemiring R] [Semiring α] [Semiring β] [Algebra R α] [Algebra R β] (f : α →ₐ[R] β) (M : Matrix m m α) :
                                                                                                f.mapMatrix M = M.map f
                                                                                                @[simp]
                                                                                                theorem AlgHom.mapMatrix_id {m : Type u_2} {R : Type u_7} {α : Type u_11} [Fintype m] [DecidableEq m] [CommSemiring R] [Semiring α] [Algebra R α] :
                                                                                                @[simp]
                                                                                                theorem AlgHom.mapMatrix_comp {m : Type u_2} {R : Type u_7} {α : Type u_11} {β : Type u_12} {γ : Type u_13} [Fintype m] [DecidableEq m] [CommSemiring R] [Semiring α] [Semiring β] [Semiring γ] [Algebra R α] [Algebra R β] [Algebra R γ] (f : β →ₐ[R] γ) (g : α →ₐ[R] β) :
                                                                                                def AlgEquiv.mapMatrix {m : Type u_2} {R : Type u_7} {α : Type u_11} {β : Type u_12} [Fintype m] [DecidableEq m] [CommSemiring R] [Semiring α] [Semiring β] [Algebra R α] [Algebra R β] (f : α ≃ₐ[R] β) :
                                                                                                Matrix m m α ≃ₐ[R] Matrix m m β

                                                                                                The AlgEquiv between spaces of square matrices induced by an AlgEquiv between their coefficients. This is Matrix.map as an AlgEquiv.

                                                                                                Equations
                                                                                                  Instances For
                                                                                                    @[simp]
                                                                                                    theorem AlgEquiv.mapMatrix_apply {m : Type u_2} {R : Type u_7} {α : Type u_11} {β : Type u_12} [Fintype m] [DecidableEq m] [CommSemiring R] [Semiring α] [Semiring β] [Algebra R α] [Algebra R β] (f : α ≃ₐ[R] β) (M : Matrix m m α) :
                                                                                                    f.mapMatrix M = M.map f
                                                                                                    @[simp]
                                                                                                    theorem AlgEquiv.mapMatrix_refl {m : Type u_2} {R : Type u_7} {α : Type u_11} [Fintype m] [DecidableEq m] [CommSemiring R] [Semiring α] [Algebra R α] :
                                                                                                    @[simp]
                                                                                                    theorem AlgEquiv.mapMatrix_symm {m : Type u_2} {R : Type u_7} {α : Type u_11} {β : Type u_12} [Fintype m] [DecidableEq m] [CommSemiring R] [Semiring α] [Semiring β] [Algebra R α] [Algebra R β] (f : α ≃ₐ[R] β) :
                                                                                                    @[simp]
                                                                                                    theorem AlgEquiv.mapMatrix_trans {m : Type u_2} {R : Type u_7} {α : Type u_11} {β : Type u_12} {γ : Type u_13} [Fintype m] [DecidableEq m] [CommSemiring R] [Semiring α] [Semiring β] [Semiring γ] [Algebra R α] [Algebra R β] [Algebra R γ] (f : α ≃ₐ[R] β) (g : β ≃ₐ[R] γ) :
                                                                                                    def AlgEquiv.mopMatrix {m : Type u_2} {R : Type u_7} {α : Type u_11} [Fintype m] [DecidableEq m] [CommSemiring R] [Semiring α] [Algebra R α] :

                                                                                                    For any algebra α over a ring R, we have an R-algebra isomorphism Matₙₓₙ(αᵒᵖ) ≅ (Matₙₓₙ(R))ᵒᵖ given by transpose. If α is commutative, we can get rid of the ᵒᵖ in the left-hand side, see Matrix.transposeAlgEquiv.

                                                                                                    Equations
                                                                                                      Instances For
                                                                                                        def AddSubmonoid.matrix {m : Type u_2} {n : Type u_3} {A : Type u_14} [AddMonoid A] (S : AddSubmonoid A) :

                                                                                                        A version of Set.matrix for AddSubmonoids. Given an AddSubmonoid S, S.matrix is the AddSubmonoid of matrices m all of whose entries m i j belong to S.

                                                                                                        Equations
                                                                                                          Instances For
                                                                                                            @[simp]
                                                                                                            theorem AddSubmonoid.coe_matrix {m : Type u_2} {n : Type u_3} {A : Type u_14} [AddMonoid A] (S : AddSubmonoid A) :
                                                                                                            S.matrix = (↑S).matrix
                                                                                                            def AddSubgroup.matrix {m : Type u_2} {n : Type u_3} {A : Type u_14} [AddGroup A] (S : AddSubgroup A) :

                                                                                                            A version of Set.matrix for AddSubgroups. Given an AddSubgroup S, S.matrix is the AddSubgroup of matrices m all of whose entries m i j belong to S.

                                                                                                            Equations
                                                                                                              Instances For
                                                                                                                @[simp]
                                                                                                                theorem AddSubgroup.coe_matrix {m : Type u_2} {n : Type u_3} {A : Type u_14} [AddGroup A] (S : AddSubgroup A) :
                                                                                                                S.matrix = (↑S).matrix
                                                                                                                def Subsemiring.matrix {n : Type u_3} {R : Type u_14} [NonAssocSemiring R] [Fintype n] [DecidableEq n] (S : Subsemiring R) :

                                                                                                                A version of Set.matrix for Subsemirings. Given a Subsemiring S, S.matrix is the Subsemiring of square matrices m all of whose entries m i j belong to S.

                                                                                                                Equations
                                                                                                                  Instances For
                                                                                                                    def Subring.matrix {n : Type u_3} {R : Type u_14} [Ring R] [Fintype n] [DecidableEq n] (S : Subring R) :
                                                                                                                    Subring (Matrix n n R)

                                                                                                                    A version of Set.matrix for Subrings. Given a Subring S, S.matrix is the Subring of square matrices m all of whose entries m i j belong to S.

                                                                                                                    Equations
                                                                                                                      Instances For
                                                                                                                        @[simp]
                                                                                                                        theorem Subring.coe_matrix {n : Type u_3} {R : Type u_14} [Ring R] [Fintype n] [DecidableEq n] (S : Subring R) :
                                                                                                                        def Submodule.matrix {m : Type u_2} {n : Type u_3} {R : Type u_14} {M : Type u_15} [Semiring R] [AddCommMonoid M] [Module R M] (S : Submodule R M) :
                                                                                                                        Submodule R (Matrix m n M)

                                                                                                                        A version of Set.matrix for Submodules. Given a Submodule S, S.matrix is the Submodule of matrices m all of whose entries m i j belong to S.

                                                                                                                        Equations
                                                                                                                          Instances For
                                                                                                                            @[simp]
                                                                                                                            theorem Submodule.coe_matrix {m : Type u_2} {n : Type u_3} {R : Type u_14} {M : Type u_15} [Semiring R] [AddCommMonoid M] [Module R M] (S : Submodule R M) :
                                                                                                                            S.matrix = (↑S).matrix
                                                                                                                            def Matrix.piEquiv {m : Type u_2} {n : Type u_3} {ι : Type u_14} {β : ιType u_15} :
                                                                                                                            Matrix m n ((i : ι) → β i) ((i : ι) → Matrix m n (β i))

                                                                                                                            Matrices over a Pi type are in canonical bijection with tuples of matrices.

                                                                                                                            Equations
                                                                                                                              Instances For
                                                                                                                                @[simp]
                                                                                                                                theorem Matrix.piEquiv_symm_apply {m : Type u_2} {n : Type u_3} {ι : Type u_14} {β : ιType u_15} (f : (i : ι) → Matrix m n (β i)) :
                                                                                                                                piEquiv.symm f = of fun (j : m) (k : n) (i : ι) => f i j k
                                                                                                                                @[simp]
                                                                                                                                theorem Matrix.piEquiv_apply {m : Type u_2} {n : Type u_3} {ι : Type u_14} {β : ιType u_15} (f : Matrix m n ((i : ι) → β i)) (i : ι) :
                                                                                                                                piEquiv f i = f.map fun (x : (i : ι) → β i) => x i
                                                                                                                                def Matrix.piAddEquiv {m : Type u_2} {n : Type u_3} {ι : Type u_14} {β : ιType u_15} [(i : ι) → Add (β i)] :
                                                                                                                                Matrix m n ((i : ι) → β i) ≃+ ((i : ι) → Matrix m n (β i))

                                                                                                                                piEquiv as an AddEquiv.

                                                                                                                                Equations
                                                                                                                                  Instances For
                                                                                                                                    @[simp]
                                                                                                                                    theorem Matrix.piAddEquiv_symm_apply {m : Type u_2} {n : Type u_3} {ι : Type u_14} {β : ιType u_15} [(i : ι) → Add (β i)] (f : (i : ι) → Matrix m n (β i)) :
                                                                                                                                    piAddEquiv.symm f = of fun (j : m) (k : n) (i : ι) => f i j k
                                                                                                                                    @[simp]
                                                                                                                                    theorem Matrix.piAddEquiv_apply {m : Type u_2} {n : Type u_3} {ι : Type u_14} {β : ιType u_15} [(i : ι) → Add (β i)] (f : Matrix m n ((i : ι) → β i)) (i : ι) :
                                                                                                                                    piAddEquiv f i = f.map fun (x : (i : ι) → β i) => x i
                                                                                                                                    def Matrix.piLinearEquiv {m : Type u_2} {n : Type u_3} {ι : Type u_14} {β : ιType u_15} (R : Type u_16) [Semiring R] [(i : ι) → AddCommMonoid (β i)] [(i : ι) → Module R (β i)] :
                                                                                                                                    Matrix m n ((i : ι) → β i) ≃ₗ[R] (i : ι) → Matrix m n (β i)

                                                                                                                                    piEquiv as a LinearEquiv.

                                                                                                                                    Equations
                                                                                                                                      Instances For
                                                                                                                                        @[simp]
                                                                                                                                        theorem Matrix.piLinearEquiv_apply {m : Type u_2} {n : Type u_3} {ι : Type u_14} {β : ιType u_15} (R : Type u_16) [Semiring R] [(i : ι) → AddCommMonoid (β i)] [(i : ι) → Module R (β i)] (a✝ : Matrix m n ((i : ι) → β i)) (i : ι) :
                                                                                                                                        (piLinearEquiv R) a✝ i = piAddEquiv.toFun a✝ i
                                                                                                                                        @[simp]
                                                                                                                                        theorem Matrix.piLinearEquiv_symm_apply {m : Type u_2} {n : Type u_3} {ι : Type u_14} {β : ιType u_15} (R : Type u_16) [Semiring R] [(i : ι) → AddCommMonoid (β i)] [(i : ι) → Module R (β i)] (a✝ : (i : ι) → Matrix m n (β i)) :
                                                                                                                                        def Matrix.piRingEquiv {n : Type u_3} {ι : Type u_14} {β : ιType u_15} [(i : ι) → AddCommMonoid (β i)] [(i : ι) → Mul (β i)] [Fintype n] :
                                                                                                                                        Matrix n n ((i : ι) → β i) ≃+* ((i : ι) → Matrix n n (β i))

                                                                                                                                        piEquiv as a RingEquiv.

                                                                                                                                        Equations
                                                                                                                                          Instances For
                                                                                                                                            @[simp]
                                                                                                                                            theorem Matrix.piRingEquiv_apply {n : Type u_3} {ι : Type u_14} {β : ιType u_15} [(i : ι) → AddCommMonoid (β i)] [(i : ι) → Mul (β i)] [Fintype n] (f : Matrix n n ((i : ι) → β i)) (i : ι) :
                                                                                                                                            piRingEquiv f i = f.map fun (x : (i : ι) → β i) => x i
                                                                                                                                            @[simp]
                                                                                                                                            theorem Matrix.piRingEquiv_symm_apply {n : Type u_3} {ι : Type u_14} {β : ιType u_15} [(i : ι) → AddCommMonoid (β i)] [(i : ι) → Mul (β i)] [Fintype n] (f : (i : ι) → Matrix n n (β i)) :
                                                                                                                                            piRingEquiv.symm f = of fun (j k : n) (i : ι) => f i j k
                                                                                                                                            def Matrix.piAlgEquiv {n : Type u_3} {ι : Type u_14} {β : ιType u_15} (R : Type u_16) [CommSemiring R] [(i : ι) → Semiring (β i)] [(i : ι) → Algebra R (β i)] [Fintype n] [DecidableEq n] :
                                                                                                                                            Matrix n n ((i : ι) → β i) ≃ₐ[R] (i : ι) → Matrix n n (β i)

                                                                                                                                            piEquiv as an AlgEquiv.

                                                                                                                                            Equations
                                                                                                                                              Instances For
                                                                                                                                                @[simp]
                                                                                                                                                theorem Matrix.piAlgEquiv_apply {n : Type u_3} {ι : Type u_14} {β : ιType u_15} (R : Type u_16) [CommSemiring R] [(i : ι) → Semiring (β i)] [(i : ι) → Algebra R (β i)] [Fintype n] [DecidableEq n] (f : Matrix n n ((i : ι) → β i)) (i : ι) :
                                                                                                                                                (piAlgEquiv R) f i = f.map fun (x : (i : ι) → β i) => x i
                                                                                                                                                @[simp]
                                                                                                                                                theorem Matrix.piAlgEquiv_symm_apply {n : Type u_3} {ι : Type u_14} {β : ιType u_15} (R : Type u_16) [CommSemiring R] [(i : ι) → Semiring (β i)] [(i : ι) → Algebra R (β i)] [Fintype n] [DecidableEq n] (f : (i : ι) → Matrix n n (β i)) :
                                                                                                                                                (piAlgEquiv R).symm f = of fun (j k : n) (i : ι) => f i j k
                                                                                                                                                def Matrix.transposeAddEquiv (m : Type u_2) (n : Type u_3) (α : Type u_11) [Add α] :
                                                                                                                                                Matrix m n α ≃+ Matrix n m α

                                                                                                                                                Matrix.transpose as an AddEquiv

                                                                                                                                                Equations
                                                                                                                                                  Instances For
                                                                                                                                                    @[simp]
                                                                                                                                                    theorem Matrix.transposeAddEquiv_apply (m : Type u_2) (n : Type u_3) (α : Type u_11) [Add α] (M : Matrix m n α) :
                                                                                                                                                    @[simp]
                                                                                                                                                    theorem Matrix.transposeAddEquiv_symm (m : Type u_2) (n : Type u_3) (α : Type u_11) [Add α] :
                                                                                                                                                    theorem Matrix.transpose_list_sum {m : Type u_2} {n : Type u_3} {α : Type u_11} [AddMonoid α] (l : List (Matrix m n α)) :
                                                                                                                                                    theorem Matrix.transpose_sum {m : Type u_2} {n : Type u_3} {α : Type u_11} [AddCommMonoid α] {ι : Type u_14} (s : Finset ι) (M : ιMatrix m n α) :
                                                                                                                                                    (∑ is, M i).transpose = is, (M i).transpose
                                                                                                                                                    def Matrix.transposeLinearEquiv (m : Type u_2) (n : Type u_3) (R : Type u_7) (α : Type u_11) [Semiring R] [AddCommMonoid α] [Module R α] :
                                                                                                                                                    Matrix m n α ≃ₗ[R] Matrix n m α

                                                                                                                                                    Matrix.transpose as a LinearMap

                                                                                                                                                    Equations
                                                                                                                                                      Instances For
                                                                                                                                                        @[simp]
                                                                                                                                                        theorem Matrix.transposeLinearEquiv_apply (m : Type u_2) (n : Type u_3) (R : Type u_7) (α : Type u_11) [Semiring R] [AddCommMonoid α] [Module R α] (a✝ : Matrix m n α) :
                                                                                                                                                        (transposeLinearEquiv m n R α) a✝ = (transposeAddEquiv m n α).toFun a✝
                                                                                                                                                        @[simp]
                                                                                                                                                        theorem Matrix.transposeLinearEquiv_symm (m : Type u_2) (n : Type u_3) (R : Type u_7) (α : Type u_11) [Semiring R] [AddCommMonoid α] [Module R α] :
                                                                                                                                                        def Matrix.transposeRingEquiv (m : Type u_2) (α : Type u_11) [AddCommMonoid α] [CommSemigroup α] [Fintype m] :
                                                                                                                                                        Matrix m m α ≃+* (Matrix m m α)ᵐᵒᵖ

                                                                                                                                                        Matrix.transpose as a RingEquiv to the opposite ring

                                                                                                                                                        Equations
                                                                                                                                                          Instances For
                                                                                                                                                            @[simp]
                                                                                                                                                            theorem Matrix.transpose_pow {m : Type u_2} {α : Type u_11} [CommSemiring α] [Fintype m] [DecidableEq m] (M : Matrix m m α) (k : ) :
                                                                                                                                                            (M ^ k).transpose = M.transpose ^ k
                                                                                                                                                            def Matrix.transposeAlgEquiv (m : Type u_2) (R : Type u_7) (α : Type u_11) [CommSemiring R] [CommSemiring α] [Fintype m] [DecidableEq m] [Algebra R α] :

                                                                                                                                                            Matrix.transpose as an AlgEquiv to the opposite ring

                                                                                                                                                            Equations
                                                                                                                                                              Instances For
                                                                                                                                                                @[simp]
                                                                                                                                                                theorem Matrix.transposeAlgEquiv_apply (m : Type u_2) (R : Type u_7) (α : Type u_11) [CommSemiring R] [CommSemiring α] [Fintype m] [DecidableEq m] [Algebra R α] (M : Matrix m m α) :
                                                                                                                                                                @[simp]
                                                                                                                                                                theorem Matrix.transposeAlgEquiv_symm_apply (m : Type u_2) (R : Type u_7) (α : Type u_11) [CommSemiring R] [CommSemiring α] [Fintype m] [DecidableEq m] [Algebra R α] (a✝ : (Matrix m m α)ᵐᵒᵖ) :
                                                                                                                                                                theorem Matrix.sum_mulVec {m : Type u_2} {n : Type u_3} {α : Type u_11} {ι : Type u_14} [NonUnitalNonAssocSemiring α] [Fintype n] (s : Finset ι) (x : ιMatrix m n α) (y : nα) :
                                                                                                                                                                (∑ is, x i).mulVec y = is, (x i).mulVec y
                                                                                                                                                                theorem Matrix.mulVec_sum {m : Type u_2} {n : Type u_3} {α : Type u_11} {ι : Type u_14} [NonUnitalNonAssocSemiring α] [Fintype n] (x : Matrix m n α) (s : Finset ι) (y : ιnα) :
                                                                                                                                                                x.mulVec (∑ is, y i) = is, x.mulVec (y i)
                                                                                                                                                                theorem Matrix.sum_vecMul {m : Type u_2} {n : Type u_3} {α : Type u_11} {ι : Type u_14} [NonUnitalNonAssocSemiring α] [Fintype n] (s : Finset ι) (x : ιnα) (y : Matrix n m α) :
                                                                                                                                                                vecMul (∑ is, x i) y = is, vecMul (x i) y
                                                                                                                                                                theorem Matrix.vecMul_sum {m : Type u_2} {n : Type u_3} {α : Type u_11} {ι : Type u_14} [NonUnitalNonAssocSemiring α] [Fintype n] (x : nα) (s : Finset ι) (y : ιMatrix n m α) :
                                                                                                                                                                vecMul x (∑ is, y i) = is, vecMul x (y i)