Theorem: Basis.det_smul_mk_coord_eq_det_update
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: apply (Basis.mk hli hsp).ext
state_before: R : Type u_2
inst✝⁸ : CommRing R
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type ?u.2746027
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_1
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M
A : Type ?u.2747047
inst✝¹ : CommRing A
inst✝ : Module A M
v : ι → M
hli : LinearIndependent R v
hsp : ⊤ ≤ span R (Set.range v)
i : ι
⊢ ↑(det e) v • coord (Basis.mk hli hsp) i = MultilinearMap.toLinearMap (↑(det e)) v i

tactic: intro k
state_before: R : Type u_2
inst✝⁸ : CommRing R
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type ?u.2746027
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_1
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M
A : Type ?u.2747047
inst✝¹ : CommRing A
inst✝ : Module A M
v : ι → M
hli : LinearIndependent R v
hsp : ⊤ ≤ span R (Set.range v)
i : ι
⊢ ∀ (i_1 : ι),
    ↑(↑(det e) v • coord (Basis.mk hli hsp) i) (↑(Basis.mk hli hsp) i_1) =
      ↑(MultilinearMap.toLinearMap (↑(det e)) v i) (↑(Basis.mk hli hsp) i_1)

tactic: rcases eq_or_ne k i with (rfl | hik) <;>
  simp only [Algebra.id.smul_eq_mul, Basis.coe_mk, LinearMap.smul_apply, LinearMap.coe_mk,
    MultilinearMap.toLinearMap_apply]
state_before: R : Type u_2
inst✝⁸ : CommRing R
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type ?u.2746027
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_1
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M
A : Type ?u.2747047
inst✝¹ : CommRing A
inst✝ : Module A M
v : ι → M
hli : LinearIndependent R v
hsp : ⊤ ≤ span R (Set.range v)
i k : ι
⊢ ↑(↑(det e) v • coord (Basis.mk hli hsp) i) (↑(Basis.mk hli hsp) k) =
    ↑(MultilinearMap.toLinearMap (↑(det e)) v i) (↑(Basis.mk hli hsp) k)

tactic: rw [Basis.mk_coord_apply_eq, mul_one, update_eq_self]
state_before: case inl
R : Type u_2
inst✝⁸ : CommRing R
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type ?u.2746027
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_1
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M
A : Type ?u.2747047
inst✝¹ : CommRing A
inst✝ : Module A M
v : ι → M
hli : LinearIndependent R v
hsp : ⊤ ≤ span R (Set.range v)
k : ι
⊢ ↑(det e) v * ↑(coord (Basis.mk hli hsp) k) (v k) = ↑↑(det e) (update v k (v k))

tactic: congr
state_before: case inl
R : Type u_2
inst✝⁸ : CommRing R
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type ?u.2746027
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_1
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M
A : Type ?u.2747047
inst✝¹ : CommRing A
inst✝ : Module A M
v : ι → M
hli : LinearIndependent R v
hsp : ⊤ ≤ span R (Set.range v)
k : ι
⊢ ↑(det e) v = ↑↑(det e) v

tactic: rw [Basis.mk_coord_apply_ne hik, MulZeroClass.mul_zero, eq_comm]
state_before: case inr
R : Type u_2
inst✝⁸ : CommRing R
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type ?u.2746027
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_1
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M
A : Type ?u.2747047
inst✝¹ : CommRing A
inst✝ : Module A M
v : ι → M
hli : LinearIndependent R v
hsp : ⊤ ≤ span R (Set.range v)
i k : ι
hik : k ≠ i
⊢ ↑(det e) v * ↑(coord (Basis.mk hli hsp) i) (v k) = ↑↑(det e) (update v i (v k))

tactic: exact e.det.map_eq_zero_of_eq _ (by simp [hik, Function.update_apply]) hik
state_before: case inr
R : Type u_2
inst✝⁸ : CommRing R
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type ?u.2746027
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_1
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M
A : Type ?u.2747047
inst✝¹ : CommRing A
inst✝ : Module A M
v : ι → M
hli : LinearIndependent R v
hsp : ⊤ ≤ span R (Set.range v)
i k : ι
hik : k ≠ i
⊢ ↑↑(det e) (update v i (v k)) = 0

tactic: simp [hik, Function.update_apply]
state_before: R : Type u_2
inst✝⁸ : CommRing R
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type ?u.2746027
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_1
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M
A : Type ?u.2747047
inst✝¹ : CommRing A
inst✝ : Module A M
v : ι → M
hli : LinearIndependent R v
hsp : ⊤ ≤ span R (Set.range v)
i k : ι
hik : k ≠ i
⊢ update v i (v k) k = update v i (v k) i