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

Proof steps:
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x y z : V
hs : LinearIndependent (ι := { x // x ∈ s }) K Subtype.val
hst : s ⊆ t
this :
  ∃ m ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val},
    s ⊆ m ∧ ∀ a ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, m ⊆ a → a = m
⊢ ∃ b ⊆ t, s ⊆ b ∧ t ⊆ ↑(span K b) ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
state_after: case intro.intro.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x y z : V
hs : LinearIndependent (ι := { x // x ∈ s }) K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
sb : s ⊆ b
h : ∀ a ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, b ⊆ a → a = b
⊢ ∃ b ⊆ t, s ⊆ b ∧ t ⊆ ↑(span K b) ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
tactic: rcases this with
    ⟨b, ⟨bt, bi⟩, sb, h⟩
state_before: case intro.intro.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x y z : V
hs : LinearIndependent (ι := { x // x ∈ s }) K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
sb : s ⊆ b
h : ∀ a ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, b ⊆ a → a = b
⊢ ∃ b ⊆ t, s ⊆ b ∧ t ⊆ ↑(span K b) ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
state_after: case intro.intro.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x✝ y z : V
hs : LinearIndependent (ι := { x // x ∈ s }) K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
sb : s ⊆ b
h : ∀ a ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, b ⊆ a → a = b
x : V
xt : x ∈ t
⊢ x ∈ ↑(span K b)
tactic: refine ⟨b, bt, sb, fun x xt => ?_, bi⟩
state_before: case intro.intro.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x✝ y z : V
hs : LinearIndependent (ι := { x // x ∈ s }) K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
sb : s ⊆ b
h : ∀ a ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, b ⊆ a → a = b
x : V
xt : x ∈ t
⊢ x ∈ ↑(span K b)
state_after: case intro.intro.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x✝ y z : V
hs : LinearIndependent (ι := { x // x ∈ s }) K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
sb : s ⊆ b
h : ∀ a ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, b ⊆ a → a = b
x : V
xt : x ∈ t
hn : x ∉ ↑(span K b)
⊢ False
tactic: by_contra hn
state_before: case intro.intro.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x✝ y z : V
hs : LinearIndependent (ι := { x // x ∈ s }) K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
sb : s ⊆ b
h : ∀ a ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, b ⊆ a → a = b
x : V
xt : x ∈ t
hn : x ∉ ↑(span K b)
⊢ False
state_after: case intro.intro.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x✝ y z : V
hs : LinearIndependent (ι := { x // x ∈ s }) K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
sb : s ⊆ b
h : ∀ a ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, b ⊆ a → a = b
x : V
xt : x ∈ t
hn : x ∉ ↑(span K b)
⊢ x ∈ ↑(span K b)
tactic: apply hn
state_before: case intro.intro.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x✝ y z : V
hs : LinearIndependent (ι := { x // x ∈ s }) K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
sb : s ⊆ b
h : ∀ a ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, b ⊆ a → a = b
x : V
xt : x ∈ t
hn : x ∉ ↑(span K b)
⊢ x ∈ ↑(span K b)
state_after: case intro.intro.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x✝ y z : V
hs : LinearIndependent (ι := { x // x ∈ s }) K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
sb : s ⊆ b
h : ∀ a ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, b ⊆ a → a = b
x : V
xt : x ∈ t
hn : x ∉ ↑(span K b)
⊢ x ∈ ↑(span K (insert x b))
tactic: rw [← h _ ⟨insert_subset_iff.2 ⟨xt, bt⟩, bi.insert hn⟩ (subset_insert _ _)]
state_before: case intro.intro.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x✝ y z : V
hs : LinearIndependent (ι := { x // x ∈ s }) K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent (ι := { x // x ∈ b }) K Subtype.val
sb : s ⊆ b
h : ∀ a ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, b ⊆ a → a = b
x : V
xt : x ∈ t
hn : x ∉ ↑(span K b)
⊢ x ∈ ↑(span K (insert x b))
state_after: no goals
tactic: exact subset_span (mem_insert _ _)