Commit 2024-05-12 02:17 ad584cd8

View on Github →

feat(Data/Matroid/*): add Indep as a structure field to Matroid. (#12665) This PR slightly shuffles the design of Matroid to improve defeq. Specifically, we add Indep as a structure field of Matroid together with a rule that Indep relates correctly to Base, where previously Matroid.Indep was defined after the fact. This has the consequence that, when a matroid M is built using a user-supplied independence predicate Indep (via IndepMatroid.matroid) , the terms M.Indep and Indep are defeq, where previously this needed to be proved by simp. This turns a few proofs already appearing in mathlib into Iff.rfl, and this same benefit will apply to many future API additions, since the independence predicate is the most common way to construct a matroid in practice. The tradeoff is that independence is no longer definitionally the same as being a subset of a base, but this seems to be worth it; it is simply a matter of using Indep.exists_base_superset where needed. The fact that now Matroid.mk is a bit 'heavier' than before is almost irrelevant, since matroids are essentially always going to be defined in terms of one of the alternative constructors, which are unchanged.

Estimated changes

modified def Matroid.Basis'
modified def Matroid.Basis
modified def Matroid.Dep
modified theorem Matroid.Indep.subset
deleted def Matroid.Indep
added theorem Matroid.indep_iff
modified theorem Matroid.setOf_indep_eq