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

tactic: let l : ι →₀ R := Finsupp.single i c - Finsupp.single j d
state_before: ι : Type u'
ι' : Type ?u.327136
R : Type u_2
K : Type ?u.327142
M✝ : Type ?u.327145
M' : Type ?u.327148
M'' : Type ?u.327151
V : Type u
V' : Type ?u.327156
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✝
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
v : ι → M
li : LinearIndependent R v
c d : R
i j : ι
hc : c ≠ 0
h : c • v i = d • v j
⊢ i = j

tactic: have h_total : Finsupp.total ι M R v l = 0 := by
  simp_rw [LinearMap.map_sub, Finsupp.total_apply]
  simp [h]
state_before: ι : Type u'
ι' : Type ?u.327136
R : Type u_2
K : Type ?u.327142
M✝ : Type ?u.327145
M' : Type ?u.327148
M'' : Type ?u.327151
V : Type u
V' : Type ?u.327156
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✝
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
v : ι → M
li : LinearIndependent R v
c d : R
i j : ι
hc : c ≠ 0
h : c • v i = d • v j
l : ι →₀ R := Finsupp.single i c - Finsupp.single j d
⊢ i = j

tactic: have h_single_eq : Finsupp.single i c = Finsupp.single j d := by
  rw [linearIndependent_iff] at li
  simp [eq_add_of_sub_eq' (li l h_total)]
state_before: ι : Type u'
ι' : Type ?u.327136
R : Type u_2
K : Type ?u.327142
M✝ : Type ?u.327145
M' : Type ?u.327148
M'' : Type ?u.327151
V : Type u
V' : Type ?u.327156
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✝
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
v : ι → M
li : LinearIndependent R v
c d : R
i j : ι
hc : c ≠ 0
h : c • v i = d • v j
l : ι →₀ R := Finsupp.single i c - Finsupp.single j d
h_total : ↑(Finsupp.total ι M R v) l = 0
⊢ i = j

tactic: rcases (Finsupp.single_eq_single_iff _ _ _ _).mp h_single_eq with (⟨H, _⟩ | ⟨hc, _⟩)
state_before: ι : Type u'
ι' : Type ?u.327136
R : Type u_2
K : Type ?u.327142
M✝ : Type ?u.327145
M' : Type ?u.327148
M'' : Type ?u.327151
V : Type u
V' : Type ?u.327156
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✝
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
v : ι → M
li : LinearIndependent R v
c d : R
i j : ι
hc : c ≠ 0
h : c • v i = d • v j
l : ι →₀ R := Finsupp.single i c - Finsupp.single j d
h_total : ↑(Finsupp.total ι M R v) l = 0
h_single_eq : Finsupp.single i c = Finsupp.single j d
⊢ i = j

tactic: simp_rw [LinearMap.map_sub, Finsupp.total_apply]
state_before: ι : Type u'
ι' : Type ?u.327136
R : Type u_2
K : Type ?u.327142
M✝ : Type ?u.327145
M' : Type ?u.327148
M'' : Type ?u.327151
V : Type u
V' : Type ?u.327156
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✝
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
v : ι → M
li : LinearIndependent R v
c d : R
i j : ι
hc : c ≠ 0
h : c • v i = d • v j
l : ι →₀ R := Finsupp.single i c - Finsupp.single j d
⊢ ↑(Finsupp.total ι M R v) l = 0

tactic: simp [h]
state_before: ι : Type u'
ι' : Type ?u.327136
R : Type u_2
K : Type ?u.327142
M✝ : Type ?u.327145
M' : Type ?u.327148
M'' : Type ?u.327151
V : Type u
V' : Type ?u.327156
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✝
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
v : ι → M
li : LinearIndependent R v
c d : R
i j : ι
hc : c ≠ 0
h : c • v i = d • v j
l : ι →₀ R := Finsupp.single i c - Finsupp.single j d
⊢ ((Finsupp.sum (Finsupp.single i c) fun i a => a • v i) - Finsupp.sum (Finsupp.single j d) fun i a => a • v i) = 0

tactic: rw [linearIndependent_iff] at li
state_before: ι : Type u'
ι' : Type ?u.327136
R : Type u_2
K : Type ?u.327142
M✝ : Type ?u.327145
M' : Type ?u.327148
M'' : Type ?u.327151
V : Type u
V' : Type ?u.327156
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✝
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
v : ι → M
li : LinearIndependent R v
c d : R
i j : ι
hc : c ≠ 0
h : c • v i = d • v j
l : ι →₀ R := Finsupp.single i c - Finsupp.single j d
h_total : ↑(Finsupp.total ι M R v) l = 0
⊢ Finsupp.single i c = Finsupp.single j d

tactic: simp [eq_add_of_sub_eq' (li l h_total)]
state_before: ι : Type u'
ι' : Type ?u.327136
R : Type u_2
K : Type ?u.327142
M✝ : Type ?u.327145
M' : Type ?u.327148
M'' : Type ?u.327151
V : Type u
V' : Type ?u.327156
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✝
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
v : ι → M
li : ∀ (l : ι →₀ R), ↑(Finsupp.total ι M R v) l = 0 → l = 0
c d : R
i j : ι
hc : c ≠ 0
h : c • v i = d • v j
l : ι →₀ R := Finsupp.single i c - Finsupp.single j d
h_total : ↑(Finsupp.total ι M R v) l = 0
⊢ Finsupp.single i c = Finsupp.single j d

tactic: exact H
state_before: case inl.intro
ι : Type u'
ι' : Type ?u.327136
R : Type u_2
K : Type ?u.327142
M✝ : Type ?u.327145
M' : Type ?u.327148
M'' : Type ?u.327151
V : Type u
V' : Type ?u.327156
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✝
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
v : ι → M
li : LinearIndependent R v
c d : R
i j : ι
hc : c ≠ 0
h : c • v i = d • v j
l : ι →₀ R := Finsupp.single i c - Finsupp.single j d
h_total : ↑(Finsupp.total ι M R v) l = 0
h_single_eq : Finsupp.single i c = Finsupp.single j d
H : i = j
right✝ : c = d
⊢ i = j

tactic: contradiction
state_before: case inr.intro
ι : Type u'
ι' : Type ?u.327136
R : Type u_2
K : Type ?u.327142
M✝ : Type ?u.327145
M' : Type ?u.327148
M'' : Type ?u.327151
V : Type u
V' : Type ?u.327156
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✝
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
v : ι → M
li : LinearIndependent R v
c d : R
i j : ι
hc✝ : c ≠ 0
h : c • v i = d • v j
l : ι →₀ R := Finsupp.single i c - Finsupp.single j d
h_total : ↑(Finsupp.total ι M R v) l = 0
h_single_eq : Finsupp.single i c = Finsupp.single j d
hc : c = 0
right✝ : d = 0
⊢ i = j