Theorem: Matroid.relRank_intro (Matroid/Constructions/RankAxioms.lean)

State before:
α : Type u_1
I : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
⊢ ∃ I J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard
Tactic:
obtain ⟨I, hI⟩ := M.maximality A (hA.trans hB) ∅ M.empty_indep (Set.empty_subset A)
State after:
case intro
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : I ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ ∅ ⊆ Y ∧ Y ⊆ A}
⊢ ∃ I J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard

State before:
case intro
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : I ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ ∅ ⊆ Y ∧ Y ⊆ A}
⊢ ∃ I J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard
Tactic:
unfold maximals at hI
State after:
case intro
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI :
  I ∈
    {a |
      a ∈ {Y | M.Indep Y ∧ ∅ ⊆ Y ∧ Y ⊆ A} ∧
        ∀ ⦃b : Set α⦄, b ∈ {Y | M.Indep Y ∧ ∅ ⊆ Y ∧ Y ⊆ A} → (fun x x_1 => x ⊆ x_1) a b → (fun x x_1 => x ⊆ x_1) b a}
⊢ ∃ I J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard

State before:
case intro
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI :
  I ∈
    {a |
      a ∈ {Y | M.Indep Y ∧ ∅ ⊆ Y ∧ Y ⊆ A} ∧
        ∀ ⦃b : Set α⦄, b ∈ {Y | M.Indep Y ∧ ∅ ⊆ Y ∧ Y ⊆ A} → (fun x x_1 => x ⊆ x_1) a b → (fun x x_1 => x ⊆ x_1) b a}
⊢ ∃ I J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard
Tactic:
simp only [Set.empty_subset, true_and, Set.mem_setOf_eq, and_imp] at hI
State after:
case intro
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
⊢ ∃ I J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard

State before:
case intro
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
⊢ ∃ I J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard
Tactic:
have ⟨⟨hI_indep, hI_subset_A⟩, _⟩ := hI
State after:
case intro
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
⊢ ∃ I J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard

State before:
case intro
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
⊢ ∃ I J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard
Tactic:
obtain ⟨J, hJ⟩ := M.maximality B hB I hI_indep (hI_subset_A.trans hA)
State after:
case intro.intro
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
⊢ ∃ I J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard

State before:
case intro.intro
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
⊢ ∃ I J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard
Tactic:
use I
State after:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
⊢ ∃ J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard

State before:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
⊢ ∃ J, I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard
Tactic:
use J
State after:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
⊢ I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard

State before:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
⊢ I ⊆ J ∧ M.Basis I A ∧ M.Basis J B ∧ M.relRank A B = (J \ I).encard
Tactic:
unfold Basis
State after:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
⊢ I ⊆ J ∧
    (I ∈ maximals (fun x x_1 => x ⊆ x_1) {A_1 | M.Indep A_1 ∧ A_1 ⊆ A} ∧ A ⊆ M.E) ∧
      (J ∈ maximals (fun x x_1 => x ⊆ x_1) {A | M.Indep A ∧ A ⊆ B} ∧ B ⊆ M.E) ∧ M.relRank A B = (J \ I).encard

State before:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
⊢ I ⊆ J ∧
    (I ∈ maximals (fun x x_1 => x ⊆ x_1) {A_1 | M.Indep A_1 ∧ A_1 ⊆ A} ∧ A ⊆ M.E) ∧
      (J ∈ maximals (fun x x_1 => x ⊆ x_1) {A | M.Indep A ∧ A ⊆ B} ∧ B ⊆ M.E) ∧ M.relRank A B = (J \ I).encard
Tactic:
have hIJ : I ⊆ J := hJ.1.2.1
State after:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
⊢ I ⊆ J ∧
    (I ∈ maximals (fun x x_1 => x ⊆ x_1) {A_1 | M.Indep A_1 ∧ A_1 ⊆ A} ∧ A ⊆ M.E) ∧
      (J ∈ maximals (fun x x_1 => x ⊆ x_1) {A | M.Indep A ∧ A ⊆ B} ∧ B ⊆ M.E) ∧ M.relRank A B = (J \ I).encard

State before:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
⊢ I ⊆ J ∧
    (I ∈ maximals (fun x x_1 => x ⊆ x_1) {A_1 | M.Indep A_1 ∧ A_1 ⊆ A} ∧ A ⊆ M.E) ∧
      (J ∈ maximals (fun x x_1 => x ⊆ x_1) {A | M.Indep A ∧ A ⊆ B} ∧ B ⊆ M.E) ∧ M.relRank A B = (J \ I).encard
Tactic:
have hI_basis : M.Basis I A := by
  refine @basis_of_maximal_extension α M ∅ A I (hA.trans hB) ?_
  unfold maximals; simp only [Set.empty_subset, true_and, Set.mem_setOf_eq, and_imp]
  assumption
State after:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
hI_basis : M.Basis I A
⊢ I ⊆ J ∧
    (I ∈ maximals (fun x x_1 => x ⊆ x_1) {A_1 | M.Indep A_1 ∧ A_1 ⊆ A} ∧ A ⊆ M.E) ∧
      (J ∈ maximals (fun x x_1 => x ⊆ x_1) {A | M.Indep A ∧ A ⊆ B} ∧ B ⊆ M.E) ∧ M.relRank A B = (J \ I).encard

State before:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
hI_basis : M.Basis I A
⊢ I ⊆ J ∧
    (I ∈ maximals (fun x x_1 => x ⊆ x_1) {A_1 | M.Indep A_1 ∧ A_1 ⊆ A} ∧ A ⊆ M.E) ∧
      (J ∈ maximals (fun x x_1 => x ⊆ x_1) {A | M.Indep A ∧ A ⊆ B} ∧ B ⊆ M.E) ∧ M.relRank A B = (J \ I).encard
Tactic:
have hJ_basis : M.Basis J B := by
  refine M.basis_of_maximal_extension hB hJ
State after:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
hI_basis : M.Basis I A
hJ_basis : M.Basis J B
⊢ I ⊆ J ∧
    (I ∈ maximals (fun x x_1 => x ⊆ x_1) {A_1 | M.Indep A_1 ∧ A_1 ⊆ A} ∧ A ⊆ M.E) ∧
      (J ∈ maximals (fun x x_1 => x ⊆ x_1) {A | M.Indep A ∧ A ⊆ B} ∧ B ⊆ M.E) ∧ M.relRank A B = (J \ I).encard

State before:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
hI_basis : M.Basis I A
hJ_basis : M.Basis J B
⊢ I ⊆ J ∧
    (I ∈ maximals (fun x x_1 => x ⊆ x_1) {A_1 | M.Indep A_1 ∧ A_1 ⊆ A} ∧ A ⊆ M.E) ∧
      (J ∈ maximals (fun x x_1 => x ⊆ x_1) {A | M.Indep A ∧ A ⊆ B} ∧ B ⊆ M.E) ∧ M.relRank A B = (J \ I).encard
Tactic:
refine ⟨hIJ, hI_basis, hJ_basis, ?_⟩
State after:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
hI_basis : M.Basis I A
hJ_basis : M.Basis J B
⊢ M.relRank A B = (J \ I).encard

State before:
case h
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
hI_basis : M.Basis I A
hJ_basis : M.Basis J B
⊢ M.relRank A B = (J \ I).encard
Tactic:
exact Basis.relRank_eq_encard_diff_of_subset_basis hI_basis hJ_basis hIJ
State after:
no goals

State before:
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
⊢ M.Basis I A
Tactic:
refine @basis_of_maximal_extension α M ∅ A I (hA.trans hB) ?_
State after:
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
⊢ I ∈ maximals (fun x x_1 => x ⊆ x_1) {I' | M.Indep I' ∧ ∅ ⊆ I' ∧ I' ⊆ A}

State before:
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
⊢ I ∈ maximals (fun x x_1 => x ⊆ x_1) {I' | M.Indep I' ∧ ∅ ⊆ I' ∧ I' ⊆ A}
Tactic:
unfold maximals
State after:
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
⊢ I ∈
    {a |
      a ∈ {I' | M.Indep I' ∧ ∅ ⊆ I' ∧ I' ⊆ A} ∧
        ∀ ⦃b : Set α⦄,
          b ∈ {I' | M.Indep I' ∧ ∅ ⊆ I' ∧ I' ⊆ A} → (fun x x_1 => x ⊆ x_1) a b → (fun x x_1 => x ⊆ x_1) b a}

State before:
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
⊢ I ∈
    {a |
      a ∈ {I' | M.Indep I' ∧ ∅ ⊆ I' ∧ I' ⊆ A} ∧
        ∀ ⦃b : Set α⦄,
          b ∈ {I' | M.Indep I' ∧ ∅ ⊆ I' ∧ I' ⊆ A} → (fun x x_1 => x ⊆ x_1) a b → (fun x x_1 => x ⊆ x_1) b a}
Tactic:
simp only [Set.empty_subset, true_and, Set.mem_setOf_eq, and_imp]
State after:
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
⊢ (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I

State before:
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
⊢ (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
Tactic:
assumption
State after:
no goals

State before:
α : Type u_1
I✝ : Set α
M : Matroid α
A B : Set α
hA : A ⊆ B
hB : B ⊆ M.E
I : Set α
hI : (M.Indep I ∧ I ⊆ A) ∧ ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
hI_indep : M.Indep I
hI_subset_A : I ⊆ A
right✝ : ∀ ⦃b : Set α⦄, M.Indep b → b ⊆ A → I ⊆ b → b ⊆ I
J : Set α
hJ : J ∈ maximals (fun x x_1 => x ⊆ x_1) {Y | M.Indep Y ∧ I ⊆ Y ∧ Y ⊆ B}
hIJ : I ⊆ J
hI_basis : M.Basis I A
⊢ M.Basis J B
Tactic:
refine M.basis_of_maximal_extension hB hJ
State after:
no goals