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

Proof steps:
state_before: R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
hv : LinearIndependent R v
⊢ LinearIndependent Rₛ (⇑f ∘ v)
state_after: R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
hv : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
⊢ ∀ (s : Finset ι) (g : ι → Rₛ), ∑ i ∈ s, g i • (⇑f ∘ v) i = 0 → ∀ i ∈ s, g i = 0
tactic: rw [linearIndependent_iff'] at hv ⊢
state_before: R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
hv : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
⊢ ∀ (s : Finset ι) (g : ι → Rₛ), ∑ i ∈ s, g i • (⇑f ∘ v) i = 0 → ∀ i ∈ s, g i = 0
state_after: R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
hv : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
t : Finset ι
g : ι → Rₛ
hg : ∑ i ∈ t, g i • (⇑f ∘ v) i = 0
i : ι
hi : i ∈ t
⊢ g i = 0
tactic: intro t g hg i hi
state_before: R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
hv : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
t : Finset ι
g : ι → Rₛ
hg : ∑ i ∈ t, g i • (⇑f ∘ v) i = 0
i : ι
hi : i ∈ t
⊢ g i = 0
state_after: R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
hv : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
t : Finset ι
g : ι → Rₛ
hg : ∑ i ∈ t, g i • (⇑f ∘ v) i = 0
i : ι
hi : i ∈ t
a : ↥S
g' : ι → R
hg' : ∀ i ∈ t, (algebraMap R Rₛ) (g' i) = ↑a • g i
⊢ g i = 0
tactic: choose! a g' hg' using IsLocalization.exist_integer_multiples S t g
state_before: R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
hv : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
t : Finset ι
g : ι → Rₛ
hg : ∑ i ∈ t, g i • (⇑f ∘ v) i = 0
i : ι
hi : i ∈ t
a : ↥S
g' : ι → R
hg' : ∀ i ∈ t, (algebraMap R Rₛ) (g' i) = ↑a • g i
h0 : f (∑ i ∈ t, g' i • v i) = 0
⊢ g i = 0
state_after: case intro
R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
hv : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
t : Finset ι
g : ι → Rₛ
hg : ∑ i ∈ t, g i • (⇑f ∘ v) i = 0
i : ι
hi : i ∈ t
a : ↥S
g' : ι → R
hg' : ∀ i ∈ t, (algebraMap R Rₛ) (g' i) = ↑a • g i
h0 : f (∑ i ∈ t, g' i • v i) = 0
s : ↥S
hs : s • ∑ i ∈ t, g' i • v i = 0
⊢ g i = 0
tactic: obtain ⟨s, hs⟩ := (IsLocalizedModule.eq_zero_iff S f).mp h0
state_before: case intro
R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
hv : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
t : Finset ι
g : ι → Rₛ
hg : ∑ i ∈ t, g i • (⇑f ∘ v) i = 0
i : ι
hi : i ∈ t
a : ↥S
g' : ι → R
hg' : ∀ i ∈ t, (algebraMap R Rₛ) (g' i) = ↑a • g i
h0 : f (∑ i ∈ t, g' i • v i) = 0
s : ↥S
hs : s • ∑ i ∈ t, g' i • v i = 0
⊢ g i = 0
state_after: case intro
R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
hv : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
t : Finset ι
g : ι → Rₛ
hg : ∑ i ∈ t, g i • (⇑f ∘ v) i = 0
i : ι
hi : i ∈ t
a : ↥S
g' : ι → R
hg' : ∀ i ∈ t, (algebraMap R Rₛ) (g' i) = ↑a • g i
h0 : f (∑ i ∈ t, g' i • v i) = 0
s : ↥S
hs : ∑ x ∈ t, (↑s * g' x) • v x = 0
⊢ g i = 0
tactic: simp_rw [Finset.smul_sum, Submonoid.smul_def, smul_smul] at hs
state_before: case intro
R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
hv : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
t : Finset ι
g : ι → Rₛ
hg : ∑ i ∈ t, g i • (⇑f ∘ v) i = 0
i : ι
hi : i ∈ t
a : ↥S
g' : ι → R
hg' : ∀ i ∈ t, (algebraMap R Rₛ) (g' i) = ↑a • g i
h0 : f (∑ i ∈ t, g' i • v i) = 0
s : ↥S
hs : ∑ x ∈ t, (↑s * g' x) • v x = 0
⊢ g i = 0
state_after: case intro
R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
t : Finset ι
g : ι → Rₛ
hg : ∑ i ∈ t, g i • (⇑f ∘ v) i = 0
i : ι
hi : i ∈ t
a : ↥S
g' : ι → R
hg' : ∀ i ∈ t, (algebraMap R Rₛ) (g' i) = ↑a • g i
h0 : f (∑ i ∈ t, g' i • v i) = 0
s : ↥S
hs : ∑ x ∈ t, (↑s * g' x) • v x = 0
hv : ↑s * g' i = 0
⊢ g i = 0
tactic: specialize hv t _ hs i hi
state_before: case intro
R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
t : Finset ι
g : ι → Rₛ
hg : ∑ i ∈ t, g i • (⇑f ∘ v) i = 0
i : ι
hi : i ∈ t
a : ↥S
g' : ι → R
hg' : ∀ i ∈ t, (algebraMap R Rₛ) (g' i) = ↑a • g i
h0 : f (∑ i ∈ t, g' i • v i) = 0
s : ↥S
hs : ∑ x ∈ t, (↑s * g' x) • v x = 0
hv : ↑s * g' i = 0
⊢ g i = 0
state_after: case intro
R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
t : Finset ι
g : ι → Rₛ
hg : ∑ i ∈ t, g i • (⇑f ∘ v) i = 0
i : ι
hi : i ∈ t
a : ↥S
g' : ι → R
hg' : ∀ i ∈ t, (algebraMap R Rₛ) (g' i) = ↑a • g i
h0 : f (∑ i ∈ t, g' i • v i) = 0
s : ↥S
hs : ∑ x ∈ t, (↑s * g' x) • v x = 0
hv : ↑s * g' i = 0
⊢ (algebraMap R Rₛ) (g' i) = 0
tactic: rw [← (IsLocalization.map_units Rₛ a).mul_right_eq_zero, ← Algebra.smul_def, ← hg' i hi]
state_before: case intro
R : Type u_1
Rₛ : Type u_2
inst✝¹¹ : CommSemiring R
S : Submonoid R
inst✝¹⁰ : CommSemiring Rₛ
inst✝⁹ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
M' : Type u_4
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : Module Rₛ M
inst✝⁵ : IsScalarTower R Rₛ M
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : Module Rₛ M'
inst✝¹ : IsScalarTower R Rₛ M'
f : M →ₗ[R] M'
inst✝ : IsLocalizedModule S f
ι : Type u_5
v : ι → M
t : Finset ι
g : ι → Rₛ
hg : ∑ i ∈ t, g i • (⇑f ∘ v) i = 0
i : ι
hi : i ∈ t
a : ↥S
g' : ι → R
hg' : ∀ i ∈ t, (algebraMap R Rₛ) (g' i) = ↑a • g i
h0 : f (∑ i ∈ t, g' i • v i) = 0
s : ↥S
hs : ∑ x ∈ t, (↑s * g' x) • v x = 0
hv : ↑s * g' i = 0
⊢ (algebraMap R Rₛ) (g' i) = 0
state_after: no goals
tactic: exact (IsLocalization.map_eq_zero_iff S _ _).2 ⟨s, hv⟩