Theorem: Matroid.ModularCut.extension_cl_eq_of_not_mem (Matroid/Old/_ModularCut.lean)

State before:
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
⊢ (C.extension e).cl X = M.cl X
Tactic:
obtain ⟨I, hI⟩ := M.exists_basis' X
State after:
case intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
⊢ (C.extension e).cl X = M.cl X

State before:
case intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
⊢ (C.extension e).cl X = M.cl X
Tactic:
have ex_basis : (extension C e).Basis' I X
State after:
case ex_basis
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
⊢ (C.extension e).Basis' I X

case intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
⊢ (C.extension e).cl X = M.cl X

State before:
case intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
⊢ (C.extension e).cl X = M.cl X
Tactic:
rw [←hI.cl_eq_cl, ←ex_basis.cl_eq_cl, ext_iff]
State after:
case intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
⊢ ∀ (x : α), x ∈ (C.extension e).cl I ↔ x ∈ M.cl I

State before:
case intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
⊢ ∀ (x : α), x ∈ (C.extension e).cl I ↔ x ∈ M.cl I
Tactic:
refine' fun x ↦ ⟨fun x_mem ↦ _, fun (x_mem) ↦ _⟩
State after:
case intro.refine'_1
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ (C.extension e).cl I
⊢ x ∈ M.cl I

case intro.refine'_2
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ M.cl I
⊢ x ∈ (C.extension e).cl I

State before:
case intro.refine'_2
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ M.cl I
⊢ x ∈ (C.extension e).cl I
Tactic:
rw [ex_basis.indep.mem_cl_iff]
State after:
case intro.refine'_2
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ M.cl I
⊢ (C.extension e).Dep (insert x I) ∨ x ∈ I

State before:
case intro.refine'_2
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ M.cl I
⊢ (C.extension e).Dep (insert x I) ∨ x ∈ I
Tactic:
obtain (x_dep | x_mem) := hI.indep.mem_cl_iff.1 x_mem
State after:
case intro.refine'_2.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ M.cl I
x_dep : M.Dep (insert x I)
⊢ (C.extension e).Dep (insert x I) ∨ x ∈ I

case intro.refine'_2.inr
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem✝ : x ∈ M.cl I
x_mem : x ∈ I
⊢ (C.extension e).Dep (insert x I) ∨ x ∈ I

State before:
case intro.refine'_2.inr
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem✝ : x ∈ M.cl I
x_mem : x ∈ I
⊢ (C.extension e).Dep (insert x I) ∨ x ∈ I
Tactic:
exact Or.inr x_mem
State after:
no goals

State before:
case ex_basis
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
⊢ (C.extension e).Basis' I X
Tactic:
rw [basis'_iff_basis_inter_ground, C.extension_ground, basis_iff, C.extension_indep,
and_iff_right (Or.inl hI.indep)]
State after:
case ex_basis
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
⊢ I ⊆ X ∩ insert e M.E ∧ ∀ (J : Set α), (C.extension e).Indep J → I ⊆ J → J ⊆ X ∩ insert e M.E → I = J

State before:
case ex_basis
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
⊢ I ⊆ X ∩ insert e M.E ∧ ∀ (J : Set α), (C.extension e).Indep J → I ⊆ J → J ⊆ X ∩ insert e M.E → I = J
Tactic:
have sub_inter:= subset_inter_iff.1 hI.basis_inter_ground.subset
State after:
case ex_basis
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
sub_inter : I ⊆ X ∧ I ⊆ M.E
⊢ I ⊆ X ∩ insert e M.E ∧ ∀ (J : Set α), (C.extension e).Indep J → I ⊆ J → J ⊆ X ∩ insert e M.E → I = J

State before:
case ex_basis
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
sub_inter : I ⊆ X ∧ I ⊆ M.E
⊢ I ⊆ X ∩ insert e M.E ∧ ∀ (J : Set α), (C.extension e).Indep J → I ⊆ J → J ⊆ X ∩ insert e M.E → I = J
Tactic:
refine' ⟨subset_inter_iff.2 ⟨sub_inter.1, sub_inter.2.trans (subset_insert _ _)⟩,
 fun J J_ind I_sub_J J_sub_X ↦ _⟩
State after:
case ex_basis
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
sub_inter : I ⊆ X ∧ I ⊆ M.E
J : Set α
J_ind : (C.extension e).Indep J
I_sub_J : I ⊆ J
J_sub_X : J ⊆ X ∩ insert e M.E
⊢ I = J

State before:
case ex_basis
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
sub_inter : I ⊆ X ∧ I ⊆ M.E
J : Set α
J_ind : (C.extension e).Indep J
I_sub_J : I ⊆ J
J_sub_X : J ⊆ X ∩ insert e M.E
⊢ I = J
Tactic:
rw [←hI.cl_eq_cl] at hX
State after:
case ex_basis
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
heX : e ∉ X
I : Set α
hX : M.cl I ∉ C
hI : M.Basis' I X
sub_inter : I ⊆ X ∧ I ⊆ M.E
J : Set α
J_ind : (C.extension e).Indep J
I_sub_J : I ⊆ J
J_sub_X : J ⊆ X ∩ insert e M.E
⊢ I = J

State before:
case ex_basis
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
heX : e ∉ X
I : Set α
hX : M.cl I ∉ C
hI : M.Basis' I X
sub_inter : I ⊆ X ∧ I ⊆ M.E
J : Set α
J_ind : (C.extension e).Indep J
I_sub_J : I ⊆ J
J_sub_X : J ⊆ X ∩ insert e M.E
⊢ I = J
Tactic:
rw [basis'_iff_basis_inter_ground, basis_iff] at hI
State after:
case ex_basis
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
heX : e ∉ X
I : Set α
hX : M.cl I ∉ C
hI : M.Indep I ∧ I ⊆ X ∩ M.E ∧ ∀ (J : Set α), M.Indep J → I ⊆ J → J ⊆ X ∩ M.E → I = J
sub_inter : I ⊆ X ∧ I ⊆ M.E
J : Set α
J_ind : (C.extension e).Indep J
I_sub_J : I ⊆ J
J_sub_X : J ⊆ X ∩ insert e M.E
⊢ I = J

State before:
case ex_basis
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
heX : e ∉ X
I : Set α
hX : M.cl I ∉ C
hI : M.Indep I ∧ I ⊆ X ∩ M.E ∧ ∀ (J : Set α), M.Indep J → I ⊆ J → J ⊆ X ∩ M.E → I = J
sub_inter : I ⊆ X ∧ I ⊆ M.E
J : Set α
J_ind : (C.extension e).Indep J
I_sub_J : I ⊆ J
J_sub_X : J ⊆ X ∩ insert e M.E
⊢ I = J
Tactic:
obtain (M_ind | ⟨e_mem, _, _⟩) := (C.extension_indep e).1 J_ind
State after:
case ex_basis.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
heX : e ∉ X
I : Set α
hX : M.cl I ∉ C
hI : M.Indep I ∧ I ⊆ X ∩ M.E ∧ ∀ (J : Set α), M.Indep J → I ⊆ J → J ⊆ X ∩ M.E → I = J
sub_inter : I ⊆ X ∧ I ⊆ M.E
J : Set α
J_ind : (C.extension e).Indep J
I_sub_J : I ⊆ J
J_sub_X : J ⊆ X ∩ insert e M.E
M_ind : M.Indep J
⊢ I = J

case ex_basis.inr.intro.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
heX : e ∉ X
I : Set α
hX : M.cl I ∉ C
hI : M.Indep I ∧ I ⊆ X ∩ M.E ∧ ∀ (J : Set α), M.Indep J → I ⊆ J → J ⊆ X ∩ M.E → I = J
sub_inter : I ⊆ X ∧ I ⊆ M.E
J : Set α
J_ind : (C.extension e).Indep J
I_sub_J : I ⊆ J
J_sub_X : J ⊆ X ∩ insert e M.E
e_mem : e ∈ J \ M.E
left✝ : M.Indep (J \ {e})
right✝ : M.cl (J \ {e}) ∉ C
⊢ I = J

State before:
case ex_basis.inr.intro.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
heX : e ∉ X
I : Set α
hX : M.cl I ∉ C
hI : M.Indep I ∧ I ⊆ X ∩ M.E ∧ ∀ (J : Set α), M.Indep J → I ⊆ J → J ⊆ X ∩ M.E → I = J
sub_inter : I ⊆ X ∧ I ⊆ M.E
J : Set α
J_ind : (C.extension e).Indep J
I_sub_J : I ⊆ J
J_sub_X : J ⊆ X ∩ insert e M.E
e_mem : e ∈ J \ M.E
left✝ : M.Indep (J \ {e})
right✝ : M.cl (J \ {e}) ∉ C
⊢ I = J
Tactic:
exact absurd (J_sub_X.trans inter_subset_left e_mem.1) heX
State after:
no goals

State before:
case ex_basis.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
heX : e ∉ X
I : Set α
hX : M.cl I ∉ C
hI : M.Indep I ∧ I ⊆ X ∩ M.E ∧ ∀ (J : Set α), M.Indep J → I ⊆ J → J ⊆ X ∩ M.E → I = J
sub_inter : I ⊆ X ∧ I ⊆ M.E
J : Set α
J_ind : (C.extension e).Indep J
I_sub_J : I ⊆ J
J_sub_X : J ⊆ X ∩ insert e M.E
M_ind : M.Indep J
⊢ I = J
Tactic:
apply hI.2.2 _ M_ind I_sub_J
State after:
case ex_basis.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
heX : e ∉ X
I : Set α
hX : M.cl I ∉ C
hI : M.Indep I ∧ I ⊆ X ∩ M.E ∧ ∀ (J : Set α), M.Indep J → I ⊆ J → J ⊆ X ∩ M.E → I = J
sub_inter : I ⊆ X ∧ I ⊆ M.E
J : Set α
J_ind : (C.extension e).Indep J
I_sub_J : I ⊆ J
J_sub_X : J ⊆ X ∩ insert e M.E
M_ind : M.Indep J
⊢ J ⊆ X ∩ M.E

State before:
case ex_basis.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
heX : e ∉ X
I : Set α
hX : M.cl I ∉ C
hI : M.Indep I ∧ I ⊆ X ∩ M.E ∧ ∀ (J : Set α), M.Indep J → I ⊆ J → J ⊆ X ∩ M.E → I = J
sub_inter : I ⊆ X ∧ I ⊆ M.E
J : Set α
J_ind : (C.extension e).Indep J
I_sub_J : I ⊆ J
J_sub_X : J ⊆ X ∩ insert e M.E
M_ind : M.Indep J
⊢ J ⊆ X ∩ M.E
Tactic:
exact fun j j_mem ↦ ⟨(J_sub_X j_mem).1, M_ind.subset_ground j_mem⟩
State after:
no goals

State before:
case intro.refine'_1
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ (C.extension e).cl I
⊢ x ∈ M.cl I
Tactic:
obtain (x_dep | x_mem) := ex_basis.indep.mem_cl_iff.1 x_mem
State after:
case intro.refine'_1.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ (C.extension e).cl I
x_dep : (C.extension e).Dep (insert x I)
⊢ x ∈ M.cl I

case intro.refine'_1.inr
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem✝ : x ∈ (C.extension e).cl I
x_mem : x ∈ I
⊢ x ∈ M.cl I

State before:
case intro.refine'_1.inr
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem✝ : x ∈ (C.extension e).cl I
x_mem : x ∈ I
⊢ x ∈ M.cl I
Tactic:
exact (M.subset_cl _ hI.indep.subset_ground x_mem)
State after:
no goals

State before:
case intro.refine'_1.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ (C.extension e).cl I
x_dep : (C.extension e).Dep (insert x I)
⊢ x ∈ M.cl I
Tactic:
have x_ground:= x_dep.subset_ground
State after:
case intro.refine'_1.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ (C.extension e).cl I
x_dep : (C.extension e).Dep (insert x I)
x_ground : insert x I ⊆ (C.extension e).E
⊢ x ∈ M.cl I

State before:
case intro.refine'_1.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ (C.extension e).cl I
x_dep : (C.extension e).Dep (insert x I)
x_ground : insert x I ⊆ (C.extension e).E
⊢ x ∈ M.cl I
Tactic:
obtain (rfl | ne) := eq_or_ne x e
State after:
case intro.refine'_1.inl.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
X : Set α
C : M.ModularCut
hX : M.cl X ∉ C
I : Set α
hI : M.Basis' I X
x : α
he : x ∉ M.E
heX : x ∉ X
ex_basis : (C.extension x).Basis' I X
x_mem : x ∈ (C.extension x).cl I
x_dep : (C.extension x).Dep (insert x I)
x_ground : insert x I ⊆ (C.extension x).E
⊢ x ∈ M.cl I

case intro.refine'_1.inl.inr
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ (C.extension e).cl I
x_dep : (C.extension e).Dep (insert x I)
x_ground : insert x I ⊆ (C.extension e).E
ne : x ≠ e
⊢ x ∈ M.cl I

State before:
case intro.refine'_1.inl.inr
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ (C.extension e).cl I
x_dep : (C.extension e).Dep (insert x I)
x_ground : insert x I ⊆ (C.extension e).E
ne : x ≠ e
⊢ x ∈ M.cl I
Tactic:
rw [hI.indep.mem_cl_iff, ←(@ModularCut.extension_delete _ M C e he), deleteElem,
delete_dep_iff, disjoint_singleton_right]
State after:
case intro.refine'_1.inl.inr
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ (C.extension e).cl I
x_dep : (C.extension e).Dep (insert x I)
x_ground : insert x I ⊆ (C.extension e).E
ne : x ≠ e
⊢ (C.extension e).Dep (insert x I) ∧ e ∉ insert x I ∨ x ∈ I

State before:
case intro.refine'_1.inl.inr
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ (C.extension e).cl I
x_dep : (C.extension e).Dep (insert x I)
x_ground : insert x I ⊆ (C.extension e).E
ne : x ≠ e
⊢ (C.extension e).Dep (insert x I) ∧ e ∉ insert x I ∨ x ∈ I
Tactic:
refine' Or.inl ⟨x_dep, fun e_mem ↦ heX (hI.subset (mem_of_mem_insert_of_ne e_mem ne.symm))⟩
State after:
no goals

State before:
case intro.refine'_1.inl.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
X : Set α
C : M.ModularCut
hX : M.cl X ∉ C
I : Set α
hI : M.Basis' I X
x : α
he : x ∉ M.E
heX : x ∉ X
ex_basis : (C.extension x).Basis' I X
x_mem : x ∈ (C.extension x).cl I
x_dep : (C.extension x).Dep (insert x I)
x_ground : insert x I ⊆ (C.extension x).E
⊢ x ∈ M.cl I
Tactic:
rw [dep_iff, (C.extension_indep x), not_or] at x_dep
State after:
case intro.refine'_1.inl.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
X : Set α
C : M.ModularCut
hX : M.cl X ∉ C
I : Set α
hI : M.Basis' I X
x : α
he : x ∉ M.E
heX : x ∉ X
ex_basis : (C.extension x).Basis' I X
x_mem : x ∈ (C.extension x).cl I
x_dep :
  (¬M.Indep (insert x I) ∧ ¬(x ∈ insert x I \ M.E ∧ M.Indep (insert x I \ {x}) ∧ M.cl (insert x I \ {x}) ∉ C)) ∧
    insert x I ⊆ (C.extension x).E
x_ground : insert x I ⊆ (C.extension x).E
⊢ x ∈ M.cl I

State before:
case intro.refine'_1.inl.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
X : Set α
C : M.ModularCut
hX : M.cl X ∉ C
I : Set α
hI : M.Basis' I X
x : α
he : x ∉ M.E
heX : x ∉ X
ex_basis : (C.extension x).Basis' I X
x_mem : x ∈ (C.extension x).cl I
x_dep :
  (¬M.Indep (insert x I) ∧ ¬(x ∈ insert x I \ M.E ∧ M.Indep (insert x I \ {x}) ∧ M.cl (insert x I \ {x}) ∉ C)) ∧
    insert x I ⊆ (C.extension x).E
x_ground : insert x I ⊆ (C.extension x).E
⊢ x ∈ M.cl I
Tactic:
apply absurd _ x_dep.1.2
State after:
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
X : Set α
C : M.ModularCut
hX : M.cl X ∉ C
I : Set α
hI : M.Basis' I X
x : α
he : x ∉ M.E
heX : x ∉ X
ex_basis : (C.extension x).Basis' I X
x_mem : x ∈ (C.extension x).cl I
x_dep :
  (¬M.Indep (insert x I) ∧ ¬(x ∈ insert x I \ M.E ∧ M.Indep (insert x I \ {x}) ∧ M.cl (insert x I \ {x}) ∉ C)) ∧
    insert x I ⊆ (C.extension x).E
x_ground : insert x I ⊆ (C.extension x).E
⊢ x ∈ insert x I \ M.E ∧ M.Indep (insert x I \ {x}) ∧ M.cl (insert x I \ {x}) ∉ C

State before:
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
X : Set α
C : M.ModularCut
hX : M.cl X ∉ C
I : Set α
hI : M.Basis' I X
x : α
he : x ∉ M.E
heX : x ∉ X
ex_basis : (C.extension x).Basis' I X
x_mem : x ∈ (C.extension x).cl I
x_dep :
  (¬M.Indep (insert x I) ∧ ¬(x ∈ insert x I \ M.E ∧ M.Indep (insert x I \ {x}) ∧ M.cl (insert x I \ {x}) ∉ C)) ∧
    insert x I ⊆ (C.extension x).E
x_ground : insert x I ⊆ (C.extension x).E
⊢ x ∈ insert x I \ M.E ∧ M.Indep (insert x I \ {x}) ∧ M.cl (insert x I \ {x}) ∉ C
Tactic:
rw [insert_diff_self_of_not_mem (not_mem_subset hI.indep.subset_ground he), hI.cl_eq_cl]
State after:
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
X : Set α
C : M.ModularCut
hX : M.cl X ∉ C
I : Set α
hI : M.Basis' I X
x : α
he : x ∉ M.E
heX : x ∉ X
ex_basis : (C.extension x).Basis' I X
x_mem : x ∈ (C.extension x).cl I
x_dep :
  (¬M.Indep (insert x I) ∧ ¬(x ∈ insert x I \ M.E ∧ M.Indep (insert x I \ {x}) ∧ M.cl (insert x I \ {x}) ∉ C)) ∧
    insert x I ⊆ (C.extension x).E
x_ground : insert x I ⊆ (C.extension x).E
⊢ x ∈ insert x I \ M.E ∧ M.Indep I ∧ M.cl X ∉ C

State before:
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
X : Set α
C : M.ModularCut
hX : M.cl X ∉ C
I : Set α
hI : M.Basis' I X
x : α
he : x ∉ M.E
heX : x ∉ X
ex_basis : (C.extension x).Basis' I X
x_mem : x ∈ (C.extension x).cl I
x_dep :
  (¬M.Indep (insert x I) ∧ ¬(x ∈ insert x I \ M.E ∧ M.Indep (insert x I \ {x}) ∧ M.cl (insert x I \ {x}) ∉ C)) ∧
    insert x I ⊆ (C.extension x).E
x_ground : insert x I ⊆ (C.extension x).E
⊢ x ∈ insert x I \ M.E ∧ M.Indep I ∧ M.cl X ∉ C
Tactic:
refine' ⟨⟨mem_insert _ _, he⟩, hI.indep, hX⟩
State after:
no goals

State before:
case intro.refine'_2.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ M.cl I
x_dep : M.Dep (insert x I)
⊢ (C.extension e).Dep (insert x I) ∨ x ∈ I
Tactic:
have del_dep : ((C.extension e) ＼ e).Dep (insert x I)
State after:
case del_dep
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ M.cl I
x_dep : M.Dep (insert x I)
⊢ (C.extension e ＼ e).Dep (insert x I)

case intro.refine'_2.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ M.cl I
x_dep : M.Dep (insert x I)
del_dep : (C.extension e ＼ e).Dep (insert x I)
⊢ (C.extension e).Dep (insert x I) ∨ x ∈ I

State before:
case intro.refine'_2.inl
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ M.cl I
x_dep : M.Dep (insert x I)
del_dep : (C.extension e ＼ e).Dep (insert x I)
⊢ (C.extension e).Dep (insert x I) ∨ x ∈ I
Tactic:
exact Or.inl (delete_dep_iff.1 del_dep).1
State after:
no goals

State before:
case del_dep
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
e : α
X : Set α
C : M.ModularCut
he : e ∉ M.E
hX : M.cl X ∉ C
heX : e ∉ X
I : Set α
hI : M.Basis' I X
ex_basis : (C.extension e).Basis' I X
x : α
x_mem : x ∈ M.cl I
x_dep : M.Dep (insert x I)
⊢ (C.extension e ＼ e).Dep (insert x I)
Tactic:
rwa [C.extension_delete he]
State after:
no goals