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

tactic: rw [Finsupp.span_image_eq_map_total, mem_map] at ha
state_before: ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv✝ hv : LinearIndependent R v
i : ι
a : R
ha : a • v i ∈ span R (v '' (univ \ {i}))
⊢ a = 0

tactic: rcases ha with ⟨l, hl, e⟩
state_before: ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv✝ hv : LinearIndependent R v
i : ι
a : R
ha : ∃ y, y ∈ Finsupp.supported R R (univ \ {i}) ∧ ↑(Finsupp.total ι M R v) y = a • v i
⊢ a = 0

tactic: rw [sub_eq_zero.1 (linearIndependent_iff.1 hv (l - Finsupp.single i a) (by simp [e]))] at hl
state_before: case intro.intro
ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv✝ hv : LinearIndependent R v
i : ι
a : R
l : ι →₀ R
hl : l ∈ Finsupp.supported R R (univ \ {i})
e : ↑(Finsupp.total ι M R v) l = a • v i
⊢ a = 0

tactic: by_contra hn
state_before: case intro.intro
ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv✝ hv : LinearIndependent R v
i : ι
a : R
l : ι →₀ R
hl : Finsupp.single i a ∈ Finsupp.supported R R (univ \ {i})
e : ↑(Finsupp.total ι M R v) l = a • v i
⊢ a = 0

tactic: exact (not_mem_of_mem_diff (hl <| by simp [hn])) (mem_singleton _)
state_before: case intro.intro
ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv✝ hv : LinearIndependent R v
i : ι
a : R
l : ι →₀ R
hl : Finsupp.single i a ∈ Finsupp.supported R R (univ \ {i})
e : ↑(Finsupp.total ι M R v) l = a • v i
hn : ¬a = 0
⊢ False

tactic: simp [e]
state_before: ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv✝ hv : LinearIndependent R v
i : ι
a : R
l : ι →₀ R
hl : l ∈ Finsupp.supported R R (univ \ {i})
e : ↑(Finsupp.total ι M R v) l = a • v i
⊢ ↑(Finsupp.total ι M R v) (l - Finsupp.single i a) = 0

tactic: simp [hn]
state_before: ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv✝ hv : LinearIndependent R v
i : ι
a : R
l : ι →₀ R
hl : Finsupp.single i a ∈ Finsupp.supported R R (univ \ {i})
e : ↑(Finsupp.total ι M R v) l = a • v i
hn : ¬a = 0
⊢ i ∈ ↑(Finsupp.single i a).support

tactic: ext i
state_before: ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv : LinearIndependent R v
H : ∀ (i : ι) (a : R), a • v i ∈ span R (v '' (univ \ {i})) → a = 0
l : ι →₀ R
hl : ↑(Finsupp.total ι M R v) l = 0
⊢ l = 0

tactic: simp only [Finsupp.zero_apply]
state_before: case h
ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv : LinearIndependent R v
H : ∀ (i : ι) (a : R), a • v i ∈ span R (v '' (univ \ {i})) → a = 0
l : ι →₀ R
hl : ↑(Finsupp.total ι M R v) l = 0
i : ι
⊢ ↑l i = ↑0 i

tactic: by_contra hn
state_before: case h
ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv : LinearIndependent R v
H : ∀ (i : ι) (a : R), a • v i ∈ span R (v '' (univ \ {i})) → a = 0
l : ι →₀ R
hl : ↑(Finsupp.total ι M R v) l = 0
i : ι
⊢ ↑l i = 0

tactic: refine' hn (H i _ _)
state_before: case h
ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv : LinearIndependent R v
H : ∀ (i : ι) (a : R), a • v i ∈ span R (v '' (univ \ {i})) → a = 0
l : ι →₀ R
hl : ↑(Finsupp.total ι M R v) l = 0
i : ι
hn : ¬↑l i = 0
⊢ False

tactic: refine' (Finsupp.mem_span_image_iff_total R).2 ⟨Finsupp.single i (l i) - l, _, _⟩
state_before: case h
ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv : LinearIndependent R v
H : ∀ (i : ι) (a : R), a • v i ∈ span R (v '' (univ \ {i})) → a = 0
l : ι →₀ R
hl : ↑(Finsupp.total ι M R v) l = 0
i : ι
hn : ¬↑l i = 0
⊢ ↑l i • v i ∈ span R (v '' (univ \ {i}))

tactic: rw [Finsupp.mem_supported']
state_before: case h.refine'_1
ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv : LinearIndependent R v
H : ∀ (i : ι) (a : R), a • v i ∈ span R (v '' (univ \ {i})) → a = 0
l : ι →₀ R
hl : ↑(Finsupp.total ι M R v) l = 0
i : ι
hn : ¬↑l i = 0
⊢ Finsupp.single i (↑l i) - l ∈ Finsupp.supported R R (univ \ {i})

tactic: intro j hj
state_before: case h.refine'_1
ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv : LinearIndependent R v
H : ∀ (i : ι) (a : R), a • v i ∈ span R (v '' (univ \ {i})) → a = 0
l : ι →₀ R
hl : ↑(Finsupp.total ι M R v) l = 0
i : ι
hn : ¬↑l i = 0
⊢ ∀ (x : ι), ¬x ∈ univ \ {i} → ↑(Finsupp.single i (↑l i) - l) x = 0

tactic: have hij : j = i :=
  Classical.not_not.1 fun hij : j ≠ i =>
    hj ((mem_diff _).2 ⟨mem_univ _, fun h => hij (eq_of_mem_singleton h)⟩)
state_before: case h.refine'_1
ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv : LinearIndependent R v
H : ∀ (i : ι) (a : R), a • v i ∈ span R (v '' (univ \ {i})) → a = 0
l : ι →₀ R
hl : ↑(Finsupp.total ι M R v) l = 0
i : ι
hn : ¬↑l i = 0
j : ι
hj : ¬j ∈ univ \ {i}
⊢ ↑(Finsupp.single i (↑l i) - l) j = 0

tactic: simp [hij]
state_before: case h.refine'_1
ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv : LinearIndependent R v
H : ∀ (i : ι) (a : R), a • v i ∈ span R (v '' (univ \ {i})) → a = 0
l : ι →₀ R
hl : ↑(Finsupp.total ι M R v) l = 0
i : ι
hn : ¬↑l i = 0
j : ι
hj : ¬j ∈ univ \ {i}
hij : j = i
⊢ ↑(Finsupp.single i (↑l i) - l) j = 0

tactic: simp [hl]
state_before: case h.refine'_2
ι : Type u'
ι' : Type ?u.472009
R : Type u_1
K : Type ?u.472015
M : Type u_2
M' : Type ?u.472021
M'' : Type ?u.472024
V : Type u
V' : Type ?u.472029
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
hv : LinearIndependent R v
H : ∀ (i : ι) (a : R), a • v i ∈ span R (v '' (univ \ {i})) → a = 0
l : ι →₀ R
hl : ↑(Finsupp.total ι M R v) l = 0
i : ι
hn : ¬↑l i = 0
⊢ ↑(Finsupp.total ι M R v) (Finsupp.single i (↑l i) - l) = ↑l i • v i