LeanPool.AsymptoticTrianglePacking.Internal — T3 convergence core : geometric decay of the #
uncovered set
Standalone, Mathlib-only. The mathematical heart of the iterated nibble (T3): if each round covers a
definite fraction of the remaining vertices — so the uncovered count a k shrinks by a factor
λ < 1 per round — then after T = O(log 1/β) rounds the uncovered count is ≤ β · a 0 = βq.
geometric_decay—a (k+1) ≤ λ·a k(witha ≥ 0,λ ≥ 0) ⇒a k ≤ λ^k · a 0.exists_round_count_below— for0 ≤ λ < 1and targetβ > 0, some round countTreachesa T ≤ β · a 0.
This is the deterministic convergence mechanism into which the per-round covering bound
(exists_large_round_matching / E[covered] ≥ …) plugs to complete T3.
Must be placeholder-free and axiom-clean [propext, Classical.choice, Quot.sound].
T3-conv(2) — the uncovered count reaches β · a 0. For a per-round shrink factor
0 ≤ λ < 1 and any target fraction β > 0, some round count T brings the uncovered count down to
a T ≤ β · a 0. (Take T with λ^T < β.)
Per-round decrease bridge. If each round's uncovered count a drops by the covered amount
b (a(k+1) ≤ a k - b k) and each round covers at least a (1-λ) fraction ((1-λ)·a k ≤ b k),
then the uncovered sequence shrinks by factor λ: a(k+1) ≤ λ·a k.
T3 convergence chain. If each round covers at least a (1-λ) fraction of the remaining
uncovered vertices (0 ≤ λ < 1), then for any target β > 0 some round count T brings the
uncovered set down to ≤ β · a 0 — the nibble reaches (1-β)-coverage.
Bounded-rounds versions (only require the per-round bound for k < T) #
The unbounded hcov : ∀ k, (1-λ)·a k ≤ b k is TOO STRONG for the nibble: the per-round covering
fraction degrades (d_k → 0), so (1-λ) ≤ frac_k cannot hold for all k. These bounded variants
require the decrease/covering only for k < T, and take T with λ^T ≤ β as data — matching the
real nibble, where the covering holds while the residual is still near-regular (k < T).
Bounded convergence. For a fixed T with λ^T ≤ β, if each round k < T covers at least a
(1-λ) fraction, then a T ≤ β · a 0.
LeanPool.AsymptoticTrianglePacking.Internal — discharge of the round-dependent iteration #
Standalone, Mathlib-only. The sequence-indexed counterpart of
LeanPool.AsymptoticTrianglePacking.Internal.Discharge: with a sequence
of retention strategies (necessary by LeanPool.AsymptoticTrianglePacking.Internal.total_gain_le,
which caps the total coverage of any
single fixed strategy), each round k may cover a different fraction 1 - lam k of the remaining
uncovered vertices, and the uncovered count after T rounds is controlled by the PRODUCT
∏_{k<T} lam k rather than by a power lam ^ T.
geometric_decay_prod_lt,uncovered_below_prod_lt— convergence with round-dependent factors.nibble_matching_card_of_oracle_seq_lt— the covered-count bound from a bounded-rounds oracle.exists_matching_of_oracle_seq_lt— theNibbleTheoremper-instance conclusion.
Must be placeholder-free and axiom-clean [propext, Classical.choice, Quot.sound].
Bounded convergence with round-dependent factors. If round k < T decreases the uncovered
count by at least a (1 - lam k)-fraction, then a T ≤ (∏_{k<T} lam k) · a 0 ≤ β · a 0.
Round-dependent discharge. With a sequence of retention strategies and a bounded-rounds
oracle — round k < T covers at least a (1 - lam k)-fraction of the vertices still uncovered —
the accumulated matching after T rounds covers at least (1-β)·|V|, hence has size at least
(1-β)·(|V|/r), provided ∏_{k<T} lam k ≤ β.
Round-dependent oracle ⇒ the NibbleTheorem per-instance conclusion.
LeanPool.AsymptoticTrianglePacking.Internal — from a per-round covering oracle to the adaptive #
strategy sequence
Standalone (imports only LeanPool.AsymptoticTrianglePacking.Internal.IterationSeq /
LeanPool.AsymptoticTrianglePacking.Internal.DischargeSeq and Mathlib).
The corrected outer interface of the nibble
(LeanPool.AsymptoticTrianglePacking.Internal.AdaptiveOracleExistsCeil) asks for a strategy
sequence R : ℕ → Finset (Finset V) → Finset (Finset V), per-round rates lam : ℕ → ℝ with
∏_{k<T} lam k ≤ β, and the per-round covering demand
(1 - lam k) · (#uncovered after k rounds) ≤ #(vertices covered in round k).
This file performs the two architectural reductions of that demand, both placeholder-free:
exists_adaptive_rates_of_uncovered_le— the rate sequencelamis never an obstruction: for ANY strategy sequenceR, the rateslam k := u (k+1) / u k(withu kthe uncovered count afterkrounds) satisfy the per-round demand with equality, and their product telescopes tou T / u 0. Hence the whole outer demand is EQUIVALENT to the single scalar statementu T ≤ β · |V|— "afterTrounds at most aβ-fraction of the vertices is still uncovered".exists_uncovered_le_of_roundOracle— that scalar statement follows from a purely one-round oracleHasRoundOracle H c β: an invariantInvon (residual hypergraph, covered set) pairs which holds initially and, as long as more than aβ-fraction of the vertices is uncovered, can be advanced by one round that covers at least ac-fraction of the still-uncovered vertices. The strategy sequence is built explicitly (oracleStrategy,oracleStateSeq) so that no well-founded recursion or dependent choice over the history is needed.
Combining the two gives exists_adaptive_strategy_of_roundOracle, which is exactly the per-instance
conclusion of AdaptiveOracleExistsCeil. The converse hasRoundOracle_of_matching shows the
one-round oracle is not a strengthening: it already follows from the existence of one large
matching.
Must be placeholder-free and axiom-clean [propext, Classical.choice, Quot.sound].
A matching is its own round matching: every retained edge is isolated.
The uncovered count #
The number of vertices still uncovered after k rounds of the strategy sequence R.
Equations
Instances For
One round decreases the uncovered count by exactly the number of vertices it covers.
The rate sequence is never an obstruction #
For ANY strategy sequence, the canonical rates lam k = u (k+1) / u k meet the per-round covering
demand with equality and telescope. So the entire outer-loop demand of AdaptiveOracleExistsCeil
reduces to the single scalar statement u T ≤ β · |V|.
The canonical per-round rate of a strategy sequence: the ratio of consecutive uncovered counts
(with the convention 0 once everything is covered).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical rates satisfy the per-round covering demand — with equality when some vertex is still uncovered.
The rate sequence is never an obstruction. If after T rounds at most a β-fraction of the
vertices is uncovered, then the canonical rates witness the full per-round demand of
AdaptiveOracleExistsCeil.
The explicit strategy sequence built from a one-round oracle #
The state (accumulated matching, current residual) after k rounds of the state-indexed
oracle G, which chooses the retained set from the current residual and the current covered set.
Equations
Instances For
The strategy sequence induced by a state-indexed oracle: in round k it feeds the oracle the
covered set reached after k rounds. This is a bona fide ℕ → Finset (Finset V) → Finset (Finset V) — no dependence on the run-time history is needed, because the history is a
function of G and H alone.
Equations
Instances For
The nibble iteration of oracleStrategy G H is exactly the oracle state sequence.
The one-round oracle #
The one-round covering oracle. An invariant Inv on pairs (current residual hypergraph,
currently covered set) which
- holds at the start, and
- as long as more than a
β-fraction of the vertices is still uncovered, can be advanced by ONE round: a retained setR' ⊆ H'whose round matching covers at least ac-fraction of the still-uncovered vertices and re-establishes the invariant.
This is the per-round (non-iterated) content of the nibble outer loop.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Iterating the one-round oracle. A per-round oracle covering a c-fraction of the uncovered
set drives the uncovered count below β·|V| in a bounded number of rounds.
The per-round oracle produces the full adaptive strategy sequence. This is exactly the
per-instance conclusion demanded by
LeanPool.AsymptoticTrianglePacking.Internal.AdaptiveOracleExistsCeil.
Round oracle from a scheduled invariant. In practice the nibble invariant is not preserved
by an unbounded number of rounds: the degree scale, the regularity slack and the exceptional set all
degrade from round to round, and the schedule is only good for T rounds. This lemma performs the
bookkeeping: an invariant indexed by the round counter, preserved for T rounds, each round
covering a c-fraction of the uncovered set, already yields a HasRoundOracle — because after T
rounds fewer than a β-fraction of the vertices is left, so the oracle is never asked to step
again. The hypothesis hdisj (edges of the current residual avoid the covered set) is the standing
invariant of the nibble iteration (nibbleResidualSeq_disjoint_support).
Bridges to the hypergraph bricks #
The two elementary conversions a concrete round oracle has to perform: from a lower bound on the
round matching's cardinality to the covering demand (via r-uniformity), and from a set of
high-degree vertices to a lower bound on the number of edges (handshake).
Covering demand from the round matching's cardinality. In an r-uniform hypergraph the
round matching covers exactly r times its cardinality, so a cardinality bound is a covering
bound.
Handshake lower bound on the edge count. Any set A of vertices of degree at least δ
forces δ · |A| ≤ r · |H|.
The covering demand of HasRoundOracle, from the standard one-round output. This is the
last bridge a concrete round oracle has to cross. The nibble bricks deliver a round matching of
cardinality at least γ·|H'| (with γ = p·(1-p)^{rΔ} minus the bad-event penalty); the residual
near-regularity delivers a set A of vertices of degree at least δ in H'; and the exceptional
(dead) vertices are at most m. Then the round covers at least γ·δ·(U - m) vertices, where U is
the number of still-uncovered vertices. Handshake plus r-uniformity, nothing else.
The one-round oracle is not a strengthening. A single matching covering a (1-β)-fraction
of the vertices already realises a one-round oracle with c = 1 - β.
Ceiling-carrying oracle interface #
This module contains the interface and deterministic assembly shared by the tight-band nibble proof. It deliberately contains no historical majority-only or round-oracle development: the global degree ceiling is part of every input.
The adaptive ceiling oracle obtained by iterating a one-round oracle.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The ceiling interface follows from its adaptive oracle.
A one-round ceiling oracle which can be iterated into the adaptive oracle.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Iterating the one-round ceiling oracle yields the adaptive ceiling oracle.
The ceiling-carrying theorem entails the strict near-regular theorem.
LeanPool.AsymptoticTrianglePacking.Internal — the tight-band assembly: from one sharp round to the #
LeanPool.AsymptoticTrianglePacking.Internal theorem
This file performs the ASSEMBLY of the LeanPool.AsymptoticTrianglePacking.Internal out of the
iterable single round
LeanPool.AsymptoticTrianglePacking.Internal.SharpRoundHyp
(LeanPool.AsymptoticTrianglePacking.Internal.Tight.SharpRound):
LeanPool.AsymptoticTrianglePacking.Internal.TightParams— the schedule: the round rateγ, the relative toleranceε, the per-round exceptional fractionθ, the initial exceptional fractionη, the number of roundsT, the degree band[d·lo k, d·hi k]afterkrounds and the exceptional budgetsig k, together with every inequality the iteration consumes.LeanPool.AsymptoticTrianglePacking.Internal.roundOracle_of_sharpRound_params— one round of the schedule: the tight-band invariant is re-established (band, global ceiling, codegree, exceptional budget) and aγ/(16r)fraction of the uncovered vertices is covered; iterated byLeanPool.AsymptoticTrianglePacking.Internal.hasRoundOracle_of_scheduled_invariant.LeanPool.AsymptoticTrianglePacking.Internal.exists_tightParams— the schedule exists for everyr ≥ 2andβ ∈ (0,1).LeanPool.AsymptoticTrianglePacking.Internal.roundOracleExistsCeil_of_sharpRound,LeanPool.AsymptoticTrianglePacking.Internal.nibbleTheoremMostCeil_of_sharpRound,LeanPool.AsymptoticTrianglePacking.Internal.nibbleTheoremMostCeilSized_of_sharpRound,LeanPool.AsymptoticTrianglePacking.Internal.nibbleTheorem_of_sharpRound— the packaged conclusions.
The three mechanisms of the assembly are:
- the band step — the floor falls by at most
((r−1)/r)γΔ + εγΔand the ceiling by at least((r−1)/r)γ(δ−lost)δ(1−γ)/Δ − εγΔ, so a band of relative widthnwidens ton(1 + 8((r−1)/r)γ)while both ends fall by the factor1 − ((r−1)/r)γ; - the exceptional bookkeeping — the vertices that leave the band (
B), the vertices with too many edges into the exceptional set (heavy), the vertices that break the new ceiling (Hi, contained inE ∪ B ∪ heavy) and the vertices damaged by pruningHi(Dam) are all counted by the deterministic estimateLeanPool.AsymptoticTrianglePacking.Internal.card_heavyLoss_le; the exceptional set therefore grows by a bounded factor(2 + r/(εγ))²per round, which the choice ofθabsorbs; - the covering count — the round covers a
γ/(8r)fraction of the live set, which is at least half of the uncovered set as long as the exceptional set stays belowβ|V|/2.
Must be sorry-free and axiom-clean [propext, Classical.choice, Quot.sound].
The schedule #
The tight-band schedule. All parameters of the T-round
LeanPool.AsymptoticTrianglePacking.Internal at uniformity r and target
β, with the inequalities the iteration consumes. lo k, hi k are the degree band after k
rounds RELATIVE to the regular degree d, and sig k is the exceptional budget as a fraction of
|V|.
- gam : ℝ
round rate
- eps : ℝ
relative band tolerance
- exc : ℝ
per-round exceptional fraction
- eta : ℝ
initial exceptional fraction
- wid : ℝ
initial relative band width
- lomin : ℝ
a positive lower bound for the relative band floor
- T : ℕ
the number of rounds
relative degree floor after
kroundsrelative degree ceiling after
kroundsexceptional budget after
kroundsthe tolerance is at least twice the round rate; this is the regime in which the sharp round
LeanPool.AsymptoticTrianglePacking.Internal.sharpRoundFor_of_two_gamma_le_epsis proved
Instances For
Elementary hypergraph bricks used by the step #
Pruning kills the degree of the pruned vertices.
Degrees are monotone in the hypergraph.
Codegrees are monotone in the hypergraph.
Only the part of the deleted set that the edges actually meet matters.
A vertex in an edge-avoided set has degree zero.
The number of edges meeting B, bounded by the degree sum over B.
The total loss equals the size of the edges meeting B.
Few vertices lose many edges (real form). At most r·|B|·Δ/ζ vertices lose more than ζ
edges when the edges meeting B are deleted.
Few vertices lose many edges (ratio form). If r·Δ = psi·ζ then at most psi·|B| vertices
lose more than ζ edges when the edges meeting B are deleted.
The ceiling of the next round. The drop requested by
LeanPool.AsymptoticTrianglePacking.Internal.TightParams.step_hi, at the
absolute scale d and with an actual loss l below the tolerance εγ·d·hi, still lands below
d·hi₁.
Vertex count from the codegree bound. A vertex of degree D forces
(r−1)·D ≤ (|V| − 1)·κ.
The arithmetic of the exceptional budget: the new exceptional set is the old one (e) plus the
vertices that left the band (b), plus those heavily damaged by the old exceptional set (h), plus
those breaking the new ceiling (hh ≤ e + b + h), plus those damaged by pruning the latter
(dm ≤ psi·hh); the total is at most (2 + psi)²(e + b).
One round of the schedule #
One round of the tight-band schedule. From the invariant at stage j — an r-uniform
sub-hypergraph K avoiding the covered set S, with global degree ceiling d·hi j, degree floor
d·lo j off the exceptional set E, codegrees ≤ κ and |E| ≤ sig j·|V| — one sharp round
produces a retained set covering a γ/(16r) fraction of the uncovered vertices and re-establishes
the invariant at stage j+1.
LeanPool.AsymptoticTrianglePacking.Internal — existence of the tight-band schedule #
LeanPool.AsymptoticTrianglePacking.Internal.exists_tightParams: for every uniformity r ≥ 2 and
every target β ∈ (0,1) there is a
LeanPool.AsymptoticTrianglePacking.Internal.TightParams r β, i.e. a complete choice of
- the round rate
γ, the relative toleranceε, the exceptional fractionsθ(per round) andη(initial), the number of roundsT, - the relative degree band
[lo k, hi k]afterkrounds and the exceptional budgetsig k,
satisfying every inequality that LeanPool.AsymptoticTrianglePacking.Internal.tight_round_step and
LeanPool.AsymptoticTrianglePacking.Internal.hasRoundOracle_of_scheduled_invariant consume.
The schedule is the classical one. With a = (r−1)/r ∈ [1/2, 1):
γ = min (1/8) (exp(−8M−1)/32)whereM = 16rL + 1andL = log(1/β),n₀ = 8γ,ε = 4aγ;q = 1 − aγ,n k = n₀(1 + 8aγ)^k,lo k = q^k(1 − n k),hi k = q^k(1 + n k);T = ⌈M/γ⌉, soγT ∈ [M, M + γ]. Then(1 − γ/(16r))^T ≤ exp(−M/(16r)) ≤ exp(−L) = β, whilen T ≤ n₀ exp(8γT) ≤ 8γ·exp(8M+1) ≤ 1/4— the point being thatγT ≈ Mis INDEPENDENT ofγ, so makingγsmall really does shrink the total band widening.sig k = 2θ(2G)^kwithG = (2 + r/(εγ))²the per-round exceptional growth factor andη = θ = β/(8(2G)^T), sosig k ≤ β/4.
The two per-round band inequalities reduce to the polynomial cores
LeanPool.AsymptoticTrianglePacking.Internal.tight_band_step_lo_core and
LeanPool.AsymptoticTrianglePacking.Internal.tight_band_step_hi_core.
Must be sorry-free and axiom-clean [propext, Classical.choice, Quot.sound].
The two polynomial cores of the band step #
Floor step (polynomial core). With ε = 4aγ and 8γ ≤ n ≤ 1/4, the quantity by which the
new floor q(1 − n(1+8aγ)) falls short of the guaranteed drop is aγ(6n − 8γ − 8γn − 8aγn) ≥ 0.
Ceiling step (polynomial core). With ε = 4aγ and 8γ ≤ n ≤ 1/4, the first-order gain
4an + 8an² of the ceiling dominates all the correction terms.
Floor step (scaled). The polynomial core
LeanPool.AsymptoticTrianglePacking.Internal.tight_band_step_lo_core, multiplied by
the common factor q^k carried by both ends of the band.
Ceiling step (scaled). The polynomial core
LeanPool.AsymptoticTrianglePacking.Internal.tight_band_step_hi_core, after clearing
the denominator 1 + n and multiplying by the common factor q^k carried by both ends of the
band.
The band width stays below 1/4. With γ ≤ exp(−8M−1)/32 and γT ≤ M + γ, the relative
width n k = 8γ(1 + 8aγ)^k never exceeds 1/4 before the last round.
The total decay of the schedule. γT ≥ M = 16rL + 1 with L = log(1/β) gives
(1 − γ/(16r))^T ≤ exp(−L) = β.
The schedule #
The tight-band schedule exists.