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

Proof steps:
state_before: R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
e : Basis ι R M
w : ι → Rˣ
⊢ (e.unitsSMul w).det = ↑(∏ i : ι, w i)⁻¹ • e.det
state_after: case H
R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
e : Basis ι R M
w : ι → Rˣ
f : ι → M
⊢ (e.unitsSMul w).det f = (↑(∏ i : ι, w i)⁻¹ • e.det) f
tactic: ext f
state_before: case H
R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
e : Basis ι R M
w : ι → Rˣ
f : ι → M
⊢ (e.unitsSMul w).det f = (↑(∏ i : ι, w i)⁻¹ • e.det) f
state_after: case H
R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
e : Basis ι R M
w : ι → Rˣ
f : ι → M
⊢ (Matrix.det fun i j => ((e.unitsSMul w).repr (f j)) i) = ↑(∏ i : ι, w i)⁻¹ • Matrix.det fun i j => (e.repr (f j)) i
tactic: change
    (Matrix.det fun i j => (e.unitsSMul w).repr (f j) i) =
      (↑(∏ i, w i)⁻¹ : R) • Matrix.det fun i j => e.repr (f j) i
state_before: case H
R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
e : Basis ι R M
w : ι → Rˣ
f : ι → M
⊢ (Matrix.det fun i j => ((e.unitsSMul w).repr (f j)) i) = ↑(∏ i : ι, w i)⁻¹ • Matrix.det fun i j => (e.repr (f j)) i
state_after: case H
R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
e : Basis ι R M
w : ι → Rˣ
f : ι → M
⊢ (Matrix.det fun i j => (w i)⁻¹ • (e.repr (f j)) i) = ↑(∏ i : ι, w i)⁻¹ • Matrix.det fun i j => (e.repr (f j)) i
tactic: simp only [e.repr_unitsSMul]
state_before: case H
R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
e : Basis ι R M
w : ι → Rˣ
f : ι → M
⊢ (Matrix.det fun i j => (w i)⁻¹ • (e.repr (f j)) i) = ↑(∏ i : ι, w i)⁻¹ • Matrix.det fun i j => (e.repr (f j)) i
state_after: case h.e'_3.h.e'_1
R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
e : Basis ι R M
w : ι → Rˣ
f : ι → M
⊢ ↑(∏ i : ι, w i)⁻¹ = ∏ i : ι, ↑(w i)⁻¹
tactic: convert Matrix.det_mul_column (fun i => (↑(w i)⁻¹ : R)) fun i j => e.repr (f j) i
state_before: case h.e'_3.h.e'_1
R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
e : Basis ι R M
w : ι → Rˣ
f : ι → M
⊢ ↑(∏ i : ι, w i)⁻¹ = ∏ i : ι, ↑(w i)⁻¹
state_after: case h.e'_3.h.e'_1
R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
e : Basis ι R M
w : ι → Rˣ
f : ι → M
⊢ ↑(∏ x : ι, (w x)⁻¹) = ∏ i : ι, ↑(w i)⁻¹
tactic: simp only [← Finset.prod_inv_distrib]
state_before: case h.e'_3.h.e'_1
R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
e : Basis ι R M
w : ι → Rˣ
f : ι → M
⊢ ↑(∏ x : ι, (w x)⁻¹) = ∏ i : ι, ↑(w i)⁻¹
state_after: no goals
tactic: norm_cast