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

State before:
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
⊢ (C.extension e).Flat F ↔ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
Tactic:
rw [flat_iff_cl_self]
State after:
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
⊢ (C.extension e).cl F = F ↔ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C

State before:
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
⊢ (C.extension e).cl F = F ↔ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
Tactic:
refine' ⟨fun cl_eq_self ↦ _, fun cl_eq_self ↦ _⟩
State after:
case refine'_1
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C

case refine'_2
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
⊢ (C.extension e).cl F = F

State before:
case refine'_2
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
⊢ (C.extension e).cl F = F
Tactic:
sorry
State after:
no goals

State before:
case refine'_1
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
Tactic:
obtain (e_mem | e_not_mem) := em (e ∈ F ∧ F \ {e} ∈ C)
State after:
case refine'_1.inl
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_mem : e ∈ F ∧ F \ {e} ∈ C
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C

case refine'_1.inr
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C

State before:
case refine'_1.inr
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
Tactic:
have M_eq : (C.extension e) ↾ M.E = M
State after:
case M_eq
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
⊢ C.extension e ↾ M.E = M

case refine'_1.inr
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C

State before:
case refine'_1.inr
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
Tactic:
obtain (e_not_mem | f_not_mem) := not_and_or.1 e_not_mem
State after:
case refine'_1.inr.inl
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C

case refine'_1.inr.inr
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
f_not_mem : F \ {e} ∉ C
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C

State before:
case refine'_1.inr.inr
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
f_not_mem : F \ {e} ∉ C
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
Tactic:
have e_nF : e ∉ F
State after:
case e_nF
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
f_not_mem : F \ {e} ∉ C
⊢ e ∉ F

case refine'_1.inr.inr
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
f_not_mem : F \ {e} ∉ C
e_nF : e ∉ F
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C

State before:
case refine'_1.inl
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_mem : e ∈ F ∧ F \ {e} ∈ C
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
Tactic:
exact Or.inr e_mem
State after:
no goals

State before:
case M_eq
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
⊢ C.extension e ↾ M.E = M
Tactic:
have ground_eq : M.E = (C.extension e).E \ {e}
State after:
case ground_eq
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
⊢ M.E = (C.extension e).E \ {e}

case M_eq
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
ground_eq : M.E = (C.extension e).E \ {e}
⊢ C.extension e ↾ M.E = M

State before:
case M_eq
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
ground_eq : M.E = (C.extension e).E \ {e}
⊢ C.extension e ↾ M.E = M
Tactic:
rw [ground_eq, ←delete]
State after:
case M_eq
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
ground_eq : M.E = (C.extension e).E \ {e}
⊢ (C.extension e).delete {e} = M

State before:
case M_eq
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
ground_eq : M.E = (C.extension e).E \ {e}
⊢ (C.extension e).delete {e} = M
Tactic:
exact C.extension_delete he
State after:
no goals

State before:
case ground_eq
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
⊢ M.E = (C.extension e).E \ {e}
Tactic:
rw [(C.extension_ground), insert_diff_self_of_not_mem he]
State after:
no goals

State before:
case refine'_1.inr.inl
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
Tactic:
have Fsub : F ⊆ M.E
State after:
case Fsub
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
⊢ F ⊆ M.E

case refine'_1.inr.inl
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C

State before:
case refine'_1.inr.inl
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
Tactic:
obtain ⟨I, hI⟩ := (C.extension e).exists_basis F (Fsub.trans (subset_insert _ _))
State after:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C

State before:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
Tactic:
have hI' : M.Basis I F
State after:
case hI'
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
⊢ M.Basis I F

case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C

State before:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
Tactic:
have F_flat : M.Flat F
State after:
case F_flat
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
⊢ M.Flat F

case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C

State before:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
⊢ M.Flat F ∧ F ∉ C ∨ e ∈ F ∧ F \ {e} ∈ C
Tactic:
refine' Or.inl ⟨F_flat, fun F_mem ↦ e_not_mem _⟩
State after:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
F_mem : F ∈ C
⊢ e ∈ F

State before:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
F_mem : F ∈ C
⊢ e ∈ F
Tactic:
have e_nI := not_mem_subset hI.subset e_not_mem
State after:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
F_mem : F ∈ C
e_nI : e ∉ I
⊢ e ∈ F

State before:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
F_mem : F ∈ C
e_nI : e ∉ I
⊢ e ∈ F
Tactic:
rw [←(Flat.cl_eq_iff_basis_of_indep _ hI.indep).2 hI, hI.indep.mem_cl_iff, dep_iff,
(C.extension_indep e), not_or, insert_diff_self_of_not_mem e_nI, hI'.cl_eq_cl,
C.extension_ground, insert_subset_insert_iff e_nI, not_and_or]
State after:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
F_mem : F ∈ C
e_nI : e ∉ I
⊢ (¬M.Indep (insert e I) ∧ (e ∉ insert e I \ M.E ∨ ¬(M.Indep I ∧ M.cl F ∉ C))) ∧ I ⊆ M.E ∨ e ∈ I

α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
F_mem : F ∈ C
e_nI : e ∉ I
⊢ (C.extension e).Flat F

State before:
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
F_mem : F ∈ C
e_nI : e ∉ I
⊢ (C.extension e).Flat F
Tactic:
rwa [flat_iff_cl_self]
State after:
no goals

State before:
case Fsub
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
⊢ F ⊆ M.E
Tactic:
rw [←diff_singleton_eq_self e_not_mem, diff_singleton_subset_iff, ←cl_eq_self, ←(C.extension_ground)]
State after:
case Fsub
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
⊢ (C.extension e).cl F ⊆ (C.extension e).E

State before:
case Fsub
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
⊢ (C.extension e).cl F ⊆ (C.extension e).E
Tactic:
exact cl_subset_ground _ _
State after:
no goals

State before:
case hI'
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
⊢ M.Basis I F
Tactic:
sorry
State after:
no goals

State before:
case F_flat
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
⊢ M.Flat F
Tactic:
rw [flat_iff_cl_self, ←M_eq, restrict_cl_eq _ Fsub (by simp)]
State after:
case F_flat
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
⊢ (C.extension e).cl F ∩ M.E = F

State before:
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
⊢ M.E ⊆ (C.extension e).E
Tactic:
simp
State after:
no goals

State before:
case F_flat
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
⊢ (C.extension e).cl F ∩ M.E = F
Tactic:
rw [cl_eq_self, inter_eq_self_of_subset_left Fsub]
State after:
no goals

State before:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
F_mem : F ∈ C
e_nI : e ∉ I
⊢ (¬M.Indep (insert e I) ∧ (e ∉ insert e I \ M.E ∨ ¬(M.Indep I ∧ M.cl F ∉ C))) ∧ I ⊆ M.E ∨ e ∈ I
Tactic:
refine' Or.inl ⟨⟨fun eI_ind ↦ he (eI_ind.subset_ground (mem_insert _ _)), _⟩,
hI'.left_subset_ground⟩
State after:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
F_mem : F ∈ C
e_nI : e ∉ I
⊢ e ∉ insert e I \ M.E ∨ ¬(M.Indep I ∧ M.cl F ∉ C)

State before:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
F_mem : F ∈ C
e_nI : e ∉ I
⊢ e ∉ insert e I \ M.E ∨ ¬(M.Indep I ∧ M.cl F ∉ C)
Tactic:
rw [flat_iff_cl_self.1 F_flat, not_and_or, not_not]
State after:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
F_mem : F ∈ C
e_nI : e ∉ I
⊢ e ∉ insert e I \ M.E ∨ ¬M.Indep I ∨ F ∈ C

State before:
case refine'_1.inr.inl.intro
α : Type u_1
M : Matroid α
I✝ B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem✝ : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
e_not_mem : e ∉ F
Fsub : F ⊆ M.E
I : Set α
hI : (C.extension e).Basis I F
hI' : M.Basis I F
F_flat : M.Flat F
F_mem : F ∈ C
e_nI : e ∉ I
⊢ e ∉ insert e I \ M.E ∨ ¬M.Indep I ∨ F ∈ C
Tactic:
exact Or.inr (Or.inr F_mem)
State after:
no goals

State before:
case e_nF
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
f_not_mem : F \ {e} ∉ C
⊢ e ∉ F
Tactic:
intro e_F
State after:
case e_nF
α : Type u_1
M : Matroid α
I B : Set α
Ys Xs : Set (Set α)
F : Set α
C : M.ModularCut
hC : C.Nonempty
e : α
he : e ∉ M.E
cl_eq_self : (C.extension e).cl F = F
e_not_mem : ¬(e ∈ F ∧ F \ {e} ∈ C)
M_eq : C.extension e ↾ M.E = M
f_not_mem : F \ {e} ∉ C
e_F : e ∈ F
⊢ False