Theorem: IsLocalizedModule.linearIndependent_lift
File: Mathlib/LinearAlgebra/Dimension/Localization.lean

Proof steps:
state_before: R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : LinearIndependent S v
⊢ ∃ w, LinearIndependent R w
state_after: R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : LinearIndependent S v
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
⊢ ∃ w, LinearIndependent R w
tactic: choose sec hsec using IsLocalizedModule.surj p f
state_before: R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : LinearIndependent S v
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
⊢ ∃ w, LinearIndependent R w
state_after: case h
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : LinearIndependent S v
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
⊢ LinearIndependent R fun i => (sec (v i)).1
tactic: use fun i ↦ (sec (v i)).1
state_before: case h
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : LinearIndependent S v
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
⊢ LinearIndependent R fun i => (sec (v i)).1
state_after: case h
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : ∀ (s : Finset ι) (g : ι → S), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
⊢ ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • (sec (v i)).1 = 0 → ∀ i ∈ s, g i = 0
tactic: rw [linearIndependent_iff'] at hf ⊢
state_before: case h
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : ∀ (s : Finset ι) (g : ι → S), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
⊢ ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • (sec (v i)).1 = 0 → ∀ i ∈ s, g i = 0
state_after: case h
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : ∀ (s : Finset ι) (g : ι → S), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
t : Finset ι
g : ι → R
hg : ∑ i ∈ t, g i • (sec (v i)).1 = 0
i : ι
hit : i ∈ t
⊢ g i = 0
tactic: intro t g hg i hit
state_before: case h
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : ∀ (s : Finset ι) (g : ι → S), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
t : Finset ι
g : ι → R
hg : ∑ i ∈ t, g i • (sec (v i)).1 = 0
i : ι
hit : i ∈ t
⊢ g i = 0
state_after: case h.a
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : ∀ (s : Finset ι) (g : ι → S), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
t : Finset ι
g : ι → R
hg : ∑ i ∈ t, g i • (sec (v i)).1 = 0
i : ι
hit : i ∈ t
⊢ g i * ↑(sec (v i)).2 = 0
tactic: apply hp (sec (v i)).2.prop
state_before: case h.a
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : ∀ (s : Finset ι) (g : ι → S), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
t : Finset ι
g : ι → R
hg : ∑ i ∈ t, g i • (sec (v i)).1 = 0
i : ι
hit : i ∈ t
⊢ g i * ↑(sec (v i)).2 = 0
state_after: case h.a.a
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : ∀ (s : Finset ι) (g : ι → S), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
t : Finset ι
g : ι → R
hg : ∑ i ∈ t, g i • (sec (v i)).1 = 0
i : ι
hit : i ∈ t
⊢ (algebraMap R S) (g i * ↑(sec (v i)).2) = (algebraMap R S) 0
tactic: apply IsLocalization.injective S hp
state_before: case h.a.a
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : ∀ (s : Finset ι) (g : ι → S), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
t : Finset ι
g : ι → R
hg : ∑ i ∈ t, g i • (sec (v i)).1 = 0
i : ι
hit : i ∈ t
⊢ (algebraMap R S) (g i * ↑(sec (v i)).2) = (algebraMap R S) 0
state_after: case h.a.a
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : ∀ (s : Finset ι) (g : ι → S), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
t : Finset ι
g : ι → R
hg : ∑ i ∈ t, g i • (sec (v i)).1 = 0
i : ι
hit : i ∈ t
⊢ (algebraMap R S) (g i * ↑(sec (v i)).2) = 0
tactic: rw [map_zero]
state_before: case h.a.a
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : ∀ (s : Finset ι) (g : ι → S), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
t : Finset ι
g : ι → R
hg : ∑ i ∈ t, g i • (sec (v i)).1 = 0
i : ι
hit : i ∈ t
⊢ (algebraMap R S) (g i * ↑(sec (v i)).2) = 0
state_after: case h.a.a
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : ∀ (s : Finset ι) (g : ι → S), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
t : Finset ι
g : ι → R
hg : ∑ i ∈ t, g i • (sec (v i)).1 = 0
i : ι
hit : i ∈ t
⊢ ∑ i ∈ t, (fun i => (algebraMap R S) (g i * ↑(sec (v i)).2)) i • v i = 0
tactic: refine hf t (fun i ↦ algebraMap R S (g i * (sec (v i)).2)) ?_ _ hit
state_before: case h.a.a
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Algebra R S
inst✝³ : Module S N
inst✝² : IsScalarTower R S N
p : Submonoid R
inst✝¹ : IsLocalization p S
f : M →ₗ[R] N
inst✝ : IsLocalizedModule p f
hp : p ≤ R⁰
ι : Type u_1
v : ι → N
hf : ∀ (s : Finset ι) (g : ι → S), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0
sec : N → M × ↥p
hsec : ∀ (y : N), (sec y).2 • y = f (sec y).1
t : Finset ι
g : ι → R
hg : ∑ i ∈ t, g i • (sec (v i)).1 = 0
i : ι
hit : i ∈ t
⊢ ∑ i ∈ t, (fun i => (algebraMap R S) (g i * ↑(sec (v i)).2)) i • v i = 0
state_after: no goals
tactic: simp only [map_mul, mul_smul, algebraMap_smul, ← Submonoid.smul_def,
    hsec, ← map_smul, ← map_sum, hg, map_zero]