Theorem: linearIndependent_of_top_le_span_of_card_eq_finrank
File: Mathlib/LinearAlgebra/Dimension/DivisionRing.lean

tactic: by_contra gx_ne_zero
state_before: K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
⊢ g i = 0
state_after: K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
⊢ False

tactic: refine not_le_of_gt (span_lt_top_of_card_lt_finrank
  (show (b '' (Set.univ \ {i})).toFinset.card < finrank K V from ?_)) ?_
state_before: K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
⊢ False
state_after: case refine_1
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
⊢ (b '' (Set.univ \ {i})).toFinset.card < finrank K V

case refine_2
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
⊢ ⊤ ≤ span K (b '' (Set.univ \ {i}))

tactic: refine spans.trans (span_le.mpr ?_)
state_before: case refine_2
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
⊢ ⊤ ≤ span K (b '' (Set.univ \ {i}))
state_after: case refine_2
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
⊢ range b ⊆ ↑(span K (b '' (Set.univ \ {i})))

tactic: rintro _ ⟨j, rfl, rfl⟩
state_before: case refine_2
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
⊢ range b ⊆ ↑(span K (b '' (Set.univ \ {i})))
state_after: case refine_2.intro.refl
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
⊢ b j ∈ ↑(span K (b '' (Set.univ \ {i})))

tactic: by_cases j_eq : j = i
state_before: case refine_2.intro.refl
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
⊢ b j ∈ ↑(span K (b '' (Set.univ \ {i})))
state_after: case pos
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ b j ∈ ↑(span K (b '' (Set.univ \ {i})))

case neg
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : ¬j = i
⊢ b j ∈ ↑(span K (b '' (Set.univ \ {i})))

tactic: swap
state_before: case pos
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ b j ∈ ↑(span K (b '' (Set.univ \ {i})))

case neg
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : ¬j = i
⊢ b j ∈ ↑(span K (b '' (Set.univ \ {i})))
state_after: case neg
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : ¬j = i
⊢ b j ∈ ↑(span K (b '' (Set.univ \ {i})))

case pos
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ b j ∈ ↑(span K (b '' (Set.univ \ {i})))

tactic: rw [j_eq, SetLike.mem_coe, show b i = -((g i)⁻¹ • (s.erase i).sum fun j => g j • b j) from _]
state_before: case pos
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ b j ∈ ↑(span K (b '' (Set.univ \ {i})))
state_after: case pos
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ -((g i)⁻¹ • ∑ j ∈ s.erase i, g j • b j) ∈ span K (b '' (Set.univ \ {i}))

K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ b i = -((g i)⁻¹ • ∑ j ∈ s.erase i, g j • b j)

tactic: apply eq_neg_of_add_eq_zero_left
state_before: K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ b i = -((g i)⁻¹ • ∑ j ∈ s.erase i, g j • b j)
state_after: case h
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ b i + (g i)⁻¹ • ∑ j ∈ s.erase i, g j • b j = 0

tactic: calc
  (b i + (g i)⁻¹ • (s.erase i).sum fun j => g j • b j) =
      (g i)⁻¹ • (g i • b i + (s.erase i).sum fun j => g j • b j) := by
    rw [smul_add, ← mul_smul, inv_mul_cancel gx_ne_zero, one_smul]
  _ = (g i)⁻¹ • (0 : V) := congr_arg _ ?_
  _ = 0 := smul_zero _
state_before: case h
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ b i + (g i)⁻¹ • ∑ j ∈ s.erase i, g j • b j = 0
state_after: case h
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ g i • b i + ∑ j ∈ s.erase i, g j • b j = 0

tactic: rwa [← Finset.insert_erase i_mem_s, Finset.sum_insert (Finset.not_mem_erase _ _)] at dependent
state_before: case h
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ g i • b i + ∑ j ∈ s.erase i, g j • b j = 0
state_after: no goals

tactic: calc
  (b '' (Set.univ \ {i})).toFinset.card = ((Set.univ \ {i}).toFinset.image b).card := by
    rw [Set.toFinset_card, Fintype.card_ofFinset]
  _ ≤ (Set.univ \ {i}).toFinset.card := Finset.card_image_le
  _ = (Finset.univ.erase i).card := (congr_arg Finset.card (Finset.ext (by simp [and_comm])))
  _ < Finset.univ.card := Finset.card_erase_lt_of_mem (Finset.mem_univ i)
  _ = finrank K V := card_eq
state_before: case refine_1
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
⊢ (b '' (Set.univ \ {i})).toFinset.card < finrank K V
state_after: no goals

tactic: rw [Set.toFinset_card, Fintype.card_ofFinset]
state_before: K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
⊢ (b '' (Set.univ \ {i})).toFinset.card = (Finset.image b (Set.univ \ {i}).toFinset).card
state_after: no goals

tactic: simp [and_comm]
state_before: K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
⊢ ∀ (a : ι), a ∈ (Set.univ \ {i}).toFinset ↔ a ∈ Finset.univ.erase i
state_after: no goals

tactic: refine subset_span ⟨j, (Set.mem_diff _).mpr ⟨Set.mem_univ _, ?_⟩, rfl⟩
state_before: case neg
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : ¬j = i
⊢ b j ∈ ↑(span K (b '' (Set.univ \ {i})))
state_after: case neg
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : ¬j = i
⊢ j ∉ {i}

tactic: exact mt Set.mem_singleton_iff.mp j_eq
state_before: case neg
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : ¬j = i
⊢ j ∉ {i}
state_after: no goals

tactic: refine neg_mem (smul_mem _ _ (sum_mem fun k hk => ?_))
state_before: case pos
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ -((g i)⁻¹ • ∑ j ∈ s.erase i, g j • b j) ∈ span K (b '' (Set.univ \ {i}))
state_after: case pos
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
k : ι
hk : k ∈ s.erase i
⊢ g k • b k ∈ span K (b '' (Set.univ \ {i}))

tactic: obtain ⟨k_ne_i, _⟩ := Finset.mem_erase.mp hk
state_before: case pos
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
k : ι
hk : k ∈ s.erase i
⊢ g k • b k ∈ span K (b '' (Set.univ \ {i}))
state_after: case pos.intro
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
k : ι
hk : k ∈ s.erase i
k_ne_i : k ≠ i
right✝ : k ∈ s
⊢ g k • b k ∈ span K (b '' (Set.univ \ {i}))

tactic: refine smul_mem _ _ (subset_span ⟨k, ?_, rfl⟩)
state_before: case pos.intro
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
k : ι
hk : k ∈ s.erase i
k_ne_i : k ≠ i
right✝ : k ∈ s
⊢ g k • b k ∈ span K (b '' (Set.univ \ {i}))
state_after: case pos.intro
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
k : ι
hk : k ∈ s.erase i
k_ne_i : k ≠ i
right✝ : k ∈ s
⊢ k ∈ Set.univ \ {i}

tactic: simp_all only [Set.mem_univ, Set.mem_diff, Set.mem_singleton_iff, and_self, not_false_eq_true]
state_before: case pos.intro
K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
k : ι
hk : k ∈ s.erase i
k_ne_i : k ≠ i
right✝ : k ∈ s
⊢ k ∈ Set.univ \ {i}
state_after: no goals

tactic: rw [smul_add, ← mul_smul, inv_mul_cancel gx_ne_zero, one_smul]
state_before: K R : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
ι : Type u_2
inst✝ : Fintype ι
b : ι → V
spans : ⊤ ≤ span K (range b)
card_eq : Fintype.card ι = finrank K V
s : Finset ι
g : ι → K
dependent : ∑ i ∈ s, g i • b i = 0
i : ι
i_mem_s : i ∈ s
gx_ne_zero : ¬g i = 0
j : ι
j_eq : j = i
⊢ b i + (g i)⁻¹ • ∑ j ∈ s.erase i, g j • b j = (g i)⁻¹ • (g i • b i + ∑ j ∈ s.erase i, g j • b j)
state_after: no goals