theorem
Matroid.IsMutualBasis.isBasis_inter
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{B : Set α}
{Xs : ι → Set α}
(h : M.IsMutualBasis B Xs)
(i : ι)
:
theorem
Matroid.IsMutualBasis.subset_ground
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{B : Set α}
{Xs : ι → Set α}
(h : M.IsMutualBasis B Xs)
(i : ι)
:
theorem
Matroid.IsMutualBasis.subtype
{α : Type u_1}
{η : Type u_3}
{M : Matroid α}
{B : Set α}
{Xs : η → Set α}
(h : M.IsMutualBasis B Xs)
(A : Set η)
:
M.IsMutualBasis B fun (i : ↑A) => Xs ↑i
theorem
Matroid.IsMutualBasis.isBasis_iUnion
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{B : Set α}
{Xs : ι → Set α}
(h : M.IsMutualBasis B Xs)
:
theorem
Matroid.Indep.isMutualBasis_self
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
(h : M.Indep (⋃ (i : ι), Xs i))
:
M.IsMutualBasis (⋃ (i : ι), Xs i) Xs
theorem
Matroid.IsMutualBasis.isMutualBasis_of_forall_subset_subset_closure
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{B : Set α}
{Xs Ys : ι → Set α}
(hB : M.IsMutualBasis B Xs)
(hXY : ∀ (i : ι), Xs i ⊆ Ys i)
(hYX : ∀ (i : ι), Ys i ⊆ M.closure (Xs i))
:
M.IsMutualBasis B Ys
theorem
Matroid.IsMutualBasis.isMutualBasis_cls
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{B : Set α}
{Xs : ι → Set α}
(hB : M.IsMutualBasis B Xs)
:
M.IsMutualBasis B fun (i : ι) => M.closure (Xs i)
theorem
Matroid.Indep.isMutualBasis_powerset
{α : Type u_1}
{M : Matroid α}
{B : Set α}
(hB : M.Indep B)
:
M.IsMutualBasis B fun (I : ↑(𝒫 B)) => ↑I
theorem
Matroid.IsMutualBasis.switch
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{B I : Set α}
{Xs : ι → Set α}
(hB : M.IsMutualBasis B Xs)
(hIX : M.IsBasis I (⋂ (i : ι), Xs i))
:
M.IsMutualBasis ((B \ ⋂ (i : ι), Xs i) ∪ I) Xs
Given a mutual basis B
for Xs
, we can switch out the intersection of B
with the
intersection of the Xs
with any other base for the intersection of the Xs
and still have a mutual basis.
theorem
Matroid.IsMutualBasis.comp
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{B : Set α}
{ζ : Sort u_4}
{Xs : ι → Set α}
(h : M.IsMutualBasis B Xs)
(t : ζ → ι)
:
M.IsMutualBasis B (Xs ∘ t)
theorem
Matroid.IsMutualBasis.mono
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{B I : Set α}
{Xs : ι → Set α}
(hI : M.IsMutualBasis I Xs)
(hIB : I ⊆ B)
(hB : M.Indep B)
:
M.IsMutualBasis B Xs
A set family is a IsModularFamily
if it has a modular base.
Equations
- M.IsModularFamily Xs = ∃ (B : Set α), M.IsMutualBasis B Xs
Instances For
theorem
Matroid.IsModularFamily.exists_isMutualBasis_isBase
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
(h : M.IsModularFamily Xs)
:
∃ (B : Set α), M.IsBase B ∧ M.IsMutualBasis B Xs
theorem
Matroid.IsMutualBasis.isModularFamily
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{B : Set α}
{Xs : ι → Set α}
(hB : M.IsMutualBasis B Xs)
:
M.IsModularFamily Xs
theorem
Matroid.IsModularFamily.subset_ground_of_mem
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
(h : M.IsModularFamily Xs)
(i : ι)
:
theorem
Matroid.Indep.isModularFamily_of_subsets
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{I : Set α}
{Js : ι → Set α}
(hI : M.Indep I)
(hJs : ⋃ (i : ι), Js i ⊆ I)
:
M.IsModularFamily Js
theorem
Matroid.IsModularFamily.isModularFamily_of_forall_subset_closure
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs Ys : ι → Set α}
(h : M.IsModularFamily Xs)
(hXY : ∀ (i : ι), Xs i ⊆ Ys i)
(hYX : ∀ (i : ι), Ys i ⊆ M.closure (Xs i))
:
M.IsModularFamily Ys
theorem
Matroid.IsModularFamily.cls_isModularFamily
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
(h : M.IsModularFamily Xs)
:
M.IsModularFamily fun (i : ι) => M.closure (Xs i)
@[simp]
theorem
Matroid.isModularFamily_of_isEmpty
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
[IsEmpty ι]
:
M.IsModularFamily Xs
@[simp]
theorem
Matroid.isModularFamily_iff_of_subsingleton
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
[Subsingleton ι]
:
theorem
Matroid.isModularFamily_of_isLoopEquiv
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs Ys : ι → Set α}
(h : M.IsModularFamily Xs)
(he : ∀ (i : ι), M.IsLoopEquiv (Xs i) (Ys i))
:
M.IsModularFamily Ys
theorem
Matroid.IsModularFamily.restrict
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
{R : Set α}
(h : M.IsModularFamily Xs)
(hXR : ∀ (i : ι), Xs i ⊆ R)
:
(M.restrict R).IsModularFamily Xs
theorem
Matroid.IsModularFamily.delete
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
{D : Set α}
(h : M.IsModularFamily Xs)
(hXD : ∀ (i : ι), Disjoint (Xs i) D)
:
(M.delete D).IsModularFamily Xs
theorem
Matroid.IsModularFamily.ofRestrict'
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
{R : Set α}
(h : (M.restrict R).IsModularFamily Xs)
:
M.IsModularFamily fun (i : ι) => Xs i ∩ M.E
theorem
Matroid.IsModularFamily.ofRestrict
{α : Type u_1}
{ι : Sort u_2}
{Xs : ι → Set α}
{M : Matroid α}
{R : Set α}
(hR : R ⊆ M.E)
(h : (M.restrict R).IsModularFamily Xs)
:
M.IsModularFamily Xs
theorem
Matroid.IsModularFamily.comp
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
{ζ : Sort u_4}
(h : M.IsModularFamily Xs)
(t : ζ → ι)
:
M.IsModularFamily (Xs ∘ t)
A subfamily of a modular family is a modular family.
theorem
Matroid.IsModularFamily.set_biInter_comp
{α : Type u_1}
{ι : Sort u_2}
{η : Type u_3}
{M : Matroid α}
{Xs : η → Set α}
(h : M.IsModularFamily Xs)
(t : ι → Set η)
(ht : ∀ (j : ι), (t j).Nonempty)
:
M.IsModularFamily fun (j : ι) => ⋂ i ∈ t j, Xs i
theorem
Matroid.IsModularFamily.map
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
{β : Type u_4}
(f : α → β)
(hf : Set.InjOn f M.E)
(h : M.IsModularFamily Xs)
:
(M.map f hf).IsModularFamily fun (i : ι) => f '' Xs i
theorem
Matroid.IsModularFamily.of_comap
{α : Type u_1}
{ι : Sort u_2}
{Xs : ι → Set α}
{β : Type u_4}
{f : α → β}
{M : Matroid β}
(hX : (M.comap f).IsModularFamily Xs)
:
M.IsModularFamily fun (i : ι) => f '' Xs i
theorem
Matroid.IsModularFamily.comap_iff
{α : Type u_1}
{ι : Sort u_2}
{Xs : ι → Set α}
{β : Type u_4}
{f : α → β}
{M : Matroid β}
(hf : Function.Injective f)
:
theorem
Matroid.IsModularFamily.mapEmbedding
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
{β : Type u_4}
(f : α ↪ β)
(h : M.IsModularFamily Xs)
:
(M.mapEmbedding f).IsModularFamily fun (i : ι) => ⇑f '' Xs i
theorem
Matroid.IsModularFamily.of_contract_indep
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{I : Set α}
{Xs : ι → Set α}
(h : (M.contract I).IsModularFamily Xs)
(hI : M.Indep I)
:
M.IsModularFamily fun (i : ι) => Xs i ∪ I
theorem
Matroid.IsModularFamily.exists_isMutualBasis_superset_of_indep_of_subset_inter
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{I : Set α}
{Xs : ι → Set α}
(h : M.IsModularFamily Xs)
(hI : M.Indep I)
(hIX : I ⊆ ⋂ (i : ι), Xs i)
:
∃ (B : Set α), M.IsMutualBasis B Xs ∧ I ⊆ B
A mutual basis can be chosen to contain a prescribed independent subset of the intersection.
theorem
Matroid.IsModularFamily.contract
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
(h : M.IsModularFamily Xs)
{C : Set α}
(hC : ∀ (i : ι), C ⊆ M.closure (Xs i))
:
(M.contract C).IsModularFamily fun (i : ι) => Xs i \ C
If C
is spanned by the intersection of a modular family Xs
,
then we get a modular family in M / C
.
theorem
Matroid.IsModularFamily.finite_of_forall_isFlat
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
[M.RankFinite]
(h : M.IsModularFamily Xs)
(h_isFlat : ∀ (i : ι), M.IsFlat (Xs i))
:
A IsModularFamily
of flats in a finite-rank matroid is finite.
Sets X,Y
are a modular pair if some independent set contains bases for both.
Equations
- M.IsModularPair X Y = M.IsModularFamily fun (i : Bool) => bif i then X else Y
Instances For
theorem
Matroid.IsModularPair.symm
{α : Type u_1}
{M : Matroid α}
{X Y : Set α}
(h : M.IsModularPair X Y)
:
M.IsModularPair Y X
theorem
Matroid.IsModularPair.subset_ground_left
{α : Type u_1}
{M : Matroid α}
{X Y : Set α}
(h : M.IsModularPair X Y)
:
theorem
Matroid.IsModularPair.subset_ground_right
{α : Type u_1}
{M : Matroid α}
{X Y : Set α}
(h : M.IsModularPair X Y)
:
theorem
Matroid.IsModularFamily.isModularPair
{α : Type u_1}
{ι : Sort u_2}
{M : Matroid α}
{Xs : ι → Set α}
(h : M.IsModularFamily Xs)
(i j : ι)
:
M.IsModularPair (Xs i) (Xs j)
theorem
Matroid.isModularPair_of_subset
{α : Type u_1}
{M : Matroid α}
{X Y : Set α}
(hXY : X ⊆ Y)
(hY : Y ⊆ M.E)
:
M.IsModularPair X Y
theorem
Matroid.Indep.isModularPair_of_union
{α : Type u_1}
{M : Matroid α}
{I J : Set α}
(hi : M.Indep (I ∪ J))
:
M.IsModularPair I J
theorem
Matroid.IsModularPair.of_subset_closure_subset_closure
{α : Type u_1}
{M : Matroid α}
{X X' Y Y' : Set α}
(h : M.IsModularPair X Y)
(hXX' : X ⊆ X')
(hX' : X' ⊆ M.closure X)
(hYY' : Y ⊆ Y')
(hY' : Y' ⊆ M.closure Y)
:
M.IsModularPair X' Y'
theorem
Matroid.IsModularPair.of_subset_closure_left
{α : Type u_1}
{M : Matroid α}
{X X' Y : Set α}
(h : M.IsModularPair X Y)
(hXX' : X ⊆ X')
(hX' : X' ⊆ M.closure X)
:
M.IsModularPair X' Y
theorem
Matroid.IsModularPair.of_subset_closure_right
{α : Type u_1}
{M : Matroid α}
{X Y Y' : Set α}
(h : M.IsModularPair X Y)
(hYY' : Y ⊆ Y')
(hY' : Y' ⊆ M.closure Y)
:
M.IsModularPair X Y'
theorem
Matroid.IsModularPair.of_isBasis_left
{α : Type u_1}
{M : Matroid α}
{I X Y : Set α}
(h : M.IsModularPair I Y)
(hIX : M.IsBasis I X)
:
M.IsModularPair X Y
theorem
Matroid.IsModularPair.of_isBasis_right
{α : Type u_1}
{M : Matroid α}
{J X Y : Set α}
(h : M.IsModularPair X J)
(hJY : M.IsBasis J Y)
:
M.IsModularPair X Y
theorem
Matroid.IsModularPair.of_isBasis_of_isBasis
{α : Type u_1}
{M : Matroid α}
{I J X Y : Set α}
(h : M.IsModularPair I J)
(hIX : M.IsBasis I X)
(hJY : M.IsBasis J Y)
:
M.IsModularPair X Y
theorem
Matroid.IsModularPair.closure_left
{α : Type u_1}
{M : Matroid α}
{X Y : Set α}
(h : M.IsModularPair X Y)
:
M.IsModularPair (M.closure X) Y
theorem
Matroid.IsModularPair.closure_right
{α : Type u_1}
{M : Matroid α}
{X Y : Set α}
(h : M.IsModularPair X Y)
:
M.IsModularPair X (M.closure Y)
theorem
Matroid.IsModularPair.closure_closure
{α : Type u_1}
{M : Matroid α}
{X Y : Set α}
(h : M.IsModularPair X Y)
:
M.IsModularPair (M.closure X) (M.closure Y)
theorem
Matroid.isModularPair_loops
{α : Type u_1}
{X : Set α}
(M : Matroid α)
(hX : X ⊆ M.E)
:
M.IsModularPair X M.loops
theorem
Matroid.IsModularFamily.isModularPair_compl_biUnion
{α : Type u_1}
{η : Type u_3}
{M : Matroid α}
{Xs : η → Set α}
(h : M.IsModularFamily Xs)
(A : Set η)
:
M.IsModularPair (⋃ i ∈ A, Xs i) (⋃ i ∈ Aᶜ, Xs i)
theorem
Matroid.IsModularFamily.isModularPair_compl_biInter
{α : Type u_1}
{η : Type u_3}
{M : Matroid α}
{Xs : η → Set α}
(h : M.IsModularFamily Xs)
(A : Set η)
(hA : A.Nonempty)
(hA' : A ≠ Set.univ)
:
M.IsModularPair (⋂ i ∈ A, Xs i) (⋂ i ∈ Aᶜ, Xs i)
theorem
Matroid.IsModularFamily.isModularPair_singleton_compl_biUnion
{α : Type u_1}
{η : Type u_3}
{M : Matroid α}
{Xs : η → Set α}
(h : M.IsModularFamily Xs)
(i₀ : η)
:
M.IsModularPair (Xs i₀) (⋃ i ∈ {i₀}ᶜ, Xs i)
theorem
Matroid.IsModularFamily.isModularPair_singleton_compl_biInter
{α : Type u_1}
{η : Type u_3}
{M : Matroid α}
[Nontrivial η]
{Xs : η → Set α}
(h : M.IsModularFamily Xs)
(i₀ : η)
:
M.IsModularPair (Xs i₀) (⋂ i ∈ {i₀}ᶜ, Xs i)
theorem
Matroid.isModularPair_insert_closure
{α : Type u_1}
(M : Matroid α)
(X : Set α)
(e f : α)
:
M.IsModularPair (M.closure (insert e X)) (M.closure (insert f X))
theorem
Matroid.IsModularPair.restrict
{α : Type u_1}
{M : Matroid α}
{X Y R : Set α}
(hXY : M.IsModularPair X Y)
(hXR : X ⊆ R)
(hYR : Y ⊆ R)
:
(M.restrict R).IsModularPair X Y
theorem
Matroid.IsModularPair.contract_subset_closure
{α : Type u_1}
{M : Matroid α}
{X Y C : Set α}
(hXY : M.IsModularPair X Y)
(hCX : C ⊆ M.closure X)
(hCY : C ⊆ M.closure Y)
:
(M.contract C).IsModularPair (X \ C) (Y \ C)
theorem
Matroid.IsModularPair.contract
{α : Type u_1}
{M : Matroid α}
{X Y C : Set α}
(hXY : M.IsModularPair X Y)
(hCX : C ⊆ X)
(hCY : C ⊆ Y)
:
(M.contract C).IsModularPair (X \ C) (Y \ C)