Proposition 2.4 -- the coupon collector's tail bound
OpenMarkovMixing.coupon_tailFor the coupon collector with types and any :
This bound drives the top-to-random shuffle analysis later in the series.
import Definitions.Def_mm_classical
namespace MarkovMixing
/-- **Proposition 2.4** (LPW): the coupon collector time exceeds
`⌈n log n + cn⌉` with probability at most `e^{-c}`. -/
theorem coupon_tail (n : ℕ) (hn : 1 ≤ n) (c : ℝ) (hc : 0 < c) :
couponMissProb n ⌈(n : ℝ) * Real.log n + c * n⌉₊ ≤ Real.exp (-c) := by
sorry
end MarkovMixing
Read-back
What the Lean code literally says, in plain math · claude-fable-5
For every natural number with and every real number with , the theorem asserts the inequality
Here the left-hand side is the bundle's custom quantity couponMissProb n t, defined as the number of functions from a -element type to an -element type that fail to be surjective (i.e. miss at least one of the values), counted exactly, divided by the real number — the fraction of all sequences of draws from coupons that do not collect every coupon. The time is the ceiling of taken as a natural number: the smallest natural number (this "natural ceiling" would send a negative argument to , but under the hypotheses and the argument is strictly positive, so ); denotes the natural logarithm. Note the edge behavior packed into the definition: since , the denominator is nonzero, so no division-by-zero junk value arises; in the boundary case every function to a one-element type (with draws) is surjective, so the left side is and the claim is that . The statement is a non-strict inequality (, not ), it bounds only this single deterministic ratio at the single time (no quantification over other times), and it involves no Markov chain, stationarity, or mixing hypotheses — and are the only data, constrained only by and .
Confirmed by the mission captain (proposal self-audit).