Repository navigation
feat: the self-bounding inequality [MDJKLV21, Lemma 13] with the corrected constant - #287
Merged
Conversation
…ected constant Solve `τ ≤ C √(τ (A L + B L²)) + D (A L + E L²)`, `L = log (α τ)`, for `τ`: `Real.le_of_le_sqrt_mul_add` (constant `C₁ = (8/5) log (11 α² (A + E) (C + √D)²)`) and `Real.le_of_le_sqrt_mul_add'` (`(C + D)²`, for `D ≥ 1`), with the root of a quadratic inequality `Real.le_add_sqrt_of_sq_le` and the logarithm bounds `Real.log_le_rpow_div_exp_one_mul`, `Real.log_le_of_le_mul_sq_log`. Co-Authored-By: Claude Code <noreply@github.com>
RemyDegenne
commented
Nov 12, 2026
RemyDegenne
commented
Nov 12, 2026
RemyDegenne
commented
Nov 12, 2026
RemyDegenne
commented
Nov 12, 2026
Contributor
Author
AI review — approvedEach rubric is judged independently by multiple review agents; the PR merges only once every rubric is green — any rubric that is not green (changes requested, blocked, errored, stale, or not yet run) blocks the merge. See the rubrics.
♻️ = approved on an earlier commit, re-run before merge. Reviewing this diff at head |
Credit the Essakine2026Tight formalization in the changed files, drop the redundant hypothesis 0 < M of Real.log_le_of_le_mul_sq_log, weaken 1 < τ to 1 ≤ τ in Real.log_le_of_le_sqrt_mul_add, factor the shared 1 ≤ log (α τ) step into a private helper, and say "general form" instead of "sharp form". Co-Authored-By: Claude Code <noreply@github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0196ftMV379vy48QfzHBVNvo
RemyDegenne
commented
Nov 13, 2026
Move the helper `1 ≤ log (x y)` for `x ≥ e`, `y ≥ 1` out of the self-bounding file, where it was private, into LMLExplore/Analysis/SpecialFunctions/Log/Basic.lean as the public `Real.one_le_log_mul`, next to `Real.one_le_log_natCast_of_three_le`. Co-Authored-By: Claude Code <noreply@github.com>
The squared (C + D)² form needs D ≥ 1, which the paper does not assume; the bound holding for all D ≥ 0 without positivity assumptions is the (C + √D)² one. Co-Authored-By: Claude Code <noreply@github.com>
Merged
via the queue into
LeanMachineLearning:main
with commit Nov 13, 2026
43d6b42
23 of 25 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds the self-bounding inequality of Ménard et al. [MDJKLV21, Lemma 13], the inversion of the implicit inequality on the stopping time τ: if
τ ≤ C √(τ (A L + B L²)) + D (A L + E L²)withL = log (α τ),α ≥ e,A, B, C, D ≥ 0andB ≤ E, thenτ ≤ C² (A + B) C₁² + (D + 2 √D C) (A + E) C₁² + 1withC₁ = (8/5) log (11 α² (A + E) (C + √D)²)(Real.le_of_le_sqrt_mul_add), or with(C + D)²in place of(C + √D)²whenD ≥ 1(Real.le_of_le_sqrt_mul_add').Roadmap: ReinforcementLearning
The target is ReinforcementLearning Layer 19.2 (RF-Express [MDJKLV21, Theorem 1]), the tool "the inversion of the implicit inequality on τ [MDJKLV21, Lemma 13]". The sample-complexity bound of that milestone,
τ ≤ (H³SA/ε²)(log(3SAH/δ) + S) C₁ + 1, is obtained by applying this lemma to the inequality on τ that the counting argument produces. After this PR, Layer 19.2 still needs its other tools (counts versus pseudo-counts, the KL-to-Bernstein transport, the variance transfers [MDJKLV21, Lemmas 10–12] and∑_t u_{t+1}/max(1, U_t) ≤ 4 log(U_{T+1} + 1)[MDJKLV21, Lemma 9]), then the algorithm and its PAC and sample-complexity theorem.The constant printed in [MDJKLV21, Lemma 13] and [EV26, Lemma 29],
C₁ = (8/5) log (11 α² (A + E) (C + D)), is too small. A counterexample, recorded in the module docstring and checked numerically:α = e,B = E = 1,C = 1000,A = D = 10⁻⁶,τ = 4·10⁸satisfy the hypothesis, while the printed bound gives about3.27·10⁸. Squaring the factorC + Dfixes it. The paper's assumptionsA, B, C, D > 0andB ≥ 1are dropped, and so isτ ≥ 0.New declarations:
LMLExplore/Analysis/SpecialFunctions/Log/SelfBounding.lean(new file):Real.le_mul_sq_of_le_sqrt_mul_add(the quadratic part, for anyL ≥ 1and not onlylog (α τ):τ ≤ K L²withK = C² (A + B) + (D + 2 √D C) (A + E)),Real.log_le_of_le_sqrt_mul_add(log (α τ) ≤ (8/5) log (4 α K)forτ ≥ 1),Real.le_mul_sq_log_add_one_of_le_sqrt_mul_add(τ ≤ K ((8/5) log M)² + 1for everyM ≥ 4 α K),Real.le_of_le_sqrt_mul_addandReal.le_of_le_sqrt_mul_add'. The bound4 α K ≤ 11 α² (A + E) (C + √D)²is a private helper of these last two.LMLExplore/Analysis/Real/Sqrt.lean:Real.le_add_sqrt_of_sq_le, the root of a quadratic inequality (x² ≤ b x + cwithb, c ≥ 0givesx ≤ b + √c).LMLExplore/Analysis/SpecialFunctions/Log/Basic.lean:Real.one_le_log_mul(1 ≤ log (x y)forx ≥ eandy ≥ 1, next toReal.one_le_log_natCast_of_three_le), and, next toReal.log_div_rpow_le_exp_neg_one,Real.log_le_rpow_div_exp_one_mul(log y ≤ y^γ / (e γ)fory ≥ 0, which is Mathlib'sReal.log_le_rpow_divsharpened by the factore) andReal.log_le_of_le_mul_sq_log(1 ≤ y ≤ M log² ygiveslog y ≤ (8/5) log (4 M), with no assumption onM).No declaration is removed or renamed.
Source: this PR ports item R24 of the paper project RemyDegenne/Essakine2026Tight, at commit 73a8c16c42ec1c41f8d38c5d2af232f36c2cff15 (Apache-2.0), files
Essakine2026Tight/ForLMLExplore/Analysis/Real/Sqrt.lean,Analysis/SpecialFunctions/Pow/Real.leanandAnalysis/SpecialFunctions/Log/SelfBounding.lean. Changes from the source:L = log (α τ)to anyL ≥ 1.0 ≤ τis dropped from the final bounds, andy > 0is relaxed toy ≥ 0inlog_le_rpow_div_exp_one_mul.4 α Kbound is now private, the1 ≤ log (α τ)helper is the publicReal.one_le_log_mulinLog/Basic.lean, and the hypothesisM > 0of the source'slog y ≤ (8/5) log (4 M)is dropped (it follows from the others).Log/Basic.leanrather than a newPow/Real.lean.Local checks (not CI):
lake build --iofailgreen; the local changed-module axiom check found 0 violations in 59 declarations; the local environment lint passed.Paper: RemyDegenne/Essakine2026Tight
Item: R24
🤖 Prepared with Claude Code