Theorem: LinearIndependent.injective
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: intro i j hij
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
⊢ Injective v
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
i j : ι
hij : v i = v j
⊢ i = j

tactic: let l : ι →₀ R := Finsupp.single i (1 : R) - Finsupp.single j 1
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
i j : ι
hij : v i = v j
⊢ i = j
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
i j : ι
hij : v i = v j
l : ι →₀ R := Finsupp.single i 1 - Finsupp.single j 1
⊢ i = j

tactic: have h_total : Finsupp.total ι M R v l = 0 := by
  simp_rw [l, LinearMap.map_sub, Finsupp.total_apply]
  simp [hij]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
i j : ι
hij : v i = v j
l : ι →₀ R := Finsupp.single i 1 - Finsupp.single j 1
⊢ i = j
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
i j : ι
hij : v i = v j
l : ι →₀ R := Finsupp.single i 1 - Finsupp.single j 1
h_total : (Finsupp.total ι M R v) l = 0
⊢ i = j

tactic: have h_single_eq : Finsupp.single i (1 : R) = Finsupp.single j 1 := by
  rw [linearIndependent_iff] at hv
  simp [eq_add_of_sub_eq' (hv l h_total)]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
i j : ι
hij : v i = v j
l : ι →₀ R := Finsupp.single i 1 - Finsupp.single j 1
h_total : (Finsupp.total ι M R v) l = 0
⊢ i = j
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
i j : ι
hij : v i = v j
l : ι →₀ R := Finsupp.single i 1 - Finsupp.single j 1
h_total : (Finsupp.total ι M R v) l = 0
h_single_eq : Finsupp.single i 1 = Finsupp.single j 1
⊢ i = j

tactic: simpa [Finsupp.single_eq_single_iff] using h_single_eq
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
i j : ι
hij : v i = v j
l : ι →₀ R := Finsupp.single i 1 - Finsupp.single j 1
h_total : (Finsupp.total ι M R v) l = 0
h_single_eq : Finsupp.single i 1 = Finsupp.single j 1
⊢ i = j
state_after: no goals

tactic: simp_rw [l, LinearMap.map_sub, Finsupp.total_apply]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
i j : ι
hij : v i = v j
l : ι →₀ R := Finsupp.single i 1 - Finsupp.single j 1
⊢ (Finsupp.total ι M R v) l = 0
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
i j : ι
hij : v i = v j
l : ι →₀ R := Finsupp.single i 1 - Finsupp.single j 1
⊢ (((Finsupp.single i 1).sum fun i a => a • v i) - (Finsupp.single j 1).sum fun i a => a • v i) = 0

tactic: simp [hij]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
i j : ι
hij : v i = v j
l : ι →₀ R := Finsupp.single i 1 - Finsupp.single j 1
⊢ (((Finsupp.single i 1).sum fun i a => a • v i) - (Finsupp.single j 1).sum fun i a => a • v i) = 0
state_after: no goals

tactic: rw [linearIndependent_iff] at hv
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : LinearIndependent R v
i j : ι
hij : v i = v j
l : ι →₀ R := Finsupp.single i 1 - Finsupp.single j 1
h_total : (Finsupp.total ι M R v) l = 0
⊢ Finsupp.single i 1 = Finsupp.single j 1
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : ∀ (l : ι →₀ R), (Finsupp.total ι M R v) l = 0 → l = 0
i j : ι
hij : v i = v j
l : ι →₀ R := Finsupp.single i 1 - Finsupp.single j 1
h_total : (Finsupp.total ι M R v) l = 0
⊢ Finsupp.single i 1 = Finsupp.single j 1

tactic: simp [eq_add_of_sub_eq' (hv l h_total)]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
hv : ∀ (l : ι →₀ R), (Finsupp.total ι M R v) l = 0 → l = 0
i j : ι
hij : v i = v j
l : ι →₀ R := Finsupp.single i 1 - Finsupp.single j 1
h_total : (Finsupp.total ι M R v) l = 0
⊢ Finsupp.single i 1 = Finsupp.single j 1
state_after: no goals