Commit 2024-06-26 17:56 cf35070b

View on Github →

feat(Data/Matroid/Map): maps between matroids (#13960) This PR creates a new file with the machinery for transferring matroid structures between types. The most important definitions are Matroid.map, which pushes a M : Matroid α along f : α → β to give an N : Matroid β, and Matroid.comap, which pulls N : Matroid β back along f : α → β to get an M : Matroid α. The former requires f to be injective on the ground set of M, but the latter doesn't. The original decision to define matroids with an embedded ground set within a type rather than just a structure on a type came with tradeoffs, and it is in places like this that they show up the most. For this reason, the file also defines several variants of map where the range/domain of the function in question is a coerced set rather than a type. There is nothing mathematically interesting going on with these definitions, and maps and comaps are not central to matroid theory in actual research, but they are very useful in making formalization painless, as they save the work of painstakingly checking matroid axioms in many cases. They will be used in future PRs to define things like direct sums and linearly representable matroids.

Estimated changes

added theorem Matroid.Base.map
added theorem Matroid.Basis.map
added theorem Matroid.Indep.map
added def Matroid.comap
added def Matroid.comapOn
added theorem Matroid.comap_base_iff
added theorem Matroid.comap_dep_iff
added theorem Matroid.comap_emptyOn
added theorem Matroid.comap_id
added theorem Matroid.comap_loopyOn
added theorem Matroid.comap_map
added def Matroid.map
added def Matroid.mapEquiv
added theorem Matroid.map_base_iff
added theorem Matroid.map_basis_iff'
added theorem Matroid.map_basis_iff
added theorem Matroid.map_comap
added theorem Matroid.map_dep_iff
added theorem Matroid.map_dual
added theorem Matroid.map_emptyOn
added theorem Matroid.map_freeOn
added theorem Matroid.map_ground
added theorem Matroid.map_id
added theorem Matroid.map_indep_iff
added theorem Matroid.map_loopyOn