Theorem: Matroid.Indep.exists_insert_of_encard_lt (Matroid/Rank.lean)

State before:
α : Type u_1
ι : Type u_2
M N : Matroid α
I✝ B X X' Y Y' Z R : Set α
n : ℕ∞
e f : α
I J : Set α
hI : M.Indep I
hJ : M.Indep J
hcard : I.encard < J.encard
⊢ ∃ e ∈ J \ I, M.Indep (insert e I)
Tactic:
have hIfin : I.Finite := encard_lt_top_iff.1 <| hcard.trans_le le_top
State after:
α : Type u_1
ι : Type u_2
M N : Matroid α
I✝ B X X' Y Y' Z R : Set α
n : ℕ∞
e f : α
I J : Set α
hI : M.Indep I
hJ : M.Indep J
hcard : I.encard < J.encard
hIfin : I.Finite
⊢ ∃ e ∈ J \ I, M.Indep (insert e I)

State before:
α : Type u_1
ι : Type u_2
M N : Matroid α
I✝ B X X' Y Y' Z R : Set α
n : ℕ∞
e f : α
I J : Set α
hI : M.Indep I
hJ : M.Indep J
hcard : I.encard < J.encard
hIfin : I.Finite
⊢ ∃ e ∈ J \ I, M.Indep (insert e I)
Tactic:
rw [← hI.er, ← hJ.er] at hcard
State after:
α : Type u_1
ι : Type u_2
M N : Matroid α
I✝ B X X' Y Y' Z R : Set α
n : ℕ∞
e f : α
I J : Set α
hI : M.Indep I
hJ : M.Indep J
hcard : M.er I < M.er J
hIfin : I.Finite
⊢ ∃ e ∈ J \ I, M.Indep (insert e I)

State before:
α : Type u_1
ι : Type u_2
M N : Matroid α
I✝ B X X' Y Y' Z R : Set α
n : ℕ∞
e f : α
I J : Set α
hI : M.Indep I
hJ : M.Indep J
hcard : M.er I < M.er J
hIfin : I.Finite
⊢ ∃ e ∈ J \ I, M.Indep (insert e I)
Tactic:
obtain ⟨e, he, hIe⟩ := er_augment hcard
State after:
case intro.intro
α : Type u_1
ι : Type u_2
M N : Matroid α
I✝ B X X' Y Y' Z R : Set α
n : ℕ∞
e✝ f : α
I J : Set α
hI : M.Indep I
hJ : M.Indep J
hcard : M.er I < M.er J
hIfin : I.Finite
e : α
he : e ∈ J \ I
hIe : M.er (insert e I) = M.er I + 1
⊢ ∃ e ∈ J \ I, M.Indep (insert e I)

State before:
case intro.intro
α : Type u_1
ι : Type u_2
M N : Matroid α
I✝ B X X' Y Y' Z R : Set α
n : ℕ∞
e✝ f : α
I J : Set α
hI : M.Indep I
hJ : M.Indep J
hcard : M.er I < M.er J
hIfin : I.Finite
e : α
he : e ∈ J \ I
hIe : M.er (insert e I) = M.er I + 1
⊢ ∃ e ∈ J \ I, M.Indep (insert e I)
Tactic:
refine ⟨e, he, ?_⟩
State after:
case intro.intro
α : Type u_1
ι : Type u_2
M N : Matroid α
I✝ B X X' Y Y' Z R : Set α
n : ℕ∞
e✝ f : α
I J : Set α
hI : M.Indep I
hJ : M.Indep J
hcard : M.er I < M.er J
hIfin : I.Finite
e : α
he : e ∈ J \ I
hIe : M.er (insert e I) = M.er I + 1
⊢ M.Indep (insert e I)

State before:
case intro.intro
α : Type u_1
ι : Type u_2
M N : Matroid α
I✝ B X X' Y Y' Z R : Set α
n : ℕ∞
e✝ f : α
I J : Set α
hI : M.Indep I
hJ : M.Indep J
hcard : M.er I < M.er J
hIfin : I.Finite
e : α
he : e ∈ J \ I
hIe : M.er (insert e I) = M.er I + 1
⊢ M.Indep (insert e I)
Tactic:
rw [indep_iff_er_eq_encard_of_finite (hIfin.insert e), hIe, encard_insert_of_not_mem he.2,
  hI.er]
State after:
no goals