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

tactic: rcases exists_maximal_independent' R s with ⟨I, hIlinind, hImaximal⟩
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
⊢ ∃ I, (LinearIndependent R fun x => s ↑x) ∧ ∀ (i : ι), ¬i ∈ I → ∃ a, a ≠ 0 ∧ a • s i ∈ span R (s '' I)

tactic: use I, hIlinind
state_before: case intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
hImaximal : ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun x => s ↑x) → I = J
⊢ ∃ I, (LinearIndependent R fun x => s ↑x) ∧ ∀ (i : ι), ¬i ∈ I → ∃ a, a ≠ 0 ∧ a • s i ∈ span R (s '' I)

tactic: intro i hi
state_before: case intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
hImaximal : ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun x => s ↑x) → I = J
⊢ ∀ (i : ι), ¬i ∈ I → ∃ a, a ≠ 0 ∧ a • s i ∈ span R (s '' I)

tactic: specialize hImaximal (I ∪ {i}) (by simp)
state_before: case intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
hImaximal : ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun x => s ↑x) → I = J
i : ι
hi : ¬i ∈ I
⊢ ∃ a, a ≠ 0 ∧ a • s i ∈ span R (s '' I)

tactic: set J := I ∪ {i} with hJ
state_before: case intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
hImaximal : (LinearIndependent R fun x => s ↑x) → I = I ∪ {i}
⊢ ∃ a, a ≠ 0 ∧ a • s i ∈ span R (s '' I)

tactic: have memJ : ∀ {x}, x ∈ J ↔ x = i ∨ x ∈ I := by simp [hJ]
state_before: case intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
⊢ ∃ a, a ≠ 0 ∧ a • s i ∈ span R (s '' I)

tactic: have hiJ : i ∈ J := by simp
state_before: case intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
⊢ ∃ a, a ≠ 0 ∧ a • s i ∈ span R (s '' I)

tactic: obtain ⟨f, supp_f, sum_f, f_ne⟩ := linearDependent_comp_subtype.mp h
state_before: case intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
⊢ ∃ a, a ≠ 0 ∧ a • s i ∈ span R (s '' I)

tactic: have hfi : f i ≠ 0 := by
  contrapose hIlinind
  refine' linearDependent_comp_subtype.mpr ⟨f, _, sum_f, f_ne⟩
  simp only [Finsupp.mem_supported, hJ] at supp_f⊢
  rintro x hx
  refine' (memJ.mp (supp_f hx)).resolve_left _
  rintro rfl
  exact hIlinind (Finsupp.mem_support_iff.mp hx)
state_before: case intro.intro.intro.intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
supp_f : f ∈ Finsupp.supported R R J
sum_f : ∑ i in f.support, ↑f i • s i = 0
f_ne : f ≠ 0
⊢ ∃ a, a ≠ 0 ∧ a • s i ∈ span R (s '' I)

tactic: use f i, hfi
state_before: case intro.intro.intro.intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
supp_f : f ∈ Finsupp.supported R R J
sum_f : ∑ i in f.support, ↑f i • s i = 0
f_ne : f ≠ 0
hfi : ↑f i ≠ 0
⊢ ∃ a, a ≠ 0 ∧ a • s i ∈ span R (s '' I)

tactic: have hfi' : i ∈ f.support := Finsupp.mem_support_iff.mpr hfi
state_before: case intro.intro.intro.intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
supp_f : f ∈ Finsupp.supported R R J
sum_f : ∑ i in f.support, ↑f i • s i = 0
f_ne : f ≠ 0
hfi : ↑f i ≠ 0
⊢ ↑f i • s i ∈ span R (s '' I)

tactic: rw [← Finset.insert_erase hfi', Finset.sum_insert (Finset.not_mem_erase _ _),
  add_eq_zero_iff_eq_neg] at sum_f
state_before: case intro.intro.intro.intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
supp_f : f ∈ Finsupp.supported R R J
sum_f : ∑ i in f.support, ↑f i • s i = 0
f_ne : f ≠ 0
hfi : ↑f i ≠ 0
hfi' : i ∈ f.support
⊢ ↑f i • s i ∈ span R (s '' I)

tactic: rw [sum_f]
state_before: case intro.intro.intro.intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
supp_f : f ∈ Finsupp.supported R R J
sum_f : ↑f i • s i = -∑ x in Finset.erase f.support i, ↑f x • s x
f_ne : f ≠ 0
hfi : ↑f i ≠ 0
hfi' : i ∈ f.support
⊢ ↑f i • s i ∈ span R (s '' I)

tactic: refine' neg_mem (sum_mem fun c hc => smul_mem _ _ (subset_span ⟨c, _, rfl⟩))
state_before: case intro.intro.intro.intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
supp_f : f ∈ Finsupp.supported R R J
sum_f : ↑f i • s i = -∑ x in Finset.erase f.support i, ↑f x • s x
f_ne : f ≠ 0
hfi : ↑f i ≠ 0
hfi' : i ∈ f.support
⊢ -∑ x in Finset.erase f.support i, ↑f x • s x ∈ span R (s '' I)

tactic: exact (memJ.mp (supp_f (Finset.erase_subset _ _ hc))).resolve_left (Finset.ne_of_mem_erase hc)
state_before: case intro.intro.intro.intro.intro
ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
supp_f : f ∈ Finsupp.supported R R J
sum_f : ↑f i • s i = -∑ x in Finset.erase f.support i, ↑f x • s x
f_ne : f ≠ 0
hfi : ↑f i ≠ 0
hfi' : i ∈ f.support
c : ι
hc : c ∈ Finset.erase f.support i
⊢ c ∈ I

tactic: simp
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
hImaximal : ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun x => s ↑x) → I = J
i : ι
hi : ¬i ∈ I
⊢ I ⊆ I ∪ {i}

tactic: simp [hJ]
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
⊢ ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I

tactic: simp
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
⊢ i ∈ J

tactic: refine mt hImaximal ?_
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
⊢ ?m.518334

tactic: intro h2
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
⊢ ¬I = J

tactic: rw [h2] at hi
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h2 : I = J
⊢ False

tactic: exact absurd hiJ hi
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
J : Set ι := I ∪ {i}
hi : ¬i ∈ J
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h2 : I = J
⊢ False

tactic: contrapose hIlinind
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
hIlinind : LinearIndependent R fun x => s ↑x
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
supp_f : f ∈ Finsupp.supported R R J
sum_f : ∑ i in f.support, ↑f i • s i = 0
f_ne : f ≠ 0
⊢ ↑f i ≠ 0

tactic: refine' linearDependent_comp_subtype.mpr ⟨f, _, sum_f, f_ne⟩
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
supp_f : f ∈ Finsupp.supported R R J
sum_f : ∑ i in f.support, ↑f i • s i = 0
f_ne : f ≠ 0
hIlinind : ¬↑f i ≠ 0
⊢ ¬LinearIndependent R fun x => s ↑x

tactic: simp only [Finsupp.mem_supported, hJ] at supp_f⊢
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
supp_f : f ∈ Finsupp.supported R R J
sum_f : ∑ i in f.support, ↑f i • s i = 0
f_ne : f ≠ 0
hIlinind : ¬↑f i ≠ 0
⊢ f ∈ Finsupp.supported R R I

tactic: rintro x hx
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
sum_f : ∑ i in f.support, ↑f i • s i = 0
f_ne : f ≠ 0
hIlinind : ¬↑f i ≠ 0
supp_f : ↑f.support ⊆ I ∪ {i}
⊢ ↑f.support ⊆ I

tactic: refine' (memJ.mp (supp_f hx)).resolve_left _
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
sum_f : ∑ i in f.support, ↑f i • s i = 0
f_ne : f ≠ 0
hIlinind : ¬↑f i ≠ 0
supp_f : ↑f.support ⊆ I ∪ {i}
x : ι
hx : x ∈ ↑f.support
⊢ x ∈ I

tactic: rintro rfl
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
i : ι
hi : ¬i ∈ I
J : Set ι := I ∪ {i}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {i}
memJ : ∀ {x : ι}, x ∈ J ↔ x = i ∨ x ∈ I
hiJ : i ∈ J
h : ¬LinearIndependent R fun x => s ↑x
f : ι →₀ R
sum_f : ∑ i in f.support, ↑f i • s i = 0
f_ne : f ≠ 0
hIlinind : ¬↑f i ≠ 0
supp_f : ↑f.support ⊆ I ∪ {i}
x : ι
hx : x ∈ ↑f.support
⊢ ¬x = i

tactic: exact hIlinind (Finsupp.mem_support_iff.mp hx)
state_before: ι : Type u'
ι' : Type ?u.511300
R : Type u_1
K : Type ?u.511306
M : Type u_2
M' : Type ?u.511312
M'' : Type ?u.511315
V : Type u
V' : Type ?u.511320
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
s : ι → M
I : Set ι
f : ι →₀ R
sum_f : ∑ i in f.support, ↑f i • s i = 0
f_ne : f ≠ 0
x : ι
hx : x ∈ ↑f.support
hi : ¬x ∈ I
J : Set ι := I ∪ {x}
hImaximal : (LinearIndependent R fun x => s ↑x) → I = J
hJ : J = I ∪ {x}
memJ : ∀ {x_1 : ι}, x_1 ∈ J ↔ x_1 = x ∨ x_1 ∈ I
hiJ : x ∈ J
h : ¬LinearIndependent R fun x => s ↑x
hIlinind : ¬↑f x ≠ 0
supp_f : ↑f.support ⊆ I ∪ {x}
⊢ False