OAI/NumberTheory/Ostmann/Tree/PartitionMatching.lean
8 declarations, 0 contain sorry, 0 declared as axioms
Counting labeled arrangements that respect paired partitions
- def
OAI.Ostmann.PartitionMatchingline 13 - instance
OAI.Ostmann.(instance at line 16)line 16 - def
OAI.Ostmann.PartitionMatching.restrictline 20 - theorem
OAI.Ostmann.PartitionMatching.restrict_injectiveline 28 - theorem
OAI.Ostmann.card_partitionMatching_leline 39Source documentation
Each label can be matched independently; an upper bound suffices even without constructing the inverse assembly map.
theorem card_partitionMatching_le {A B C : Type*} [Fintype A] [Fintype B] [Fintype C] (f : A → C) (g : B → C) (hcard : ∀ c, Fintype.card {a : A // f a = c} = Fintype.card {b : B // g b = c}) : Fintype.card (PartitionMatching f g) ≤ ∏ c, (Fintype.card {a : A // f a = c}).factorial := by …Mentions: OAI.Ostmann.PartitionMatching
- def
OAI.Ostmann.slotFiberEquivline 55 - theorem
OAI.Ostmann.card_slotFiberline 62 - theorem
OAI.Ostmann.card_slotMatching_leline 71Source documentation
Slots and sampled variables remain labeled, so every arrangement is an actual permutation of all rm positions.
theorem card_slotMatching_le {L C : Type*} [Fintype L] [Fintype C] (f g : L → C) (m : ℕ) (hcard : ∀ c, Fintype.card {l : L // f l = c} = Fintype.card {l : L // g l = c}) : Fintype.card (PartitionMatching (fun x : L × Fin m => f x.1) (fun x : L × Fin m => g x.1)) ≤ ∏ c, (Fintype.card {l : L // f l = c} * m).factorial := by …Mentions: OAI.Ostmann.PartitionMatching