Catalog.VC.EpsilonNetTheorem
Theorem
For every \(d \ge 1\) there exists a constant \(C(d)\) such that the following holds. If \(X\) is a nonempty set with a probability measure \(\mu\), \(\mathcal{S}\) is a system of \(\mu\)-measurable subsets of \(X\) with \(\dim(\mathcal{S}) \le d\) (Definition VCDimension), and \(r \ge 2\), then there exists a \(\frac{1}{r}\)-net (Definition EpsilonNet) for \((X, \mathcal{S})\) with respect to \(\mu\) of size at most \(C(d)\, r \ln r\).
Review notes
Matoušek Theorem 5.12: the \(\varepsilon\)-net theorem.
The constant \(C\) is quantified before the type \(\alpha\), ensuring it depends only on the VC-dimension bound \(d\).
The source states this for a general probability measure \(\mu\). We use the uniform distribution on a finite type. The general measure case reduces to this by padding \(X\) with dummy points (see proof sketch below), so no generality is lost at the theorem level.
The Lean contract now makes the nonemptiness of the ground type explicit via
[Nonempty α]. This is not extra mathematical content: a probability
measure already forces the underlying space to be nonempty in the source
setting. In the finite-uniform encoding, omitting this assumption makes the
statement false on the empty type. Concretely, for \(\mathcal{A} = \{\emptyset\}\)
on \(\alpha = \emptyset\), the current predicate
Catalog.VC.EpsilonNet.IsEpsilonNet treats \(\emptyset\) as heavy because both
sides of the density test are zero, but no finite set can intersect it
nontrivially.
Proof outline. Pad \(X\) with dummy points to \(X'\) of size \(2^k\).
By Catalog.VC.EpsilonApproximationBound: obtain a
\(\frac{1}{4r}\)-approximation \(Y \subseteq X'\) of size \(O(r^2 \log r)\).
Apply Catalog.VC.EasyEpsilonNetLemma to \((Y, \mathcal{S}|_Y)\): yields a
\(\frac{1}{2r}\)-net \(N\) of size \(O(r \ln \pi(|Y|)) = O(r \ln r)\). Since
\(Y\) is a \(\frac{1}{4r}\)-approximation, \(N\) is a \(\frac{1}{r}\)-net for \(X\).
Catalog/VC/EpsilonNetTheorem/Contract.lean (full)
| 1 | import Catalog.VC.VCDimension.Contract |
| 2 | import Catalog.VC.EpsilonNet.Contract |
| 3 | import Mathlib.Analysis.SpecialFunctions.Log.Basic |
| 4 | |
| 5 | namespace Catalog.VC.EpsilonNetTheorem |
| 6 | |
| 7 | /-- For every VC-dimension bound `d`, there exists a constant `C` such that |
| 8 | any set family with VC-dimension at most `d` admits a `(1/r)`-net of size |
| 9 | at most `C · r · ln r`, for all `r ≥ 2`. (Theorem 5.12) -/ |
| 10 | axiom epsilonNetTheorem (d : ℕ) : ∃ C : ℝ, 0 < C ∧ |
| 11 | ∀ (α : Type*) [DecidableEq α] [Fintype α] [Nonempty α] (𝒜 : Finset (Finset α)), |
| 12 | 𝒜.vcDim ≤ d → |
| 13 | ∀ (r : ℝ), 2 ≤ r → |
| 14 | ∃ N : Finset α, Catalog.VC.EpsilonNet.IsEpsilonNet 𝒜 (1 / r) N ∧ |
| 15 | (N.card : ℝ) ≤ C * r * Real.log r |
| 16 | |
| 17 | end Catalog.VC.EpsilonNetTheorem |
| 18 |