Documentation

Mathlib.Data.Matrix.Bilinear

Bundled versions of multiplication for matrices #

This file provides versions of LinearMap.mulLeft and LinearMap.mulRight which work for the heterogeneous multiplication of matrices.

def mulLeftLinearMap {l : Type u_1} {m : Type u_2} (n : Type u_3) (R : Type u_5) {A : Type u_6} [Fintype m] [Semiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] (X : Matrix l m A) :
Matrix m n A →ₗ[R] Matrix l n A

A version of LinearMap.mulLeft for matrix multiplication.

Equations
@[simp]
theorem mulLeftLinearMap_apply {l : Type u_1} {m : Type u_2} (n : Type u_3) (R : Type u_5) {A : Type u_6} [Fintype m] [Semiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] (X : Matrix l m A) (x✝ : Matrix m n A) :
(mulLeftLinearMap n R X) x✝ = X * x✝
@[simp]
theorem mulLeftLinearMap_zero_eq_zero {l : Type u_1} {m : Type u_2} (n : Type u_3) (R : Type u_5) {A : Type u_6} [Fintype m] [Semiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] :

A version of LinearMap.mulLeft_zero_eq_zero for matrix multiplication.

def mulRightLinearMap (l : Type u_1) {m : Type u_2} {n : Type u_3} (R : Type u_5) {A : Type u_6} [Fintype m] [Semiring R] [NonUnitalNonAssocSemiring A] [Module R A] [IsScalarTower R A A] (Y : Matrix m n A) :
Matrix l m A →ₗ[R] Matrix l n A

A version of LinearMap.mulRight for matrix multiplication.

Equations
@[simp]
theorem mulRightLinearMap_apply (l : Type u_1) {m : Type u_2} {n : Type u_3} (R : Type u_5) {A : Type u_6} [Fintype m] [Semiring R] [NonUnitalNonAssocSemiring A] [Module R A] [IsScalarTower R A A] (Y : Matrix m n A) (x✝ : Matrix l m A) :
(mulRightLinearMap l R Y) x✝ = x✝ * Y
@[simp]
theorem mulRightLinearMap_zero_eq_zero (l : Type u_1) {m : Type u_2} {n : Type u_3} (R : Type u_5) {A : Type u_6} [Fintype m] [Semiring R] [NonUnitalNonAssocSemiring A] [Module R A] [IsScalarTower R A A] :

A version of LinearMap.mulLeft_zero_eq_zero for matrix multiplication.

def mulLinearMap {l : Type u_1} {m : Type u_2} {n : Type u_3} (R : Type u_5) {A : Type u_6} [Fintype m] [CommSemiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] :
Matrix l m A →ₗ[R] Matrix m n A →ₗ[R] Matrix l n A

A version of LinearMap.mul for matrix multiplication.

Equations
@[simp]
theorem mulLinearMap_apply_apply {l : Type u_1} {m : Type u_2} {n : Type u_3} (R : Type u_5) {A : Type u_6} [Fintype m] [CommSemiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] (X : Matrix l m A) (x✝ : Matrix m n A) :
((mulLinearMap R) X) x✝ = X * x✝
theorem mulLinearMap_eq_mul {m : Type u_2} (R : Type u_5) {A : Type u_6} [Fintype m] [CommSemiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] :

On square matrices, Matrix.mulLinearMap and LinearMap.mul coincide.

@[simp]
theorem mulLeftLinearMap_mul {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {R : Type u_5} {A : Type u_6} [Fintype m] [Fintype n] [Semiring R] [NonUnitalSemiring A] [Module R A] [SMulCommClass R A A] (a : Matrix l m A) (b : Matrix m n A) :

A version of LinearMap.mulLeft_mul for matrix multiplication.

@[simp]
theorem mulRightLinearMap_mul {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {R : Type u_5} {A : Type u_6} [Fintype m] [Fintype n] [Semiring R] [NonUnitalSemiring A] [Module R A] [IsScalarTower R A A] (a : Matrix m n A) (b : Matrix n o A) :

A version of LinearMap.mulRight_mul for matrix multiplication.

theorem commute_mulLeftLinearMap_mulRightLinearMap {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {R : Type u_5} {A : Type u_6} [Fintype m] [Fintype n] [CommSemiring R] [NonUnitalSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] (a : Matrix l m A) (b : Matrix n o A) :

A version of LinearMap.commute_mulLeft_right for matrix multiplication.

@[simp]
theorem mulLeftLinearMap_one {m : Type u_2} {n : Type u_3} {R : Type u_5} {A : Type u_6} [Fintype m] [DecidableEq m] [Semiring R] [Semiring A] [Module R A] [SMulCommClass R A A] :

A version of LinearMap.mulLeft_one for matrix multiplication.

@[simp]
theorem mulLeftLinearMap_eq_zero_iff {l : Type u_1} {m : Type u_2} {n : Type u_3} {R : Type u_5} {A : Type u_6} [Fintype m] [Semiring R] [Semiring A] [Module R A] [SMulCommClass R A A] [Nonempty n] (a : Matrix l m A) :
mulLeftLinearMap n R a = 0 a = 0

A version of LinearMap.mulLeft_eq_zero_iff for matrix multiplication.

@[simp]
theorem pow_mulLeftLinearMap {m : Type u_2} {n : Type u_3} {R : Type u_5} {A : Type u_6} [Fintype m] [DecidableEq m] [Semiring R] [Semiring A] [Module R A] [SMulCommClass R A A] (a : Matrix m m A) (k : ) :

A version of LinearMap.pow_mulLeft for matrix multiplication.

@[simp]
theorem mulRightLinearMap_one {l : Type u_1} {m : Type u_2} {R : Type u_5} {A : Type u_6} [Fintype m] [DecidableEq m] [Semiring R] [Semiring A] [Module R A] [IsScalarTower R A A] :

A version of LinearMap.mulRight_one for matrix multiplication.

@[simp]
theorem mulRightLinearMap_eq_zero_iff {l : Type u_1} {m : Type u_2} {n : Type u_3} {R : Type u_5} {A : Type u_6} [Fintype m] [Semiring R] [Semiring A] [Module R A] [IsScalarTower R A A] (a : Matrix m n A) [Nonempty l] :
mulRightLinearMap l R a = 0 a = 0

A version of LinearMap.mulRight_eq_zero_iff for matrix multiplication.

@[simp]
theorem pow_mulRightLinearMap {l : Type u_1} {m : Type u_2} {R : Type u_5} {A : Type u_6} [Fintype m] [DecidableEq m] [Semiring R] [Semiring A] [Module R A] [IsScalarTower R A A] (a : Matrix m m A) (k : ) :

A version of LinearMap.pow_mulRight for matrix multiplication.