Theorem: Basis.baseChange_linearMap
File: Mathlib/RingTheory/TensorProduct/Basic.lean

Proof steps:
state_before: R : Type uR
S : Type uS
A✝ : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
M : Type uM
ι : Type uι
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : Semiring A✝
inst✝⁹ : Algebra R A✝
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
b✝ : Basis ι R M
inst✝⁶ : Fintype ι
ι' : Type u_1
N : Type u_2
inst✝⁵ : Fintype ι'
inst✝⁴ : DecidableEq ι'
inst✝³ : AddCommMonoid N
inst✝² : Module R N
A : Type u_3
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
b : Basis ι R M
b' : Basis ι' R N
ij : ι × ι'
⊢ baseChange A ((b'.linearMap b) ij) = ((basis A b').linearMap (basis A b)) ij
state_after: R : Type uR
S : Type uS
A✝ : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
M : Type uM
ι : Type uι
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : Semiring A✝
inst✝⁹ : Algebra R A✝
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
b✝ : Basis ι R M
inst✝⁶ : Fintype ι
ι' : Type u_1
N : Type u_2
inst✝⁵ : Fintype ι'
inst✝⁴ : DecidableEq ι'
inst✝³ : AddCommMonoid N
inst✝² : Module R N
A : Type u_3
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
b : Basis ι R M
b' : Basis ι' R N
ij : ι × ι'
⊢ ∀ (i : ι'),
    (baseChange A ((b'.linearMap b) ij)) ((basis A b') i) = (((basis A b').linearMap (basis A b)) ij) ((basis A b') i)
tactic: apply (basis A b').ext
state_before: R : Type uR
S : Type uS
A✝ : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
M : Type uM
ι : Type uι
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : Semiring A✝
inst✝⁹ : Algebra R A✝
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
b✝ : Basis ι R M
inst✝⁶ : Fintype ι
ι' : Type u_1
N : Type u_2
inst✝⁵ : Fintype ι'
inst✝⁴ : DecidableEq ι'
inst✝³ : AddCommMonoid N
inst✝² : Module R N
A : Type u_3
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
b : Basis ι R M
b' : Basis ι' R N
ij : ι × ι'
⊢ ∀ (i : ι'),
    (baseChange A ((b'.linearMap b) ij)) ((basis A b') i) = (((basis A b').linearMap (basis A b)) ij) ((basis A b') i)
state_after: R : Type uR
S : Type uS
A✝ : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
M : Type uM
ι : Type uι
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : Semiring A✝
inst✝⁹ : Algebra R A✝
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
b✝ : Basis ι R M
inst✝⁶ : Fintype ι
ι' : Type u_1
N : Type u_2
inst✝⁵ : Fintype ι'
inst✝⁴ : DecidableEq ι'
inst✝³ : AddCommMonoid N
inst✝² : Module R N
A : Type u_3
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
b : Basis ι R M
b' : Basis ι' R N
ij : ι × ι'
k : ι'
⊢ (baseChange A ((b'.linearMap b) ij)) ((basis A b') k) = (((basis A b').linearMap (basis A b)) ij) ((basis A b') k)
tactic: intro k
state_before: R : Type uR
S : Type uS
A✝ : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
M : Type uM
ι : Type uι
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : Semiring A✝
inst✝⁹ : Algebra R A✝
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
b✝ : Basis ι R M
inst✝⁶ : Fintype ι
ι' : Type u_1
N : Type u_2
inst✝⁵ : Fintype ι'
inst✝⁴ : DecidableEq ι'
inst✝³ : AddCommMonoid N
inst✝² : Module R N
A : Type u_3
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
b : Basis ι R M
b' : Basis ι' R N
ij : ι × ι'
k : ι'
⊢ (baseChange A ((b'.linearMap b) ij)) ((basis A b') k) = (((basis A b').linearMap (basis A b)) ij) ((basis A b') k)
state_after: R : Type uR
S : Type uS
A✝ : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
M : Type uM
ι : Type uι
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : Semiring A✝
inst✝⁹ : Algebra R A✝
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
b✝ : Basis ι R M
inst✝⁶ : Fintype ι
ι' : Type u_1
N : Type u_2
inst✝⁵ : Fintype ι'
inst✝⁴ : DecidableEq ι'
inst✝³ : AddCommMonoid N
inst✝² : Module R N
A : Type u_3
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
b : Basis ι R M
b' : Basis ι' R N
ij : ι × ι'
k : ι'
⊢ 1 ⊗ₜ[R] ((b'.linearMap b) ij) (b' k) = (((basis A b').linearMap (basis A b)) ij) ((basis A b') k)
tactic: conv_lhs => simp only [basis_apply, baseChange_tmul]
state_before: R : Type uR
S : Type uS
A✝ : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
M : Type uM
ι : Type uι
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : Semiring A✝
inst✝⁹ : Algebra R A✝
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
b✝ : Basis ι R M
inst✝⁶ : Fintype ι
ι' : Type u_1
N : Type u_2
inst✝⁵ : Fintype ι'
inst✝⁴ : DecidableEq ι'
inst✝³ : AddCommMonoid N
inst✝² : Module R N
A : Type u_3
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
b : Basis ι R M
b' : Basis ι' R N
ij : ι × ι'
k : ι'
⊢ 1 ⊗ₜ[R] ((b'.linearMap b) ij) (b' k) = (((basis A b').linearMap (basis A b)) ij) ((basis A b') k)
state_after: R : Type uR
S : Type uS
A✝ : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
M : Type uM
ι : Type uι
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : Semiring A✝
inst✝⁹ : Algebra R A✝
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
b✝ : Basis ι R M
inst✝⁶ : Fintype ι
ι' : Type u_1
N : Type u_2
inst✝⁵ : Fintype ι'
inst✝⁴ : DecidableEq ι'
inst✝³ : AddCommMonoid N
inst✝² : Module R N
A : Type u_3
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
b : Basis ι R M
b' : Basis ι' R N
ij : ι × ι'
k : ι'
⊢ (1 ⊗ₜ[R] if ij.2 = k then b ij.1 else 0) = if ij.2 = k then 1 ⊗ₜ[R] b ij.1 else 0
tactic: simp_rw [Basis.linearMap_apply_apply, basis_apply]
state_before: R : Type uR
S : Type uS
A✝ : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
M : Type uM
ι : Type uι
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : Semiring A✝
inst✝⁹ : Algebra R A✝
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
b✝ : Basis ι R M
inst✝⁶ : Fintype ι
ι' : Type u_1
N : Type u_2
inst✝⁵ : Fintype ι'
inst✝⁴ : DecidableEq ι'
inst✝³ : AddCommMonoid N
inst✝² : Module R N
A : Type u_3
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
b : Basis ι R M
b' : Basis ι' R N
ij : ι × ι'
k : ι'
⊢ (1 ⊗ₜ[R] if ij.2 = k then b ij.1 else 0) = if ij.2 = k then 1 ⊗ₜ[R] b ij.1 else 0
state_after: no goals
tactic: split <;> simp only [TensorProduct.tmul_zero]