LeanPool.AsymptoticTrianglePacking.Internal — Module D2 : assembling the per-round matchings #
Standalone, Mathlib-only. Foundation for the Rödl-nibble project.
The nibble builds its final matching as the union of the matchings produced in each round. Because each round works on the residual hypergraph (vertices not yet covered), the round matchings have pairwise-disjoint supports. This module proves the deterministic assembly facts:
biUnion_isMatching— a family of matchings ofHwith pairwise-disjoint supports unions to a single matching ofH.biUnion_card— if additionally all edges are nonempty (true forr ≥ 1), the union's size is the sum of the per-round sizes.
Definitions (IsMatching, support) come from LeanPool.AsymptoticTrianglePacking.Internal.Basic
/ LeanPool.AsymptoticTrianglePacking.Internal.Greedy.
Must be placeholder-free and axiom-clean [propext, Classical.choice, Quot.sound].
An edge of a family is contained in the family's support.
D2a — union of disjoint-support matchings is a matching.
D2b — the union's size is the sum of the per-round sizes (edges nonempty, e.g. r ≥ 1).