File: Mathlib/Data/Matroid/Dual.lean

full_name: Matroid.dualIndepMatroid_Indep
code: /-- Given `M : Matroid α`, the `IndepMatroid α` whose independent sets are
  the subsets of `M.E` that are disjoint from some base of `M` -/
@[simps] def dualIndepMatroid (M : Matroid α) : IndepMatroid α 
goal: M.dualIndepMatroid.Indep I = (I ⊆ M.E ∧ ∃ B, M.Base B ∧ Disjoint I B)

full_name: Matroid.dualIndepMatroid
code: /-- Given `M : Matroid α`, the `IndepMatroid α` whose independent sets are
  the subsets of `M.E` that are disjoint from some base of `M` -/
@[simps] def dualIndepMatroid (M : Matroid α) : IndepMatroid α 
goal: IndepMatroid α

full_name: Matroid.dualIndepMatroid_E
code: /-- Given `M : Matroid α`, the `IndepMatroid α` whose independent sets are
  the subsets of `M.E` that are disjoint from some base of `M` -/
@[simps] def dualIndepMatroid (M : Matroid α) : IndepMatroid α 
goal: M.dualIndepMatroid.E = M.E

full_name: Matroid.dual
code: /-- The dual of a matroid; the bases are the complements (w.r.t `M.E`) of the bases of `M`. -/
def dual (M : Matroid α) : Matroid α 
goal: Matroid α

full_name: Matroid.«_aux_Mathlib_Data_Matroid_Dual___macroRules_Matroid_term_✶_1»
code: /-- The `✶` symbol, which denotes matroid duality.
  (This is distinct from the usual `*` symbol for multiplication, due to precedence issues. )-/
postfix:max "✶" => Matroid.dual
goal: Lean.Macro

full_name: Matroid._aux_Mathlib_Data_Matroid_Dual___unexpand_Matroid_dual_1
code: /-- The `✶` symbol, which denotes matroid duality.
  (This is distinct from the usual `*` symbol for multiplication, due to precedence issues. )-/
postfix:max "✶" => Matroid.dual
goal: Lean.PrettyPrinter.Unexpander

full_name: Matroid.dual_indep_iff_exists'
code: theorem dual_indep_iff_exists' : (M✶.Indep I) ↔ I ⊆ M.E ∧ (∃ B, M.Base B ∧ Disjoint I B) 
goal: M✶.Indep I ↔ I ⊆ M.E ∧ ∃ B, M.Base B ∧ Disjoint I B

full_name: Matroid.dual_ground
code: @[simp] theorem dual_ground : M✶.E = M.E 
goal: M✶.E = M.E

full_name: Matroid.dual_indep_iff_exists
code: @[simp] theorem dual_indep_iff_exists (hI : I ⊆ M.E := by aesop_mat) :
    M✶.Indep I ↔ (∃ B, M.Base B ∧ Disjoint I B) 
goal: M✶.Indep I ↔ ∃ B, M.Base B ∧ Disjoint I B

full_name: Matroid.dual_dep_iff_forall
code: theorem dual_dep_iff_forall : (M✶.Dep I) ↔ (∀ B, M.Base B → (I ∩ B).Nonempty) ∧ I ⊆ M.E 
goal: M✶.Dep I ↔ (∀ (B : Set α), M.Base B → (I ∩ B).Nonempty) ∧ I ⊆ M.E

full_name: Matroid.dual_finite
code: instance dual_finite [M.Finite] : M✶.Finite 
goal: M✶.Finite

full_name: Matroid.dual_nonempty
code: instance dual_nonempty [M.Nonempty] : M✶.Nonempty 
goal: M✶.Nonempty

full_name: Matroid.dual_base_iff
code: @[simp] theorem dual_base_iff (hB : B ⊆ M.E := by aesop_mat) : M✶.Base B ↔ M.Base (M.E \ B) 
goal: M✶.Base B ↔ M.Base (M.E \ B)

full_name: Matroid.dual_base_iff'
code: theorem dual_base_iff' : M✶.Base B ↔ M.Base (M.E \ B) ∧ B ⊆ M.E 
goal: M✶.Base B ↔ M.Base (M.E \ B) ∧ B ⊆ M.E

full_name: Matroid.setOf_dual_base_eq
code: theorem setOf_dual_base_eq : {B | M✶.Base B} = (fun X ↦ M.E \ X) '' {B | M.Base B} 
goal: {B | M✶.Base B} = (fun X => M.E \ X) '' {B | M.Base B}

full_name: Matroid.dual_dual
code: @[simp] theorem dual_dual (M : Matroid α) : M✶✶ = M 
goal: M✶✶ = M

full_name: Matroid.dual_involutive
code: theorem dual_involutive : Function.Involutive (dual : Matroid α → Matroid α) 
goal: Function.Involutive Matroid.dual

full_name: Matroid.dual_injective
code: theorem dual_injective : Function.Injective (dual : Matroid α → Matroid α) 
goal: Function.Injective Matroid.dual

full_name: Matroid.dual_inj
code: @[simp] theorem dual_inj {M₁ M₂ : Matroid α} : M₁✶ = M₂✶ ↔ M₁ = M₂ 
goal: M₁✶ = M₂✶ ↔ M₁ = M₂

full_name: Matroid.eq_dual_comm
code: theorem eq_dual_comm {M₁ M₂ : Matroid α} : M₁ = M₂✶ ↔ M₂ = M₁✶ 
goal: M₁ = M₂✶ ↔ M₂ = M₁✶

full_name: Matroid.eq_dual_iff_dual_eq
code: theorem eq_dual_iff_dual_eq {M₁ M₂ : Matroid α} : M₁ = M₂✶ ↔ M₁✶ = M₂ 
goal: M₁ = M₂✶ ↔ M₁✶ = M₂

full_name: Matroid.Base.compl_base_of_dual
code: theorem Base.compl_base_of_dual (h : M✶.Base B) : M.Base (M.E \ B) 
goal: M.Base (M.E \ B)

full_name: Matroid.Base.compl_base_dual
code: theorem Base.compl_base_dual (h : M.Base B) : M✶.Base (M.E \ B) 
goal: M✶.Base (M.E \ B)

full_name: Matroid.Base.compl_inter_basis_of_inter_basis
code: theorem Base.compl_inter_basis_of_inter_basis (hB : M.Base B) (hBX : M.Basis (B ∩ X) X) :
    M✶.Basis ((M.E \ B) ∩ (M.E \ X)) (M.E \ X) 
goal: M✶.Basis (M.E \ B ∩ (M.E \ X)) (M.E \ X)

full_name: Matroid.Base.inter_basis_iff_compl_inter_basis_dual
code: theorem Base.inter_basis_iff_compl_inter_basis_dual (hB : M.Base B) (hX : X ⊆ M.E := by aesop_mat) :
    M.Basis (B ∩ X) X ↔ M✶.Basis ((M.E \ B) ∩ (M.E \ X)) (M.E \ X) 
goal: M.Basis (B ∩ X) X ↔ M✶.Basis (M.E \ B ∩ (M.E \ X)) (M.E \ X)

full_name: Matroid.base_iff_dual_base_compl
code: theorem base_iff_dual_base_compl (hB : B ⊆ M.E := by aesop_mat) :
    M.Base B ↔ M✶.Base (M.E \ B) 
goal: M.Base B ↔ M✶.Base (M.E \ B)

full_name: Matroid.ground_not_base
code: theorem ground_not_base (M : Matroid α) [h : RkPos M✶] : ¬M.Base M.E 
goal: ¬M.Base M.E

full_name: Matroid.Base.ssubset_ground
code: theorem Base.ssubset_ground [h : RkPos M✶] (hB : M.Base B) : B ⊂ M.E 
goal: B ⊂ M.E

full_name: Matroid.Indep.ssubset_ground
code: theorem Indep.ssubset_ground [h : RkPos M✶] (hI : M.Indep I) : I ⊂ M.E 
goal: I ⊂ M.E

full_name: Matroid.Coindep
code: /-- A coindependent set of `M` is an independent set of the dual of `M✶`. we give it a separate
  definition to enable dot notation. Which spelling is better depends on context. -/
abbrev Coindep (M : Matroid α) (I : Set α) : Prop 
goal: Prop

full_name: Matroid.coindep_def
code: theorem coindep_def : M.Coindep X ↔ M✶.Indep X 
goal: M.Coindep X ↔ M✶.Indep X

full_name: Matroid.Coindep.indep
code: theorem Coindep.indep (hX : M.Coindep X) : M✶.Indep X 
goal: M✶.Indep X

full_name: Matroid.dual_coindep_iff
code: @[simp] theorem dual_coindep_iff : M✶.Coindep X ↔ M.Indep X 
goal: M✶.Coindep X ↔ M.Indep X

full_name: Matroid.Indep.coindep
code: theorem Indep.coindep (hI : M.Indep I) : M✶.Coindep I 
goal: M✶.Coindep I

full_name: Matroid.coindep_iff_exists'
code: theorem coindep_iff_exists' : M.Coindep X ↔ (∃ B, M.Base B ∧ B ⊆ M.E \ X) ∧ X ⊆ M.E 
goal: M.Coindep X ↔ (∃ B, M.Base B ∧ B ⊆ M.E \ X) ∧ X ⊆ M.E

full_name: Matroid.coindep_iff_exists
code: theorem coindep_iff_exists (hX : X ⊆ M.E := by aesop_mat) :
    M.Coindep X ↔ ∃ B, M.Base B ∧ B ⊆ M.E \ X 
goal: M.Coindep X ↔ ∃ B, M.Base B ∧ B ⊆ M.E \ X

full_name: Matroid.coindep_iff_subset_compl_base
code: theorem coindep_iff_subset_compl_base : M.Coindep X ↔ ∃ B, M.Base B ∧ X ⊆ M.E \ B 
goal: M.Coindep X ↔ ∃ B, M.Base B ∧ X ⊆ M.E \ B

full_name: Matroid.Coindep.subset_ground
code: @[aesop unsafe 10% (rule_sets := [Matroid])]
theorem Coindep.subset_ground (hX : M.Coindep X) : X ⊆ M.E 
goal: X ⊆ M.E

full_name: Matroid.Coindep.exists_base_subset_compl
code: theorem Coindep.exists_base_subset_compl (h : M.Coindep X) : ∃ B, M.Base B ∧ B ⊆ M.E \ X 
goal: ∃ B, M.Base B ∧ B ⊆ M.E \ X

full_name: Matroid.Coindep.exists_subset_compl_base
code: theorem Coindep.exists_subset_compl_base (h : M.Coindep X) : ∃ B, M.Base B ∧ X ⊆ M.E \ B 
goal: ∃ B, M.Base B ∧ X ⊆ M.E \ B