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

tactic: rcases this with
  ⟨b, ⟨bt, bi⟩, sb, h⟩
state_before: ι : Type u'
ι' : Type ?u.1258140
R : Type ?u.1258143
K : Type u_1
M : Type ?u.1258149
M' : Type ?u.1258152
M'' : Type ?u.1258155
V : Type u
V' : Type ?u.1258160
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 K Subtype.val
hst : s ⊆ t
this :
  ∃ m,
    m ∈ {b | b ⊆ t ∧ LinearIndependent K Subtype.val} ∧
      s ⊆ m ∧ ∀ (a : Set V), a ∈ {b | b ⊆ t ∧ LinearIndependent K Subtype.val} → m ⊆ a → a = m
⊢ ∃ b x, s ⊆ b ∧ t ⊆ ↑(span K b) ∧ LinearIndependent K Subtype.val

tactic: refine zorn_subset_nonempty { b | b ⊆ t ∧ LinearIndependent K ((↑) : b → V) } ?_ _ ⟨hst, hs⟩
state_before: ι : Type u'
ι' : Type ?u.1258140
R : Type ?u.1258143
K : Type u_1
M : Type ?u.1258149
M' : Type ?u.1258152
M'' : Type ?u.1258155
V : Type u
V' : Type ?u.1258160
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 K Subtype.val
hst : s ⊆ t
⊢ ?m.1259860

tactic: refine' fun c hc cc _c0 => ⟨⋃₀ c, ⟨_, _⟩, fun x => _⟩
state_before: ι : Type u'
ι' : Type ?u.1258140
R : Type ?u.1258143
K : Type u_1
M : Type ?u.1258149
M' : Type ?u.1258152
M'' : Type ?u.1258155
V : Type u
V' : Type ?u.1258160
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 K Subtype.val
hst : s ⊆ t
⊢ ∀ (c : Set (Set V)),
    c ⊆ {b | b ⊆ t ∧ LinearIndependent K Subtype.val} →
      IsChain (fun x x_1 => x ⊆ x_1) c →
        Set.Nonempty c → ∃ ub, ub ∈ {b | b ⊆ t ∧ LinearIndependent K Subtype.val} ∧ ∀ (s : Set V), s ∈ c → s ⊆ ub

tactic: exact sUnion_subset fun x xc => (hc xc).1
state_before: case refine'_1
ι : Type u'
ι' : Type ?u.1258140
R : Type ?u.1258143
K : Type u_1
M : Type ?u.1258149
M' : Type ?u.1258152
M'' : Type ?u.1258155
V : Type u
V' : Type ?u.1258160
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 K Subtype.val
hst : s ⊆ t
c : Set (Set V)
hc : c ⊆ {b | b ⊆ t ∧ LinearIndependent K Subtype.val}
cc : IsChain (fun x x_1 => x ⊆ x_1) c
_c0 : Set.Nonempty c
⊢ ⋃₀ c ⊆ t

tactic: exact linearIndependent_sUnion_of_directed cc.directedOn fun x xc => (hc xc).2
state_before: case refine'_2
ι : Type u'
ι' : Type ?u.1258140
R : Type ?u.1258143
K : Type u_1
M : Type ?u.1258149
M' : Type ?u.1258152
M'' : Type ?u.1258155
V : Type u
V' : Type ?u.1258160
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 K Subtype.val
hst : s ⊆ t
c : Set (Set V)
hc : c ⊆ {b | b ⊆ t ∧ LinearIndependent K Subtype.val}
cc : IsChain (fun x x_1 => x ⊆ x_1) c
_c0 : Set.Nonempty c
⊢ LinearIndependent K Subtype.val

tactic: exact subset_sUnion_of_mem
state_before: case refine'_3
ι : Type u'
ι' : Type ?u.1258140
R : Type ?u.1258143
K : Type u_1
M : Type ?u.1258149
M' : Type ?u.1258152
M'' : Type ?u.1258155
V : Type u
V' : Type ?u.1258160
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 K Subtype.val
hst : s ⊆ t
c : Set (Set V)
hc : c ⊆ {b | b ⊆ t ∧ LinearIndependent K Subtype.val}
cc : IsChain (fun x x_1 => x ⊆ x_1) c
_c0 : Set.Nonempty c
x : Set V
⊢ x ∈ c → x ⊆ ⋃₀ c

tactic: refine' ⟨b, bt, sb, fun x xt => _, bi⟩
state_before: case intro.intro.intro.intro
ι : Type u'
ι' : Type ?u.1258140
R : Type ?u.1258143
K : Type u_1
M : Type ?u.1258149
M' : Type ?u.1258152
M'' : Type ?u.1258155
V : Type u
V' : Type ?u.1258160
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 K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent K Subtype.val
sb : s ⊆ b
h : ∀ (a : Set V), a ∈ {b | b ⊆ t ∧ LinearIndependent K Subtype.val} → b ⊆ a → a = b
⊢ ∃ b x, s ⊆ b ∧ t ⊆ ↑(span K b) ∧ LinearIndependent K Subtype.val

tactic: by_contra hn
state_before: case intro.intro.intro.intro
ι : Type u'
ι' : Type ?u.1258140
R : Type ?u.1258143
K : Type u_1
M : Type ?u.1258149
M' : Type ?u.1258152
M'' : Type ?u.1258155
V : Type u
V' : Type ?u.1258160
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 K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent K Subtype.val
sb : s ⊆ b
h : ∀ (a : Set V), a ∈ {b | b ⊆ t ∧ LinearIndependent K Subtype.val} → b ⊆ a → a = b
x : V
xt : x ∈ t
⊢ x ∈ ↑(span K b)

tactic: apply hn
state_before: case intro.intro.intro.intro
ι : Type u'
ι' : Type ?u.1258140
R : Type ?u.1258143
K : Type u_1
M : Type ?u.1258149
M' : Type ?u.1258152
M'' : Type ?u.1258155
V : Type u
V' : Type ?u.1258160
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 K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent K Subtype.val
sb : s ⊆ b
h : ∀ (a : Set V), a ∈ {b | b ⊆ t ∧ LinearIndependent K Subtype.val} → b ⊆ a → a = b
x : V
xt : x ∈ t
hn : ¬x ∈ ↑(span K b)
⊢ False

tactic: rw [← h _ ⟨insert_subset.2 ⟨xt, bt⟩, bi.insert hn⟩ (subset_insert _ _)]
state_before: case intro.intro.intro.intro
ι : Type u'
ι' : Type ?u.1258140
R : Type ?u.1258143
K : Type u_1
M : Type ?u.1258149
M' : Type ?u.1258152
M'' : Type ?u.1258155
V : Type u
V' : Type ?u.1258160
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 K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent K Subtype.val
sb : s ⊆ b
h : ∀ (a : Set V), a ∈ {b | b ⊆ t ∧ LinearIndependent K Subtype.val} → b ⊆ a → a = b
x : V
xt : x ∈ t
hn : ¬x ∈ ↑(span K b)
⊢ x ∈ ↑(span K b)

tactic: exact subset_span (mem_insert _ _)
state_before: case intro.intro.intro.intro
ι : Type u'
ι' : Type ?u.1258140
R : Type ?u.1258143
K : Type u_1
M : Type ?u.1258149
M' : Type ?u.1258152
M'' : Type ?u.1258155
V : Type u
V' : Type ?u.1258160
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 K Subtype.val
hst : s ⊆ t
b : Set V
bt : b ⊆ t
bi : LinearIndependent K Subtype.val
sb : s ⊆ b
h : ∀ (a : Set V), a ∈ {b | b ⊆ t ∧ LinearIndependent K Subtype.val} → b ⊆ a → a = b
x : V
xt : x ∈ t
hn : ¬x ∈ ↑(span K b)
⊢ x ∈ ↑(span K (insert x b))