Theorem: Basis.linearMap_apply_apply
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
M₁ : Type u_3
M₂ : Type u_4
ι : Type u_5
ι₁ : Type u_6
ι₂ : Type u_7
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₁
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R M₂
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι₁
inst✝³ : Fintype ι₂
inst✝² : DecidableEq ι
inst✝¹ : DecidableEq ι₁
inst✝ : DecidableEq ι₂
b : Basis ι R M
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
ij : ι₂ × ι₁
k : ι₁
⊢ ((b₁.linearMap b₂) ij) (b₁ k) = if ij.2 = k then b₂ ij.1 else 0
state_after: R : Type u_1
M : Type u_2
M₁ : Type u_3
M₂ : Type u_4
ι : Type u_5
ι₁ : Type u_6
ι₂ : Type u_7
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₁
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R M₂
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι₁
inst✝³ : Fintype ι₂
inst✝² : DecidableEq ι
inst✝¹ : DecidableEq ι₁
inst✝ : DecidableEq ι₂
b : Basis ι R M
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
ij : ι₂ × ι₁
k : ι₁
this : DecidableEq ι₂
⊢ ((b₁.linearMap b₂) ij) (b₁ k) = if ij.2 = k then b₂ ij.1 else 0
tactic: have := Classical.decEq ι₂
state_before: R : Type u_1
M : Type u_2
M₁ : Type u_3
M₂ : Type u_4
ι : Type u_5
ι₁ : Type u_6
ι₂ : Type u_7
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₁
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R M₂
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι₁
inst✝³ : Fintype ι₂
inst✝² : DecidableEq ι
inst✝¹ : DecidableEq ι₁
inst✝ : DecidableEq ι₂
b : Basis ι R M
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
ij : ι₂ × ι₁
k : ι₁
this : DecidableEq ι₂
⊢ ((b₁.linearMap b₂) ij) (b₁ k) = if ij.2 = k then b₂ ij.1 else 0
state_after: case mk
R : Type u_1
M : Type u_2
M₁ : Type u_3
M₂ : Type u_4
ι : Type u_5
ι₁ : Type u_6
ι₂ : Type u_7
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₁
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R M₂
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι₁
inst✝³ : Fintype ι₂
inst✝² : DecidableEq ι
inst✝¹ : DecidableEq ι₁
inst✝ : DecidableEq ι₂
b : Basis ι R M
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
k : ι₁
this : DecidableEq ι₂
i : ι₂
j : ι₁
⊢ ((b₁.linearMap b₂) (i, j)) (b₁ k) = if (i, j).2 = k then b₂ (i, j).1 else 0
tactic: rcases ij with ⟨i, j⟩
state_before: case mk
R : Type u_1
M : Type u_2
M₁ : Type u_3
M₂ : Type u_4
ι : Type u_5
ι₁ : Type u_6
ι₂ : Type u_7
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₁
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R M₂
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι₁
inst✝³ : Fintype ι₂
inst✝² : DecidableEq ι
inst✝¹ : DecidableEq ι₁
inst✝ : DecidableEq ι₂
b : Basis ι R M
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
k : ι₁
this : DecidableEq ι₂
i : ι₂
j : ι₁
⊢ ((b₁.linearMap b₂) (i, j)) (b₁ k) = if (i, j).2 = k then b₂ (i, j).1 else 0
state_after: case mk
R : Type u_1
M : Type u_2
M₁ : Type u_3
M₂ : Type u_4
ι : Type u_5
ι₁ : Type u_6
ι₂ : Type u_7
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₁
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R M₂
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι₁
inst✝³ : Fintype ι₂
inst✝² : DecidableEq ι
inst✝¹ : DecidableEq ι₁
inst✝ : DecidableEq ι₂
b : Basis ι R M
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
k : ι₁
this : DecidableEq ι₂
i : ι₂
j : ι₁
⊢ ∑ j_1 : ι₂, stdBasisMatrix i j 1 j_1 k • b₂ j_1 = if (i, j).2 = k then b₂ (i, j).1 else 0
tactic: rw [linearMap_apply, Matrix.stdBasis_eq_stdBasisMatrix, Matrix.toLin_self]
state_before: case mk
R : Type u_1
M : Type u_2
M₁ : Type u_3
M₂ : Type u_4
ι : Type u_5
ι₁ : Type u_6
ι₂ : Type u_7
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₁
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R M₂
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι₁
inst✝³ : Fintype ι₂
inst✝² : DecidableEq ι
inst✝¹ : DecidableEq ι₁
inst✝ : DecidableEq ι₂
b : Basis ι R M
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
k : ι₁
this : DecidableEq ι₂
i : ι₂
j : ι₁
⊢ ∑ j_1 : ι₂, stdBasisMatrix i j 1 j_1 k • b₂ j_1 = if (i, j).2 = k then b₂ (i, j).1 else 0
state_after: case mk
R : Type u_1
M : Type u_2
M₁ : Type u_3
M₂ : Type u_4
ι : Type u_5
ι₁ : Type u_6
ι₂ : Type u_7
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₁
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R M₂
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι₁
inst✝³ : Fintype ι₂
inst✝² : DecidableEq ι
inst✝¹ : DecidableEq ι₁
inst✝ : DecidableEq ι₂
b : Basis ι R M
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
k : ι₁
this : DecidableEq ι₂
i : ι₂
j : ι₁
⊢ ∑ j_1 : ι₂, (if i = j_1 ∧ j = k then 1 else 0) • b₂ j_1 = if j = k then b₂ i else 0
tactic: dsimp only [Matrix.stdBasisMatrix]
state_before: case mk
R : Type u_1
M : Type u_2
M₁ : Type u_3
M₂ : Type u_4
ι : Type u_5
ι₁ : Type u_6
ι₂ : Type u_7
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₁
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R M₂
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι₁
inst✝³ : Fintype ι₂
inst✝² : DecidableEq ι
inst✝¹ : DecidableEq ι₁
inst✝ : DecidableEq ι₂
b : Basis ι R M
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
k : ι₁
this : DecidableEq ι₂
i : ι₂
j : ι₁
⊢ ∑ j_1 : ι₂, (if i = j_1 ∧ j = k then 1 else 0) • b₂ j_1 = if j = k then b₂ i else 0
state_after: no goals
tactic: simp_rw [ite_smul, one_smul, zero_smul, ite_and, Finset.sum_ite_eq, Finset.mem_univ, if_true]