Sums of matroids #
The sum M of a collection M₁, M₂, .. of matroids is a matroid on the disjoint union of
the ground sets of the summands, in which the independent sets are precisely the unions of
independent sets of the summands.
We can ask for such a sum both for pairs and for arbitrary indexed collections of matroids, and we can also ask for the 'disjoint union' to be either set-theoretic or type-theoretic. To this end, we define five separate versions of the sum construction.
Main definitions #
For an indexed collection
M : (i : ι) → Matroid (α i)of matroids on different types,Matroid.sigma Mis the sum of theM i, as a matroid on the sigma type(Σ i, α i).For an indexed collection
M : ι → Matroid αof matroids on the same type,Matroid.sum' Mis the sum of theM i, as a matroid on the product typeι × α.For an indexed collection
M : ι → Matroid αof matroids on the same type, and a proofh : Pairwise (Disjoint on fun i ↦ (M i).E)that they have disjoint ground sets,Matroid.disjointSigma M his the sum of theMas aMatroid αwith ground set⋃ i, (M i).E.Matroid.sum (M : Matroid α) (N : Matroid β)is the sum ofMandNas a matroid onα ⊕ β.If
M N : Matroid αandh : Disjoint M.E N.E, thenMatroid.disjointSum M N his the sum ofMandNas aMatroid αwith ground setM.E ∪ N.E.
Implementation details #
We only directly define a matroid for Matroid.sigma. All other versions of sum are
defined indirectly, using Matroid.sigma and the API in Matroid.map.
The sum of an indexed family M : ι → Matroid α of matroids on the same type,
as a matroid on the product type ι × α.
Equations
- Matroid.sum' M = (Matroid.sigma M).mapEquiv (Equiv.sigmaEquivProd ι α)
Instances For
The sum of an indexed collection of matroids on α with pairwise disjoint ground sets,
as a matroid on α
Equations
- Matroid.disjointSigma M h = (Matroid.sigma fun (i : ι) => (M i).restrictSubtype (M i).E).mapEmbedding (Function.Embedding.sigmaSet h)
Instances For
The sum of two matroids on α with disjoint ground sets, as a Matroid α.
Equations
- M.disjointSum N h = ((M.restrictSubtype M.E).sum (N.restrictSubtype N.E)).mapEmbedding (Function.Embedding.sumSet h)