Theorem: Matroid.modularSet_iff_cl (Matroid/Modular.lean)

State before:
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I J X✝ X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
⊢ M.ModularSet X ↔ ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
Tactic:
rw [modularSet_iff]
State after:
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I J X✝ X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
⊢ (∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F) ↔
    ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)

State before:
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I J X✝ X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
⊢ (∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F) ↔
    ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
Tactic:
refine ⟨fun h F hF ↦ ?_, fun h F hF ↦ ?_⟩
State after:
case refine_1
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I J X✝ X' Y Y' F✝ : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
h : ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
F : Set α
hF : M.Flat F
⊢ ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)

case refine_2
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I J X✝ X' Y Y' F✝ : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
h : ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
F : Set α
hF : M.Flat F
⊢ ∃ I, M.Indep I ∧ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F

State before:
case refine_2
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I J X✝ X' Y Y' F✝ : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
h : ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
F : Set α
hF : M.Flat F
⊢ ∃ I, M.Indep I ∧ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
Tactic:
obtain ⟨I, hI, hI'⟩ := h hF
State after:
case refine_2.intro.intro
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I✝ J X✝ X' Y Y' F✝ : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
h : ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
F : Set α
hF : M.Flat F
I : Set α
hI : M.Indep I
hI' : X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
⊢ ∃ I, M.Indep I ∧ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F

State before:
case refine_2.intro.intro
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I✝ J X✝ X' Y Y' F✝ : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
h : ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
F : Set α
hF : M.Flat F
I : Set α
hI : M.Indep I
hI' : X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
⊢ ∃ I, M.Indep I ∧ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
Tactic:
refine ⟨I, hI, ?_⟩
State after:
case refine_2.intro.intro
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I✝ J X✝ X' Y Y' F✝ : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
h : ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
F : Set α
hF : M.Flat F
I : Set α
hI : M.Indep I
hI' : X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
⊢ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F

State before:
case refine_2.intro.intro
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I✝ J X✝ X' Y Y' F✝ : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
h : ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
F : Set α
hF : M.Flat F
I : Set α
hI : M.Indep I
hI' : X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
⊢ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
Tactic:
rwa [hI.inter_basis_cl_iff_subset_cl_inter, hI.inter_basis_cl_iff_subset_cl_inter]
State after:
no goals

State before:
case refine_1
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I J X✝ X' Y Y' F✝ : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
h : ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
F : Set α
hF : M.Flat F
⊢ ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
Tactic:
obtain ⟨I, hI, hI'⟩ := h hF
State after:
case refine_1.intro.intro
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I✝ J X✝ X' Y Y' F✝ : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
h : ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
F : Set α
hF : M.Flat F
I : Set α
hI : M.Indep I
hI' : M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
⊢ ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)

State before:
case refine_1.intro.intro
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I✝ J X✝ X' Y Y' F✝ : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
h : ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
F : Set α
hF : M.Flat F
I : Set α
hI : M.Indep I
hI' : M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
⊢ ∃ I, M.Indep I ∧ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
Tactic:
refine ⟨I, hI, ?_⟩
State after:
case refine_1.intro.intro
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I✝ J X✝ X' Y Y' F✝ : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
h : ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
F : Set α
hF : M.Flat F
I : Set α
hI : M.Indep I
hI' : M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
⊢ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)

State before:
case refine_1.intro.intro
ι : Type u_1
α : Type u_2
M✝ : Matroid α
B I✝ J X✝ X' Y Y' F✝ : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
M : Matroid α
X : Set α
h : ∀ ⦃F : Set α⦄, M.Flat F → ∃ I, M.Indep I ∧ M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
F : Set α
hF : M.Flat F
I : Set α
hI : M.Indep I
hI' : M.Basis (X ∩ I) X ∧ M.Basis (F ∩ I) F
⊢ X ⊆ M.cl (X ∩ I) ∧ F ⊆ M.cl (F ∩ I)
Tactic:
rwa [← hI.inter_basis_cl_iff_subset_cl_inter, ← hI.inter_basis_cl_iff_subset_cl_inter]
State after:
no goals