Theorem: TensorProduct.toMatrix_assoc
File: Mathlib/LinearAlgebra/TensorProduct/Matrix.lean

tactic: ext (⟨i, j, k⟩⟨⟨i', j'⟩, k'⟩)
state_before: R : Type u_1
M : Type u_5
N : Type u_6
P : Type u_7
M' : Type ?u.187308
N' : Type ?u.187311
ι : Type u_2
κ : Type u_3
τ : Type u_4
ι' : Type ?u.187323
κ' : Type ?u.187326
inst✝¹⁸ : DecidableEq ι
inst✝¹⁷ : DecidableEq κ
inst✝¹⁶ : DecidableEq τ
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype κ
inst✝¹³ : Fintype τ
inst✝¹² : Fintype ι'
inst✝¹¹ : Fintype κ'
inst✝¹⁰ : CommRing R
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : AddCommGroup P
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup N'
inst✝⁴ : Module R M
inst✝³ : Module R N
inst✝² : Module R P
inst✝¹ : Module R M'
inst✝ : Module R N'
bM : Basis ι R M
bN : Basis κ R N
bP : Basis τ R P
bM' : Basis ι' R M'
bN' : Basis κ' R N'
⊢ ↑(toMatrix (Basis.tensorProduct (Basis.tensorProduct bM bN) bP) (Basis.tensorProduct bM (Basis.tensorProduct bN bP)))
      ↑(TensorProduct.assoc R M N P) =
    submatrix 1 _root_.id ↑(Equiv.prodAssoc ι κ τ)

tactic: simp_rw [toMatrix_apply, Basis.tensorProduct_apply, LinearEquiv.coe_coe,
  TensorProduct.assoc_tmul, Basis.tensorProduct_repr_tmul_apply, Matrix.submatrix_apply,
  Equiv.prodAssoc_apply, id.def, Basis.repr_self_apply, Matrix.one_apply, Prod.ext_iff, ite_and,
  @eq_comm _ i', @eq_comm _ j', @eq_comm _ k']
state_before: case a.mk.mk.h.mk.mk
R : Type u_1
M : Type u_5
N : Type u_6
P : Type u_7
M' : Type ?u.187308
N' : Type ?u.187311
ι : Type u_2
κ : Type u_3
τ : Type u_4
ι' : Type ?u.187323
κ' : Type ?u.187326
inst✝¹⁸ : DecidableEq ι
inst✝¹⁷ : DecidableEq κ
inst✝¹⁶ : DecidableEq τ
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype κ
inst✝¹³ : Fintype τ
inst✝¹² : Fintype ι'
inst✝¹¹ : Fintype κ'
inst✝¹⁰ : CommRing R
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : AddCommGroup P
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup N'
inst✝⁴ : Module R M
inst✝³ : Module R N
inst✝² : Module R P
inst✝¹ : Module R M'
inst✝ : Module R N'
bM : Basis ι R M
bN : Basis κ R N
bP : Basis τ R P
bM' : Basis ι' R M'
bN' : Basis κ' R N'
i : ι
j : κ
k k' : τ
i' : ι
j' : κ
⊢ ↑(toMatrix (Basis.tensorProduct (Basis.tensorProduct bM bN) bP) (Basis.tensorProduct bM (Basis.tensorProduct bN bP)))
      ↑(TensorProduct.assoc R M N P) (i, j, k) ((i', j'), k') =
    submatrix 1 _root_.id ↑(Equiv.prodAssoc ι κ τ) (i, j, k) ((i', j'), k')

tactic: split_ifs <;> simp
state_before: case a.mk.mk.h.mk.mk
R : Type u_1
M : Type u_5
N : Type u_6
P : Type u_7
M' : Type ?u.187308
N' : Type ?u.187311
ι : Type u_2
κ : Type u_3
τ : Type u_4
ι' : Type ?u.187323
κ' : Type ?u.187326
inst✝¹⁸ : DecidableEq ι
inst✝¹⁷ : DecidableEq κ
inst✝¹⁶ : DecidableEq τ
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype κ
inst✝¹³ : Fintype τ
inst✝¹² : Fintype ι'
inst✝¹¹ : Fintype κ'
inst✝¹⁰ : CommRing R
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : AddCommGroup P
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup N'
inst✝⁴ : Module R M
inst✝³ : Module R N
inst✝² : Module R P
inst✝¹ : Module R M'
inst✝ : Module R N'
bM : Basis ι R M
bN : Basis κ R N
bP : Basis τ R P
bM' : Basis ι' R M'
bN' : Basis κ' R N'
i : ι
j : κ
k k' : τ
i' : ι
j' : κ
⊢ (if i = i' then 1 else 0) * ((if j = j' then 1 else 0) * if k = k' then 1 else 0) =
    if i = i' then if j = j' then if k = k' then 1 else 0 else 0 else 0