Theorem: Matroid.restrictIndepMatroid_Indep
File: Mathlib/Data/Matroid/Restrict.lean

Proof steps:
state_before: α : Type u_1
M✝ : Matroid α
R✝ I J X Y : Set α
M : Matroid α
R : Set α
⊢ ∀ ⦃I B : Set α⦄,
    (fun I => M.Indep I ∧ I ⊆ R) I →
      I ∉ maximals (fun x x_1 => x ⊆ x_1) {I | (fun I => M.Indep I ∧ I ⊆ R) I} →
        B ∈ maximals (fun x x_1 => x ⊆ x_1) {I | (fun I => M.Indep I ∧ I ⊆ R) I} →
          ∃ x ∈ B \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I I' : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis' I R
hI' : M.Basis' I' R
⊢ ∃ x ∈ I' \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: rintro I I' ⟨hI, hIY⟩ (hIn : ¬ M.Basis' I R) (hI' : M.Basis' I' R)
state_before: case intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I I' : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis' I R
hI' : M.Basis' I' R
⊢ ∃ x ∈ I' \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I I' : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
hI' : M.Basis I' (R ∩ M.E)
⊢ ∃ x ∈ I' \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: rw [basis'_iff_basis_inter_ground] at hIn hI'
state_before: case intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I I' : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
hI' : M.Basis I' (R ∩ M.E)
⊢ ∃ x ∈ I' \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
hI' : M.Basis (B' ∩ (R ∩ M.E)) (R ∩ M.E)
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: obtain ⟨B', hB', rfl⟩ := hI'.exists_base
state_before: case intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
hI' : M.Basis (B' ∩ (R ∩ M.E)) (R ∩ M.E)
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
hI' : M.Basis (B' ∩ (R ∩ M.E)) (R ∩ M.E)
B : Set α
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: obtain ⟨B, hB, hIB, hBIB'⟩ := hI.exists_base_subset_union_base hB'
state_before: case intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
hI' : M.Basis (B' ∩ (R ∩ M.E)) (R ∩ M.E)
B : Set α
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
hI' : M✶.Basis (M.E \ (B' ∪ R ∩ M.E)) (M.E \ (R ∩ M.E))
B : Set α
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: rw [hB'.inter_basis_iff_compl_inter_basis_dual, diff_inter_diff] at hI'
state_before: case intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
hI' : M✶.Basis (M.E \ (B' ∪ R ∩ M.E)) (M.E \ (R ∩ M.E))
B : Set α
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
hI' : M✶.Basis (M.E \ (B' ∪ R ∩ M.E)) (M.E \ (R ∩ M.E))
B : Set α
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: have hss : M.E \ (B' ∪ (R ∩ M.E)) ⊆ M.E \ (B ∪ (R ∩ M.E)) := by
      apply diff_subset_diff_right
      rw [union_subset_iff, and_iff_left subset_union_right, union_comm]
      exact hBIB'.trans (union_subset_union_left _ (subset_inter hIY hI.subset_ground))
state_before: case intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
hI' : M✶.Basis (M.E \ (B' ∪ R ∩ M.E)) (M.E \ (R ∩ M.E))
B : Set α
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
hI' : M✶.Basis (M.E \ (B' ∪ R ∩ M.E)) (M.E \ (R ∩ M.E))
B : Set α
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: have hi : M✶.Indep (M.E \ (B ∪ (R ∩ M.E))) := by
      rw [dual_indep_iff_exists]
      exact ⟨B, hB, disjoint_of_subset_right subset_union_left disjoint_sdiff_left⟩
state_before: case intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
hI' : M✶.Basis (M.E \ (B' ∪ R ∩ M.E)) (M.E \ (R ∩ M.E))
B : Set α
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
hI' : M✶.Basis (M.E \ (B' ∪ R ∩ M.E)) (M.E \ (R ∩ M.E))
B : Set α
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
h_eq : M.E \ (B' ∪ R ∩ M.E) = M.E \ (B ∪ R ∩ M.E)
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: have h_eq := hI'.eq_of_subset_indep hi hss
      (diff_subset_diff_right subset_union_right)
state_before: case intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
hI' : M✶.Basis (M.E \ (B' ∪ R ∩ M.E)) (M.E \ (R ∩ M.E))
B : Set α
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
h_eq : M.E \ (B' ∪ R ∩ M.E) = M.E \ (B ∪ R ∩ M.E)
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
B : Set α
hI' : M.Basis (B ∩ (R ∩ M.E)) (R ∩ M.E)
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
h_eq : M.E \ (B' ∪ R ∩ M.E) = M.E \ (B ∪ R ∩ M.E)
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: rw [h_eq, ← diff_inter_diff, ← hB.inter_basis_iff_compl_inter_basis_dual] at hI'
state_before: case intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
B : Set α
hI' : M.Basis (B ∩ (R ∩ M.E)) (R ∩ M.E)
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
h_eq : M.E \ (B' ∪ R ∩ M.E) = M.E \ (B ∪ R ∩ M.E)
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J✝ X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
B : Set α
hI' : M.Basis (B ∩ (R ∩ M.E)) (R ∩ M.E)
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
h_eq : M.E \ (B' ∪ R ∩ M.E) = M.E \ (B ∪ R ∩ M.E)
J : Set α
hJ : M.Basis J (B ∩ (R ∩ M.E))
hIJ : I ⊆ J
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: obtain ⟨J, hJ, hIJ⟩ := hI.subset_basis_of_subset
      (subset_inter hIB (subset_inter hIY hI.subset_ground))
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J✝ X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
B : Set α
hI' : M.Basis (B ∩ (R ∩ M.E)) (R ∩ M.E)
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
h_eq : M.E \ (B' ∪ R ∩ M.E) = M.E \ (B ∪ R ∩ M.E)
J : Set α
hJ : M.Basis J (B ∩ (R ∩ M.E))
hIJ : I ⊆ J
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
B : Set α
hI' : M.Basis (B ∩ (R ∩ M.E)) (R ∩ M.E)
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
h_eq : M.E \ (B' ∪ R ∩ M.E) = M.E \ (B ∪ R ∩ M.E)
hJ : M.Basis (B ∩ (R ∩ M.E)) (B ∩ (R ∩ M.E))
hIJ : I ⊆ B ∩ (R ∩ M.E)
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: obtain rfl := hI'.indep.eq_of_basis hJ
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
B : Set α
hI' : M.Basis (B ∩ (R ∩ M.E)) (R ∩ M.E)
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
h_eq : M.E \ (B' ∪ R ∩ M.E) = M.E \ (B ∪ R ∩ M.E)
hJ : M.Basis (B ∩ (R ∩ M.E)) (B ∩ (R ∩ M.E))
hIJ : I ⊆ B ∩ (R ∩ M.E)
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
B : Set α
hI' : M.Basis (B ∩ (R ∩ M.E)) (R ∩ M.E)
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
h_eq : M.E \ (B' ∪ R ∩ M.E) = M.E \ (B ∪ R ∩ M.E)
hJ : M.Basis (B ∩ (R ∩ M.E)) (B ∩ (R ∩ M.E))
hIJ : I ⊆ B ∩ (R ∩ M.E)
hIJ' : I ⊂ B ∩ (R ∩ M.E)
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: have hIJ' : I ⊂ B ∩ (R ∩ M.E) := hIJ.ssubset_of_ne (fun he ↦ hIn (by rwa [he]))
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
B : Set α
hI' : M.Basis (B ∩ (R ∩ M.E)) (R ∩ M.E)
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
h_eq : M.E \ (B' ∪ R ∩ M.E) = M.E \ (B ∪ R ∩ M.E)
hJ : M.Basis (B ∩ (R ∩ M.E)) (B ∩ (R ∩ M.E))
hIJ : I ⊆ B ∩ (R ∩ M.E)
hIJ' : I ⊂ B ∩ (R ∩ M.E)
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: case intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
B : Set α
hI' : M.Basis (B ∩ (R ∩ M.E)) (R ∩ M.E)
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
h_eq : M.E \ (B' ∪ R ∩ M.E) = M.E \ (B ∪ R ∩ M.E)
hJ : M.Basis (B ∩ (R ∩ M.E)) (B ∩ (R ∩ M.E))
hIJ : I ⊆ B ∩ (R ∩ M.E)
hIJ' : I ⊂ B ∩ (R ∩ M.E)
e : α
he : e ∈ B ∩ (R ∩ M.E) ∧ e ∉ I
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
tactic: obtain ⟨e, he⟩ := exists_of_ssubset hIJ'
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R I : Set α
hI : M.Indep I
hIY : I ⊆ R
hIn : ¬M.Basis I (R ∩ M.E)
B' : Set α
hB' : M.Base B'
B : Set α
hI' : M.Basis (B ∩ (R ∩ M.E)) (R ∩ M.E)
hB : M.Base B
hIB : I ⊆ B
hBIB' : B ⊆ I ∪ B'
hss : M.E \ (B' ∪ R ∩ M.E) ⊆ M.E \ (B ∪ R ∩ M.E)
hi : M✶.Indep (M.E \ (B ∪ R ∩ M.E))
h_eq : M.E \ (B' ∪ R ∩ M.E) = M.E \ (B ∪ R ∩ M.E)
hJ : M.Basis (B ∩ (R ∩ M.E)) (B ∩ (R ∩ M.E))
hIJ : I ⊆ B ∩ (R ∩ M.E)
hIJ' : I ⊂ B ∩ (R ∩ M.E)
e : α
he : e ∈ B ∩ (R ∩ M.E) ∧ e ∉ I
⊢ ∃ x ∈ (B' ∩ (R ∩ M.E)) \ I, (fun I => M.Indep I ∧ I ⊆ R) (insert x I)
state_after: no goals
tactic: exact ⟨e, ⟨⟨(hBIB' he.1.1).elim (fun h ↦ (he.2 h).elim) id,he.1.2⟩, he.2⟩,
      hI'.indep.subset (insert_subset he.1 hIJ), insert_subset he.1.2.1 hIY⟩
state_before: α : Type u_1
M✝ : Matroid α
R✝ I J X Y : Set α
M : Matroid α
R : Set α
⊢ ∀ X ⊆ R, ExistsMaximalSubsetProperty (fun I => M.Indep I ∧ I ⊆ R) X
state_after: case intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R A : Set α
hAX : A ⊆ R
I : Set α
hI : M.Indep I
right✝ : I ⊆ R
hIA : I ⊆ A
⊢ (maximals (fun x x_1 => x ⊆ x_1) {Y | (fun I => M.Indep I ∧ I ⊆ R) Y ∧ I ⊆ Y ∧ Y ⊆ A}).Nonempty
tactic: rintro A hAX I ⟨hI, _⟩ hIA
state_before: case intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J X Y : Set α
M : Matroid α
R A : Set α
hAX : A ⊆ R
I : Set α
hI : M.Indep I
right✝ : I ⊆ R
hIA : I ⊆ A
⊢ (maximals (fun x x_1 => x ⊆ x_1) {Y | (fun I => M.Indep I ∧ I ⊆ R) Y ∧ I ⊆ Y ∧ Y ⊆ A}).Nonempty
state_after: case intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J✝ X Y : Set α
M : Matroid α
R A : Set α
hAX : A ⊆ R
I : Set α
hI : M.Indep I
right✝ : I ⊆ R
hIA : I ⊆ A
J : Set α
hJ : M.Basis' J A
hIJ : I ⊆ J
⊢ (maximals (fun x x_1 => x ⊆ x_1) {Y | (fun I => M.Indep I ∧ I ⊆ R) Y ∧ I ⊆ Y ∧ Y ⊆ A}).Nonempty
tactic: obtain ⟨J, hJ, hIJ⟩ := hI.subset_basis'_of_subset hIA
state_before: case intro.intro.intro
α : Type u_1
M✝ : Matroid α
R✝ I✝ J✝ X Y : Set α
M : Matroid α
R A : Set α
hAX : A ⊆ R
I : Set α
hI : M.Indep I
right✝ : I ⊆ R
hIA : I ⊆ A
J : Set α
hJ : M.Basis' J A
hIJ : I ⊆ J
⊢ (maximals (fun x x_1 => x ⊆ x_1) {Y | (fun I => M.Indep I ∧ I ⊆ R) Y ∧ I ⊆ Y ∧ Y ⊆ A}).Nonempty
state_after: case h
α : Type u_1
M✝ : Matroid α
R✝ I✝ J✝ X Y : Set α
M : Matroid α
R A : Set α
hAX : A ⊆ R
I : Set α
hI : M.Indep I
right✝ : I ⊆ R
hIA : I ⊆ A
J : Set α
hJ : M.Basis' J A
hIJ : I ⊆ J
⊢ J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | (fun I => M.Indep I ∧ I ⊆ R) Y ∧ I ⊆ Y ∧ Y ⊆ A}
tactic: use J
state_before: case h
α : Type u_1
M✝ : Matroid α
R✝ I✝ J✝ X Y : Set α
M : Matroid α
R A : Set α
hAX : A ⊆ R
I : Set α
hI : M.Indep I
right✝ : I ⊆ R
hIA : I ⊆ A
J : Set α
hJ : M.Basis' J A
hIJ : I ⊆ J
⊢ J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | (fun I => M.Indep I ∧ I ⊆ R) Y ∧ I ⊆ Y ∧ Y ⊆ A}
state_after: case h
α : Type u_1
M✝ : Matroid α
R✝ I✝ J✝ X Y : Set α
M : Matroid α
R A : Set α
hAX : A ⊆ R
I : Set α
hI : M.Indep I
right✝ : I ⊆ R
hIA : I ⊆ A
J : Set α
hJ : M.Basis' J A
hIJ : I ⊆ J
⊢ ∀ ⦃y : Set α⦄, (fun I => M.Indep I ∧ I ⊆ R) y ∧ I ⊆ y ∧ y ⊆ A → J ⊆ y → J = y
tactic: rw [mem_maximals_setOf_iff, and_iff_left hJ.subset, and_iff_left hIJ,
      and_iff_right ⟨hJ.indep, hJ.subset.trans hAX⟩]
state_before: case h
α : Type u_1
M✝ : Matroid α
R✝ I✝ J✝ X Y : Set α
M : Matroid α
R A : Set α
hAX : A ⊆ R
I : Set α
hI : M.Indep I
right✝ : I ⊆ R
hIA : I ⊆ A
J : Set α
hJ : M.Basis' J A
hIJ : I ⊆ J
⊢ ∀ ⦃y : Set α⦄, (fun I => M.Indep I ∧ I ⊆ R) y ∧ I ⊆ y ∧ y ⊆ A → J ⊆ y → J = y
state_after: no goals
tactic: exact fun K ⟨⟨hK, _⟩, _, hKA⟩ hJK ↦ hJ.eq_of_subset_indep hK hJK hKA