Some constructions of matroids #
This file defines some very elementary examples of matroids, namely those with at most one base.
Main definitions #
emptyOn α
is the matroid onα
with empty ground set.
For E : Set α
, ...
loopyOn E
is the matroid onE
whose elements are all loops, or equivalently in which∅
is the only base.freeOn E
is the 'free matroid' whose ground setE
is the only base.- For
I ⊆ E
,uniqueBaseOn I E
is the matroid with ground setE
in whichI
is the only base.
Implementation details #
To avoid the tedious process of certifying the matroid axioms for each of these easy examples,
we bootstrap the definitions starting with emptyOn α
(which simp
can prove is a matroid)
and then construct the other examples using duality and restriction.
@[simp]
@[simp]
@[simp]
@[simp]
theorem
Matroid.eq_emptyOn_or_nonempty
{α : Type u_1}
(M : Matroid α)
:
M = Matroid.emptyOn α ∨ M.Nonempty
The Matroid α
with ground set E
whose only base is ∅
Equations
- Matroid.loopyOn E = (Matroid.emptyOn α).restrict E
Instances For
@[simp]
theorem
Matroid.loopyOn_indep_iff
{α : Type u_1}
{E : Set α}
{I : Set α}
:
(Matroid.loopyOn E).Indep I ↔ I = ∅
@[simp]
theorem
Matroid.loopyOn_base_iff
{α : Type u_1}
{E : Set α}
{B : Set α}
:
(Matroid.loopyOn E).Base B ↔ B = ∅
Equations
- ⋯ = ⋯
theorem
Matroid.Finite.loopyOn_finite
{α : Type u_1}
{E : Set α}
(hE : E.Finite)
:
(Matroid.loopyOn E).Finite
@[simp]
theorem
Matroid.loopyOn_restrict
{α : Type u_1}
(E : Set α)
(R : Set α)
:
(Matroid.loopyOn E).restrict R = Matroid.loopyOn R
theorem
Matroid.eq_loopyOn_or_rkPos
{α : Type u_1}
(M : Matroid α)
:
M = Matroid.loopyOn M.E ∨ M.RkPos
The Matroid α
with ground set E
whose only base is E
.
Equations
- Matroid.freeOn E = (Matroid.loopyOn E)✶
Instances For
@[simp]
@[simp]
@[simp]
theorem
Matroid.freeOn_base_iff
{α : Type u_1}
{E : Set α}
{B : Set α}
:
(Matroid.freeOn E).Base B ↔ B = E
@[simp]
theorem
Matroid.freeOn_indep_iff
{α : Type u_1}
{E : Set α}
{I : Set α}
:
(Matroid.freeOn E).Indep I ↔ I ⊆ E
theorem
Matroid.freeOn_indep
{α : Type u_1}
{E : Set α}
{I : Set α}
(hIE : I ⊆ E)
:
(Matroid.freeOn E).Indep I
@[simp]
theorem
Matroid.freeOn_basis'_iff
{α : Type u_1}
{E : Set α}
{I : Set α}
{X : Set α}
:
(Matroid.freeOn E).Basis' I X ↔ I = X ∩ E
theorem
Matroid.eq_freeOn_iff
{α : Type u_1}
{M : Matroid α}
{E : Set α}
:
M = Matroid.freeOn E ↔ M.E = E ∧ M.Indep E
theorem
Matroid.ground_indep_iff_eq_freeOn
{α : Type u_1}
{M : Matroid α}
:
M.Indep M.E ↔ M = Matroid.freeOn M.E
theorem
Matroid.freeOn_restrict
{α : Type u_1}
{E : Set α}
{R : Set α}
(h : R ⊆ E)
:
(Matroid.freeOn E).restrict R = Matroid.freeOn R
theorem
Matroid.restrict_eq_freeOn_iff
{α : Type u_1}
{M : Matroid α}
{I : Set α}
:
M.restrict I = Matroid.freeOn I ↔ M.Indep I
theorem
Matroid.Indep.restrict_eq_freeOn
{α : Type u_1}
{M : Matroid α}
{I : Set α}
(hI : M.Indep I)
:
M.restrict I = Matroid.freeOn I
The matroid on E
whose unique base is the subset I
of E
.
Intended for use when I ⊆ E
; if this not not the case, then the base is I ∩ E
.
Equations
- Matroid.uniqueBaseOn I E = (Matroid.freeOn I).restrict E
Instances For
@[simp]
theorem
Matroid.uniqueBaseOn_ground
{α : Type u_1}
{E : Set α}
{I : Set α}
:
(Matroid.uniqueBaseOn I E).E = E
theorem
Matroid.uniqueBaseOn_base_iff
{α : Type u_1}
{E : Set α}
{B : Set α}
{I : Set α}
(hIE : I ⊆ E)
:
(Matroid.uniqueBaseOn I E).Base B ↔ B = I
theorem
Matroid.uniqueBaseOn_inter_ground_eq
{α : Type u_1}
(I : Set α)
(E : Set α)
:
Matroid.uniqueBaseOn (I ∩ E) E = Matroid.uniqueBaseOn I E
@[simp]
theorem
Matroid.uniqueBaseOn_indep_iff'
{α : Type u_1}
{E : Set α}
{I : Set α}
{J : Set α}
:
(Matroid.uniqueBaseOn I E).Indep J ↔ J ⊆ I ∩ E
theorem
Matroid.uniqueBaseOn_indep_iff
{α : Type u_1}
{E : Set α}
{I : Set α}
{J : Set α}
(hIE : I ⊆ E)
:
(Matroid.uniqueBaseOn I E).Indep J ↔ J ⊆ I
theorem
Matroid.uniqueBaseOn_inter_basis
{α : Type u_1}
{E : Set α}
{I : Set α}
{X : Set α}
(hX : X ⊆ E)
:
(Matroid.uniqueBaseOn I E).Basis (X ∩ I) X
@[simp]
theorem
Matroid.uniqueBaseOn_dual_eq
{α : Type u_1}
(I : Set α)
(E : Set α)
:
(Matroid.uniqueBaseOn I E)✶ = Matroid.uniqueBaseOn (E \ I) E
@[simp]
@[simp]
theorem
Matroid.uniqueBaseOn_restrict'
{α : Type u_1}
(I : Set α)
(E : Set α)
(R : Set α)
:
(Matroid.uniqueBaseOn I E).restrict R = Matroid.uniqueBaseOn (I ∩ R ∩ E) R
theorem
Matroid.uniqueBaseOn_restrict
{α : Type u_1}
{E : Set α}
{I : Set α}
(h : I ⊆ E)
(R : Set α)
:
(Matroid.uniqueBaseOn I E).restrict R = Matroid.uniqueBaseOn (I ∩ R) R