mathlib3 documentation

monlib / linear_algebra.kronecker_to_tensor

Kronecker product to the tensor product #

This file contains the definition of tensor_to_kronecker and kronecker_to_tensor, the linear equivalences between ⊗ₜ and ⊗ₖ.

def tensor_product.to_kronecker {R : Type u_1} {m : Type u_2} {n : Type u_3} [comm_semiring R] [fintype m] [fintype n] [decidable_eq m] [decidable_eq n] :
tensor_product R (matrix m m R) (matrix n n R) →ₗ[R] matrix (m × n) (m × n) R
Equations
def matrix.kronecker_to_tensor_product {R : Type u_1} {m : Type u_2} {n : Type u_3} [comm_semiring R] [fintype m] [fintype n] [decidable_eq m] [decidable_eq n] :
matrix (m × n) (m × n) R →ₗ[R] tensor_product R (matrix m m R) (matrix n n R)
Equations
theorem tensor_product.matrix_star {R : Type u_1} {m : Type u_2} {n : Type u_3} [field R] [star_ring R] [fintype m] [fintype n] (x : matrix m m R) (y : matrix n n R) :
theorem matrix.kronecker_eq_sum_std_basis {R : Type u_1} {m : Type u_2} {n : Type u_3} [comm_semiring R] [fintype m] [fintype n] [decidable_eq m] [decidable_eq n] (x : matrix (m × n) (m × n) R) :
x = finset.univ.sum (λ (i : m), finset.univ.sum (λ (j : m), finset.univ.sum (λ (k : n), finset.univ.sum (λ (l : n), x (i, k) (j, l) matrix.kronecker_map has_mul.mul (matrix.std_basis_matrix i j 1) (matrix.std_basis_matrix k l 1)))))
theorem tensor_product.matrix_eq_sum_std_basis {R : Type u_1} {m : Type u_2} {n : Type u_3} [comm_semiring R] [fintype m] [fintype n] [decidable_eq m] [decidable_eq n] (x : tensor_product R (matrix m m R) (matrix n n R)) :
x = finset.univ.sum (λ (i : m), finset.univ.sum (λ (j : m), finset.univ.sum (λ (k : n), finset.univ.sum (λ (l : n), tensor_product.to_kronecker x (i, k) (j, l) matrix.std_basis_matrix i j 1 ⊗ₜ[R] matrix.std_basis_matrix k l 1))))
@[simp]
@[simp]
def kronecker_to_tensor {R : Type u_1} {m : Type u_2} {n : Type u_3} [comm_semiring R] [fintype m] [fintype n] [decidable_eq m] [decidable_eq n] :
matrix (m × n) (m × n) R ≃ₐ[R] tensor_product R (matrix m m R) (matrix n n R)
Equations