Repository navigation
feat: e-processes for an i.i.d. null grow at most at the bipolar rate, almost surely - #440
Open
RemyDegenne wants to merge 1 commit into
Open
RemyDegenne wants to merge 1 commit into
RemyDegenne wants to merge 1 commit into
Conversation
…, almost surely Prove that, for every sequence of n-sample e-variables for an i.i.d. null, almost surely under the i.i.d. law of the alternative, the n-th one evaluated at the first n observations has limsup (1/n) log at most the bipolar rate; also for functions of the first n observations with expectation at most one under the null, and for e-processes per observation seen. This is the almost sure upper bound of EValues, Layer 6, item 1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0196ftMVbgjSJzPQEwdek3kM
This branch has not been deployed
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 pull request proves the almost sure form of the optimal growth rate against an i.i.d. null: for every sequence of
n-sample e-variables for the null, and so for every e-process,limsup (1/n) logis almost surely at most the bipolar rate under the i.i.d. law of the alternative. It adds one new file,LMLExplore/EValues/BipolarRate/AlmostSure.lean(831 lines), and changes no existing file.Main declarations
ae_limsup_log_div_le_bipolarRate: forM : (n : ℕ) → (Fin n → 𝓧) → ℝ≥0∞with everyM nan e-variable for{P ^ n | P ∈ S₁},∀ᵐ ω ∂Measure.infinitePi (fun _ ↦ Q₁), limsup (fun n ↦ ENNReal.log (M n (initSeg n ω)) / n) atTop ≤ bipolarRate Q₁ S₁.ae_limsup_log_div_le_bipolarRate_of_dependsOn: the same bound for measurableF n : (ℕ → 𝓧) → ℝ≥0∞that depend only on the firstncoordinates and have∫⁻ ω, F n ω ∂Measure.infinitePi (fun _ ↦ P) ≤ 1for everyP ∈ S₁. These hypotheses are those ofeintegral_log_le_maxLogGrowth_of_dependsOnonmain. The other two theorems follow from this one.IsEProcess.ae_limsup_log_div_le_bipolarRate: for an e-processEforFiltration.piLEand the i.i.d. null,limsup (fun n ↦ ENNReal.log (E n ω) / (n + 1)) atTop ≤ bipolarRate Q₁ S₁almost surely. It is the almost sure counterpart ofIsEProcess.limsup_eintegral_log_div_le_bipolarRate(feat: e-processes for an i.i.d. null grow at most at the bipolar rate in expectation [RR26, Lemma 3.3] #413), and divides by the numbern + 1of observations seen, as feat: e-processes for an i.i.d. null grow at most at the bipolar rate in expectation [RR26, Lemma 3.3] #413 does.The only hypothesis on the null is that its members are probability measures. Nothing is assumed on
Q₁: if it is not a probability measure,Measure.infinitePi (fun _ ↦ Q₁) = 0and the statements hold trivially.Roadmap coverage (EValues, Layer 6, item 1)
Covered: the first half of the bullet "Almost surely under
Q, every sequence ofn-sample e-variablesM nfor the i.i.d. null, evaluated at the firstnobservations, in particular every e-process for the null, haslimsup (1/n) log (M n) ≤ d", with no assumption onS₁orQ₁.Not covered: the second half of the same bullet ("and the numeraires attain the rate:
(1/n) logof Statlib'snumeraire... tends todalmost surely, also whend = ∞"). It belongs to another item of the paper project and is not part of this pull request. The bound byKL_inf(Q₁, S₁)that the bullet mentions [WSJ26, Proposition 2.2] is the composition withbipolarRate_le_iInf_klDiv, which is already onmain, so it gets no theorem of its own. The rest of item 1 is untouched.The roadmap cites this bound as
[EVR26, Note 01], which has no published source. The proof here is the Lean proof from the paper project, rewritten onmain's API.Notes for reviewers
Proof route. The roadmap's sketch compares each
G nwith the numeraireX* nby Markov's inequality and the Borel–Cantelli lemma. That reduces the bound to the almost sure upper boundlimsup (1/n) log X* n ≤ dfor the numeraires themselves, and that bound needs the same covering argument used here, plus an ergodic theorem. This pull request applies the covering argument directly to the given sequence and never uses numeraires, which is the shorter route with whatmainhas. It has two steps, both in the module docstring:G n ≥ exp (n L)holds infinitely often almost surely, where eachG nis a function of the firstnobservations with null expectation at most one. ThenL ≤ d. The covering mixture ofNobservations bets half on skipping one observation and half on a block ofkobservations (weight1 / (k (k + 1)), betG k), then recurses on the rest. It is again such a function, so its expected logarithm is at mostmaxLogGrowth Q₁ S₁ N ≤ N d. A greedy parse bounds its logarithm from below pointwise. The classical argument would use the ergodic theorem and Fatou's lemma here. Instead, the number of "bad" positions is bounded in expectation: by stationarity, its mean isNtimes the probability of the bad event.M n ≥ exp (n L)infinitely often with positive probability. The mixture over shifts∑ s < n, 2⁻¹ ^ (s + 1) M (n - s) ∘ shift^[s]then exceedsexp (n L')infinitely often on an event that contains its own preimage under the shift. Since the Bernoulli shift is ergodic, that event has probability one.Reuse.
TauCeti.Probability.shiftand its iterates, which LMLExplore's Markov chain files already use, andMeasureTheory.Measure.ergodic_shift_infinitePi_const(TauCeti.Probability.Ergodic.BernoulliShift, imported by LMLExplore for the first time).Ergodic.ae_empty_or_univ_of_preimage_ae_lefor the zero-one law.main:initSeg,exists_measurable_eq_comp_initSeg,measurePreserving_initSeg,dependsOn_comp_initSeg,eintegral_log_le_maxLogGrowth_of_dependsOnandmaxLogGrowth_le_mul_bipolarRate. NeithermaxLogGrowthnorbipolarRateis unfolded.Private helpers. All other declarations (30) are private, and none is API:
lintegral_mul_comp_shift_iterate: under an i.i.d. law, a function of the firsttobservations is independent of a function of the observations after them;The other half of the same paper item (the Wald inequality at stopping times and the lower bound on the expected number of observations) is being ported at the same time in a separate pull request, which needs the same independence fact. Here it stays private, so the two pull requests share no public name and do not depend on each other. Whichever lands second can move one copy to
LMLExplore/Probability/ProductMeasure.leanand delete the other.Order of quantifiers. The theorems fix the sequence first and then hold almost surely, which is how the roadmap's "almost surely, every sequence" has to be read: the exceptional null event depends on the sequence. This is also the order of the expectation bound in feat: e-processes for an i.i.d. null grow at most at the bipolar rate in expectation [RR26, Lemma 3.3] #413.
Dropped hypothesis.
[IsProbabilityMeasure Q₁]is not assumed, as explained above. The e-process statement usesIsEProcessbecause the roadmap names e-processes. Its proof uses only adaptedness and the e-variable property at fixed times, and the_of_dependsOnform states exactly those hypotheses.Roadmap: EValues
Paper: RemyDegenne/evalues_research
Item: R10
🤖 Generated with Claude Code
https://claude.ai/code/session_0196ftMVbgjSJzPQEwdek3kM