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 M
is 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' M
is 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 h
is the sum of theM
as aMatroid α
with ground set⋃ i, (M i).E
.Matroid.sum (M : Matroid α) (N : Matroid β)
is the sum ofM
andN
as a matroid onα ⊕ β
.If
M N : Matroid α
andh : Disjoint M.E N.E
, thenMatroid.disjointSum M N h
is the sum ofM
andN
as 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)