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

tactic: rcases this with
  ⟨b, ⟨bt, bi⟩, sb, h⟩
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: 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
⊢ ∃ 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: 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
⊢ 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: 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)
⊢ 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: 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 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: exact subset_span (mem_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: refine zorn_subset_nonempty { b | b ⊆ t ∧ LinearIndependent K ((↑) : b → V) } ?_ _ ⟨hst, hs⟩
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
⊢ ?m.725641
state_after: ι : 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
⊢ ∀ c ⊆ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val},
    IsChain (fun x x_1 => x ⊆ x_1) c →
      c.Nonempty → ∃ ub ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, ∀ s ∈ c, s ⊆ ub

tactic: refine fun c hc cc _c0 => ⟨⋃₀ c, ⟨?_, ?_⟩, fun x => ?_⟩
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
⊢ ∀ c ⊆ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val},
    IsChain (fun x x_1 => x ⊆ x_1) c →
      c.Nonempty → ∃ ub ∈ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}, ∀ s ∈ c, s ⊆ ub
state_after: case refine_1
ι : 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
c : Set (Set V)
hc : c ⊆ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}
cc : IsChain (fun x x_1 => x ⊆ x_1) c
_c0 : c.Nonempty
⊢ ⋃₀ c ⊆ t

case refine_2
ι : 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
c : Set (Set V)
hc : c ⊆ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}
cc : IsChain (fun x x_1 => x ⊆ x_1) c
_c0 : c.Nonempty
⊢ LinearIndependent (ι := { x // x ∈ ⋃₀ c }) K Subtype.val

case refine_3
ι : 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
c : Set (Set V)
hc : c ⊆ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}
cc : IsChain (fun x x_1 => x ⊆ x_1) c
_c0 : c.Nonempty
x : Set V
⊢ x ∈ c → x ⊆ ⋃₀ c

tactic: exact sUnion_subset fun x xc => (hc xc).1
state_before: case refine_1
ι : 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
c : Set (Set V)
hc : c ⊆ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}
cc : IsChain (fun x x_1 => x ⊆ x_1) c
_c0 : c.Nonempty
⊢ ⋃₀ c ⊆ t
state_after: no goals

tactic: exact linearIndependent_sUnion_of_directed cc.directedOn fun x xc => (hc xc).2
state_before: case refine_2
ι : 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
c : Set (Set V)
hc : c ⊆ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}
cc : IsChain (fun x x_1 => x ⊆ x_1) c
_c0 : c.Nonempty
⊢ LinearIndependent (ι := { x // x ∈ ⋃₀ c }) K Subtype.val
state_after: no goals

tactic: exact subset_sUnion_of_mem
state_before: case refine_3
ι : 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
c : Set (Set V)
hc : c ⊆ {b | b ⊆ t ∧ LinearIndependent (ι := { x // x ∈ b }) K Subtype.val}
cc : IsChain (fun x x_1 => x ⊆ x_1) c
_c0 : c.Nonempty
x : Set V
⊢ x ∈ c → x ⊆ ⋃₀ c
state_after: no goals