Theorem: union_support_maximal_linearIndependent_eq_range_basis
File: Mathlib/LinearAlgebra/Basis.lean

tactic: by_contra h
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
⊢ ⋃ k, ↑(b.repr (v k)).support = Set.univ
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
h : ¬⋃ k, ↑(b.repr (v k)).support = Set.univ
⊢ False

tactic: simp only [← Ne.eq_def, ne_univ_iff_exists_not_mem, mem_iUnion, not_exists_not,
  Finsupp.mem_support_iff, Finset.mem_coe] at h
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
h : ¬⋃ k, ↑(b.repr (v k)).support = Set.univ
⊢ False
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
h : ∃ a, ∀ (x : κ), (b.repr (v x)) a = 0
⊢ False

tactic: obtain ⟨b', w⟩ := h
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
h : ∃ a, ∀ (x : κ), (b.repr (v x)) a = 0
⊢ False
state_after: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
⊢ False

tactic: let v' : Option κ → M := fun o => o.elim (b b') v
state_before: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
⊢ False
state_after: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
⊢ False

tactic: have r : range v ⊆ range v' := by
  rintro - ⟨k, rfl⟩
  use some k
  simp only [v', Option.elim_some]
state_before: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
⊢ False
state_after: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
⊢ False

tactic: have r' : b b' ∉ range v := by
  rintro ⟨k, p⟩
  simpa [w] using congr_arg (fun m => (b.repr m) b') p
state_before: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
⊢ False
state_after: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
⊢ False

tactic: have r'' : range v ≠ range v' := by
  intro e
  have p : b b' ∈ range v' := by
    use none
    simp only [v', Option.elim_none]
  rw [← e] at p
  exact r' p
state_before: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
⊢ False
state_after: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
⊢ False

tactic: rw [LinearIndependent.Maximal] at m
state_before: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
i' : LinearIndependent (ι := { x // x ∈ range v' }) R Subtype.val
⊢ False
state_after: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : ∀ (s : Set M), LinearIndependent (ι := { x // x ∈ s }) R Subtype.val → range v ≤ s → range v = s
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
i' : LinearIndependent (ι := { x // x ∈ range v' }) R Subtype.val
⊢ False

tactic: specialize m (range v') i' r
state_before: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : ∀ (s : Set M), LinearIndependent (ι := { x // x ∈ s }) R Subtype.val → range v ≤ s → range v = s
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
i' : LinearIndependent (ι := { x // x ∈ range v' }) R Subtype.val
⊢ False
state_after: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
i' : LinearIndependent (ι := { x // x ∈ range v' }) R Subtype.val
m : range v = range v'
⊢ False

tactic: exact r'' m
state_before: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
i' : LinearIndependent (ι := { x // x ∈ range v' }) R Subtype.val
m : range v = range v'
⊢ False
state_after: no goals

tactic: rintro - ⟨k, rfl⟩
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
⊢ range v ⊆ range v'
state_after: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
k : κ
⊢ v k ∈ range v'

tactic: use some k
state_before: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
k : κ
⊢ v k ∈ range v'
state_after: case h
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
k : κ
⊢ v' (some k) = v k

tactic: simp only [v', Option.elim_some]
state_before: case h
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
k : κ
⊢ v' (some k) = v k
state_after: no goals

tactic: rintro ⟨k, p⟩
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
⊢ b b' ∉ range v
state_after: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
k : κ
p : v k = b b'
⊢ False

tactic: simpa [w] using congr_arg (fun m => (b.repr m) b') p
state_before: case intro
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
k : κ
p : v k = b b'
⊢ False
state_after: no goals

tactic: intro e
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
⊢ range v ≠ range v'
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
e : range v = range v'
⊢ False

tactic: have p : b b' ∈ range v' := by
  use none
  simp only [v', Option.elim_none]
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
e : range v = range v'
⊢ False
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
e : range v = range v'
p : b b' ∈ range v'
⊢ False

tactic: rw [← e] at p
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
e : range v = range v'
p : b b' ∈ range v'
⊢ False
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
e : range v = range v'
p : b b' ∈ range v
⊢ False

tactic: exact r' p
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
e : range v = range v'
p : b b' ∈ range v
⊢ False
state_after: no goals

tactic: use none
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
e : range v = range v'
⊢ b b' ∈ range v'
state_after: case h
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
e : range v = range v'
⊢ v' none = b b'

tactic: simp only [v', Option.elim_none]
state_before: case h
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
e : range v = range v'
⊢ v' none = b b'
state_after: no goals

tactic: apply LinearIndependent.to_subtype_range
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
⊢ LinearIndependent (ι := { x // x ∈ range v' }) R Subtype.val
state_after: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
⊢ LinearIndependent R v'

tactic: rw [linearIndependent_iff]
state_before: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
⊢ LinearIndependent R v'
state_after: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
⊢ ∀ (l : Option κ →₀ R), (Finsupp.total (Option κ) M R v') l = 0 → l = 0

tactic: intro l z
state_before: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
⊢ ∀ (l : Option κ →₀ R), (Finsupp.total (Option κ) M R v') l = 0 → l = 0
state_after: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : (Finsupp.total (Option κ) M R v') l = 0
⊢ l = 0

tactic: rw [Finsupp.total_option] at z
state_before: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : (Finsupp.total (Option κ) M R v') l = 0
⊢ l = 0
state_after: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • v' none + (Finsupp.total κ M R (v' ∘ some)) l.some = 0
⊢ l = 0

tactic: simp only [v', Option.elim'] at z
state_before: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • v' none + (Finsupp.total κ M R (v' ∘ some)) l.some = 0
⊢ l = 0
state_after: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R ((fun o => o.elim (b b') v) ∘ some)) l.some = 0
⊢ l = 0

tactic: change _ + Finsupp.total κ M R v l.some = 0 at z
state_before: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R ((fun o => o.elim (b b') v) ∘ some)) l.some = 0
⊢ l = 0
state_after: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
⊢ l = 0

tactic: have l₀ : l none = 0 := by
  rw [← eq_neg_iff_add_eq_zero] at z
  replace z := neg_eq_iff_eq_neg.mpr z
  apply_fun fun x => b.repr x b' at z
  simp only [repr_self, map_smul, mul_one, Finsupp.single_eq_same, Pi.neg_apply,
    Finsupp.smul_single', map_neg, Finsupp.coe_neg] at z
  erw [DFunLike.congr_fun (Finsupp.apply_total R (b.repr : M →ₗ[R] ι →₀ R) v l.some) b'] at z
  simpa [Finsupp.total_apply, w] using z
state_before: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
⊢ l = 0
state_after: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
⊢ l = 0

tactic: have l₁ : l.some = 0 := by
  rw [l₀, zero_smul, zero_add] at z
  exact linearIndependent_iff.mp i _ z
state_before: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
⊢ l = 0
state_after: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
l₁ : l.some = 0
⊢ l = 0

tactic: ext (_ | a)
state_before: case hf
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
l₁ : l.some = 0
⊢ l = 0
state_after: case hf.h.none
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
l₁ : l.some = 0
⊢ l none = 0 none

case hf.h.some
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
l₁ : l.some = 0
a : κ
⊢ l (some a) = 0 (some a)

tactic: rw [← eq_neg_iff_add_eq_zero] at z
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
⊢ l none = 0
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v = -(Finsupp.total κ M R v) l.some
⊢ l none = 0

tactic: replace z := neg_eq_iff_eq_neg.mpr z
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v = -(Finsupp.total κ M R v) l.some
⊢ l none = 0
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : -(l none • none.elim (b b') v) = (Finsupp.total κ M R v) l.some
⊢ l none = 0

tactic: apply_fun fun x => b.repr x b' at z
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : -(l none • none.elim (b b') v) = (Finsupp.total κ M R v) l.some
⊢ l none = 0
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : (b.repr (-(l none • none.elim (b b') v))) b' = (b.repr ((Finsupp.total κ M R v) l.some)) b'
⊢ l none = 0

tactic: simp only [repr_self, map_smul, mul_one, Finsupp.single_eq_same, Pi.neg_apply,
  Finsupp.smul_single', map_neg, Finsupp.coe_neg] at z
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : (b.repr (-(l none • none.elim (b b') v))) b' = (b.repr ((Finsupp.total κ M R v) l.some)) b'
⊢ l none = 0
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : -(l none • b.repr (none.elim (b b') v)) b' = (b.repr ((Finsupp.total κ M R v) l.some)) b'
⊢ l none = 0

tactic: erw [DFunLike.congr_fun (Finsupp.apply_total R (b.repr : M →ₗ[R] ι →₀ R) v l.some) b'] at z
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : -(l none • b.repr (none.elim (b b') v)) b' = (b.repr ((Finsupp.total κ M R v) l.some)) b'
⊢ l none = 0
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : -(l none • b.repr (none.elim (b b') v)) b' = ((Finsupp.total κ (ι →₀ R) R (⇑↑b.repr ∘ v)) l.some) b'
⊢ l none = 0

tactic: simpa [Finsupp.total_apply, w] using z
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : -(l none • b.repr (none.elim (b b') v)) b' = ((Finsupp.total κ (ι →₀ R) R (⇑↑b.repr ∘ v)) l.some) b'
⊢ l none = 0
state_after: no goals

tactic: rw [l₀, zero_smul, zero_add] at z
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
⊢ l.some = 0
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
⊢ l.some = 0

tactic: exact linearIndependent_iff.mp i _ z
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
⊢ l.some = 0
state_after: no goals

tactic: simp only [l₀, Finsupp.coe_zero, Pi.zero_apply]
state_before: case hf.h.none
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
l₁ : l.some = 0
⊢ l none = 0 none
state_after: no goals

tactic: erw [DFunLike.congr_fun l₁ a]
state_before: case hf.h.some
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
l₁ : l.some = 0
a : κ
⊢ l (some a) = 0 (some a)
state_after: case hf.h.some
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
l₁ : l.some = 0
a : κ
⊢ 0 a = 0 (some a)

tactic: simp only [Finsupp.coe_zero, Pi.zero_apply]
state_before: case hf.h.some
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
ι : Type w
b : Basis ι R M
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
b' : ι
w : ∀ (x : κ), (b.repr (v x)) b' = 0
v' : Option κ → M := fun o => o.elim (b b') v
r : range v ⊆ range v'
r' : b b' ∉ range v
r'' : range v ≠ range v'
l : Option κ →₀ R
z : l none • none.elim (b b') v + (Finsupp.total κ M R v) l.some = 0
l₀ : l none = 0
l₁ : l.some = 0
a : κ
⊢ 0 a = 0 (some a)
state_after: no goals