Theorem: LinearIndependent.localization
File: Mathlib/RingTheory/Localization/Module.lean

tactic: rw [linearIndependent_iff'] at hli⊢
state_before: R : Type u_2
Rₛ : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing Rₛ
inst✝⁴ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
M : Type u_3
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module Rₛ M
inst✝ : IsScalarTower R Rₛ M
ι : Type u_1
b : ι → M
hli : LinearIndependent R b
⊢ LinearIndependent Rₛ b

tactic: intro s g hg i hi
state_before: R : Type u_2
Rₛ : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing Rₛ
inst✝⁴ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
M : Type u_3
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module Rₛ M
inst✝ : IsScalarTower R Rₛ M
ι : Type u_1
b : ι → M
hli : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • b i = 0 → ∀ (i : ι), i ∈ s → g i = 0
⊢ ∀ (s : Finset ι) (g : ι → Rₛ), ∑ i in s, g i • b i = 0 → ∀ (i : ι), i ∈ s → g i = 0

tactic: choose! a g' hg' using IsLocalization.exist_integer_multiples S s g
state_before: R : Type u_2
Rₛ : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing Rₛ
inst✝⁴ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
M : Type u_3
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module Rₛ M
inst✝ : IsScalarTower R Rₛ M
ι : Type u_1
b : ι → M
hli : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • b i = 0 → ∀ (i : ι), i ∈ s → g i = 0
s : Finset ι
g : ι → Rₛ
hg : ∑ i in s, g i • b i = 0
i : ι
hi : i ∈ s
⊢ g i = 0

tactic: specialize hli s g' _ i hi
state_before: R : Type u_2
Rₛ : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing Rₛ
inst✝⁴ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
M : Type u_3
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module Rₛ M
inst✝ : IsScalarTower R Rₛ M
ι : Type u_1
b : ι → M
hli : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • b i = 0 → ∀ (i : ι), i ∈ s → g i = 0
s : Finset ι
g : ι → Rₛ
hg : ∑ i in s, g i • b i = 0
i : ι
hi : i ∈ s
a : { x // x ∈ S }
g' : ι → R
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R Rₛ) (g' i) = ↑a • g i
⊢ g i = 0

tactic: refine' (IsLocalization.map_units Rₛ a).mul_right_eq_zero.mp _
state_before: R : Type u_2
Rₛ : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing Rₛ
inst✝⁴ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
M : Type u_3
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module Rₛ M
inst✝ : IsScalarTower R Rₛ M
ι : Type u_1
b : ι → M
s : Finset ι
g : ι → Rₛ
hg : ∑ i in s, g i • b i = 0
i : ι
hi : i ∈ s
a : { x // x ∈ S }
g' : ι → R
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R Rₛ) (g' i) = ↑a • g i
hli : g' i = 0
⊢ g i = 0

tactic: rw [← Algebra.smul_def, ← map_zero (algebraMap R Rₛ), ← hli, hg' i hi]
state_before: R : Type u_2
Rₛ : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing Rₛ
inst✝⁴ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
M : Type u_3
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module Rₛ M
inst✝ : IsScalarTower R Rₛ M
ι : Type u_1
b : ι → M
s : Finset ι
g : ι → Rₛ
hg : ∑ i in s, g i • b i = 0
i : ι
hi : i ∈ s
a : { x // x ∈ S }
g' : ι → R
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R Rₛ) (g' i) = ↑a • g i
hli : g' i = 0
⊢ ↑(algebraMap R Rₛ) ↑a * g i = 0

tactic: rw [← @smul_zero _ M _ _ (a : R), ← hg, Finset.smul_sum]
state_before: R : Type u_2
Rₛ : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing Rₛ
inst✝⁴ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
M : Type u_3
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module Rₛ M
inst✝ : IsScalarTower R Rₛ M
ι : Type u_1
b : ι → M
hli : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • b i = 0 → ∀ (i : ι), i ∈ s → g i = 0
s : Finset ι
g : ι → Rₛ
hg : ∑ i in s, g i • b i = 0
i : ι
hi : i ∈ s
a : { x // x ∈ S }
g' : ι → R
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R Rₛ) (g' i) = ↑a • g i
⊢ ∑ i in s, g' i • b i = 0

tactic: refine' Finset.sum_congr rfl fun i hi => _
state_before: R : Type u_2
Rₛ : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing Rₛ
inst✝⁴ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
M : Type u_3
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module Rₛ M
inst✝ : IsScalarTower R Rₛ M
ι : Type u_1
b : ι → M
hli : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • b i = 0 → ∀ (i : ι), i ∈ s → g i = 0
s : Finset ι
g : ι → Rₛ
hg : ∑ i in s, g i • b i = 0
i : ι
hi : i ∈ s
a : { x // x ∈ S }
g' : ι → R
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R Rₛ) (g' i) = ↑a • g i
⊢ ∑ i in s, g' i • b i = ∑ x in s, ↑a • g x • b x

tactic: rw [← IsScalarTower.algebraMap_smul Rₛ, hg' i hi, smul_assoc]
state_before: R : Type u_2
Rₛ : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing Rₛ
inst✝⁴ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
M : Type u_3
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module Rₛ M
inst✝ : IsScalarTower R Rₛ M
ι : Type u_1
b : ι → M
hli : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • b i = 0 → ∀ (i : ι), i ∈ s → g i = 0
s : Finset ι
g : ι → Rₛ
hg : ∑ i in s, g i • b i = 0
i✝ : ι
hi✝ : i✝ ∈ s
a : { x // x ∈ S }
g' : ι → R
hg' : ∀ (i : ι), i ∈ s → ↑(algebraMap R Rₛ) (g' i) = ↑a • g i
i : ι
hi : i ∈ s
⊢ g' i • b i = ↑a • g i • b i