Catalog.VC.EpsilonNetTheorem

Verification

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)

1import Catalog.VC.VCDimension.Contract
2import Catalog.VC.EpsilonNet.Contract
3import Mathlib.Analysis.SpecialFunctions.Log.Basic
4
5namespace 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) -/
10axiom 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
17end Catalog.VC.EpsilonNetTheorem
18