Theorem: Matroid.conn_mono_left (Matroid/Connectivity.lean)

State before:
α : Type u_1
M✝ : Matroid α
B B' I I' J K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y : Set α
⊢ M.conn X' Y ≤ M.conn X Y
Tactic:
obtain ⟨I', hI'⟩ := M.exists_basis' X'
State after:
case intro
α : Type u_1
M✝ : Matroid α
B B' I I'✝ J K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y I' : Set α
hI' : M.Basis' I' X'
⊢ M.conn X' Y ≤ M.conn X Y

State before:
case intro
α : Type u_1
M✝ : Matroid α
B B' I I'✝ J K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y I' : Set α
hI' : M.Basis' I' X'
⊢ M.conn X' Y ≤ M.conn X Y
Tactic:
obtain ⟨I, hI, hII'⟩ := hI'.indep.subset_basis'_of_subset (hI'.subset.trans hX)
State after:
case intro.intro.intro
α : Type u_1
M✝ : Matroid α
B B' I✝ I'✝ J K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y I' : Set α
hI' : M.Basis' I' X'
I : Set α
hI : M.Basis' I X
hII' : I' ⊆ I
⊢ M.conn X' Y ≤ M.conn X Y

State before:
case intro.intro.intro
α : Type u_1
M✝ : Matroid α
B B' I✝ I'✝ J K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y I' : Set α
hI' : M.Basis' I' X'
I : Set α
hI : M.Basis' I X
hII' : I' ⊆ I
⊢ M.conn X' Y ≤ M.conn X Y
Tactic:
obtain ⟨J, hJ⟩ := M.exists_basis' Y
State after:
case intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
B B' I✝ I'✝ J✝ K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y I' : Set α
hI' : M.Basis' I' X'
I : Set α
hI : M.Basis' I X
hII' : I' ⊆ I
J : Set α
hJ : M.Basis' J Y
⊢ M.conn X' Y ≤ M.conn X Y

State before:
case intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
B B' I✝ I'✝ J✝ K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y I' : Set α
hI' : M.Basis' I' X'
I : Set α
hI : M.Basis' I X
hII' : I' ⊆ I
J : Set α
hJ : M.Basis' J Y
⊢ M.conn X' Y ≤ M.conn X Y
Tactic:
rw [hI'.conn_eq hJ, hI.conn_eq hJ]
State after:
case intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
B B' I✝ I'✝ J✝ K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y I' : Set α
hI' : M.Basis' I' X'
I : Set α
hI : M.Basis' I X
hII' : I' ⊆ I
J : Set α
hJ : M.Basis' J Y
⊢ (I' ∩ J).encard + (M ↾ (I' ∪ J))✶.erk ≤ (I ∩ J).encard + (M ↾ (I ∪ J))✶.erk

State before:
case intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
B B' I✝ I'✝ J✝ K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y I' : Set α
hI' : M.Basis' I' X'
I : Set α
hI : M.Basis' I X
hII' : I' ⊆ I
J : Set α
hJ : M.Basis' J Y
⊢ (I' ∩ J).encard + (M ↾ (I' ∪ J))✶.erk ≤ (I ∩ J).encard + (M ↾ (I ∪ J))✶.erk
Tactic:
refine add_le_add (encard_le_card (inter_subset_inter_left _ hII')) (Minor.erk_le ?_)
State after:
case intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
B B' I✝ I'✝ J✝ K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y I' : Set α
hI' : M.Basis' I' X'
I : Set α
hI : M.Basis' I X
hII' : I' ⊆ I
J : Set α
hJ : M.Basis' J Y
⊢ (M ↾ (I' ∪ J))✶ ≤m (M ↾ (I ∪ J))✶

State before:
case intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
B B' I✝ I'✝ J✝ K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y I' : Set α
hI' : M.Basis' I' X'
I : Set α
hI : M.Basis' I X
hII' : I' ⊆ I
J : Set α
hJ : M.Basis' J Y
⊢ (M ↾ (I' ∪ J))✶ ≤m (M ↾ (I ∪ J))✶
Tactic:
rw [dual_minor_iff]
State after:
case intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
B B' I✝ I'✝ J✝ K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y I' : Set α
hI' : M.Basis' I' X'
I : Set α
hI : M.Basis' I X
hII' : I' ⊆ I
J : Set α
hJ : M.Basis' J Y
⊢ M ↾ (I' ∪ J) ≤m M ↾ (I ∪ J)

State before:
case intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
B B' I✝ I'✝ J✝ K X Y✝ X' : Set α
M : Matroid α
hX : X' ⊆ X
Y I' : Set α
hI' : M.Basis' I' X'
I : Set α
hI : M.Basis' I X
hII' : I' ⊆ I
J : Set α
hJ : M.Basis' J Y
⊢ M ↾ (I' ∪ J) ≤m M ↾ (I ∪ J)
Tactic:
exact (Restriction.of_subset M (union_subset_union_left _ hII')).minor
State after:
no goals