Maps between matroids #
This file defines maps and comaps, which move a matroid on one type to a matroid on another using a function between the types. The constructions are (up to isomorphism) just combinations of restrictions and parallel extensions, so are not mathematically difficult.
Because a matroid M : Matroid α is defined with am embedded ground set M.E : Set α
which contains all the structure of M, there are several types of map and comap
one could reasonably ask for;
for instance, we could map M : Matroid α to a Matroid β using either
a function f : α → β, a function f : ↑M.E → β or indeed a function f : ↑M.E → ↑E
for some E : Set β. We attempt to give definitions that capture most reasonable use cases.
Matroid.map and Matroid.comap are defined in terms of bare functions rather than
functions defined on subtypes, so are often easier to work in practice than the subtype variants.
In fact, the statement that N = Matroid.map M f _ for some f : α → β
is equivalent to the existence of an isomorphism from M to N,
except in the trivial degenerate case where M is an empty matroid on a nonempty type and N
is an empty matroid on an empty type.
This can be simpler to use than an actual formal isomorphism, which requires subtypes.
Main definitions #
In the definitions below, M and N are matroids on α and β respectively.
For
f : α → β,Matroid.comap N fis the matroid onαwith ground setf ⁻¹' N.Ein which eachIis independent if and only iffis injective onIandf '' Iis independent inN. (For each nonloopxofN, the setf ⁻¹' {x}is a parallel class ofN.comap f)Matroid.comapOn N f Eis the restriction ofN.comap ftoEfor someE : Set α.For an embedding
f : M.E ↪ βdefined on the subtype↑M.E,Matroid.mapSetEmbedding M fis the matroid onβwith ground setrange fwhose independent sets are the images of those inM. This matroid is isomorphic toM.For a function
f : α → βand a proofhfthatfis injective onM.E,Matroid.map f hfis the matroid onβwith ground setf '' M.Ewhose independent sets are the images of those inM. This matroid is isomorphic toM, and does not depend on the valuesftakes outsideM.E.Matroid.mapEmbedding fis a version ofMatroid.mapwheref : α ↪ βis a bundled embedding. It is defined separately because the global injectivity offgives some nicersimplemmas.Matroid.mapEquiv fis a version ofMatroid.mapwheref : α ≃ βis a bundled equivalence. It is defined separately because we get even nicersimplemmas.Matroid.mapSetEquiv fis a version ofMatroid.mapwheref : M.E ≃ Eis an equivalence on subtypes. It gives a matroid onβwith ground setE.For
X : Set α,Matroid.restrictSubtype M Xis theMatroid ↥Xwith ground setuniv : Set ↥X. This matroid is isomorphic toM ↾ X.
Implementation details #
The definition of comap is the only place where we need to actually define a matroid from scratch.
After comap is defined, we can define map and its variants indirectly in terms of comap.
If f : α → β is injective on M.E, the independent sets of M.map f hf are the images of
the independent set of M; i.e. (M.map f hf).Indep I ↔ ∃ I₀, M.Indep I₀ ∧ I = f '' I₀.
But if f is globally injective, we can phrase this more directly;
indeed, (M.map f _).Indep I ↔ M.Indep (f ⁻¹' I) ∧ I ⊆ range f.
If f is an equivalence we have (M.map f _).Indep I ↔ M.Indep (f.symm '' I).
In order that these stronger statements can be @[simp],
we define mapEmbedding and mapEquiv separately from map.
Notes #
For finite matroids, both maps and comaps are a special case of a construction of
Perfect [perfect1969matroid] in which a matroid structure can be transported across an arbitrary
bipartite graph that may not correspond to a function at all (See [oxley2011], Theorem 11.2.12).
It would have been nice to use this more general construction as a basis for the definition
of both Matroid.map and Matroid.comap.
Unfortunately, we can't do this, because the construction doesn't extend to infinite matroids.
Specifically, if M₁ and M₂ are matroids on the same type α,
and f is the natural function from α ⊕ α to α,
then the images under f of the independent sets of the direct sum M₁ ⊕ M₂ are
the independent sets of a matroid if and only if the union of M₁ and M₂ is a matroid,
and unions do not exist for some pairs of infinite matroids: see [aignerhorev2012infinite].
For this reason, Matroid.map requires injectivity to be well-defined in general.
TODO #
- Bundled matroid isomorphisms.
- Maps of finite matroids across bipartite graphs.
References #
- [E. Aigner-Horev, J. Carmesin, J. Fröhlic, Infinite Matroid Union][aignerhorev2012infinite]
- [H. Perfect, Independence Spaces and Combinatorial Problems][perfect1969matroid]
- [J. Oxley, Matroid Theory][oxley2011]
The pullback of a matroid on β by a function f : α → β to a matroid on α.
Elements with the same (nonloop) image are parallel and the ground set is f ⁻¹' M.E.
The matroids M.comap f and M ↾ range f have isomorphic simplifications;
the preimage of each nonloop of M ↾ range f is a parallel class.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The pullback of a matroid on β by a function f : α → β to a matroid on α,
restricted to a ground set E.
The matroids M.comapOn f E and M ↾ (f '' E) have isomorphic simplifications;
elements with the same nonloop image are parallel.
Instances For
Map a matroid M to an isomorphic copy in β using an embedding M.E ↪ β.
Equations
- M.mapSetEmbedding f = Matroid.ofExistsMatroid (Set.range ⇑f) (fun (I : Set β) => M.Indep (Subtype.val '' (⇑f ⁻¹' I)) ∧ I ⊆ Set.range ⇑f) ⋯
Instances For
Given a function f that is injective on M.E, the copy of M in β whose independent sets
are the images of those in M. If β is a nonempty type, then N : Matroid β is a map of M
if and only if M and N are isomorphic.
Equations
Instances For
Map M : Matroid α to a Matroid β with ground set E using an equivalence M.E ≃ E.
Defined using Matroid.ofExistsMatroid for better defeq.
Equations
- M.mapSetEquiv e = Matroid.ofExistsMatroid E (fun (I : Set β) => M.Indep (Subtype.val '' (⇑e.symm '' (Subtype.val ⁻¹' I))) ∧ I ⊆ E) ⋯
Instances For
Map M : Matroid α across an equivalence α ≃ β
Equations
- M.mapEquiv f = M.mapEmbedding f.toEmbedding
Instances For
Given M : Matroid α and X : Set α, the restriction of M to X,
viewed as a matroid on type X with ground set univ.
Always isomorphic to M ↾ X. If X = M.E, then isomorphic to M.
Equations
- M.restrictSubtype X = (M.restrict X).comap Subtype.val
Instances For
M.restrictSubtype X is isomorphic to M ↾ X.
M.restrictSubtype M.E is isomorphic to M.