Repository navigation
feat: admissible e-processes, and the admissibility of the sub-Gaussian exponential e-process for nonatomic i.i.d. laws - #434
Conversation
…an exponential e-process for nonatomic i.i.d. laws Define admissible e-processes as [RRLK, §4.2] does (no e-process dominates them strictly), with a sufficient condition: every event of time n charged by a member of the null is charged by a member under which the value at time n has expectation one. Prove that exp (∑ i ≤ n, X i - (n + 1) / 2) is an admissible e-process for Filtration.piLE and the i.i.d. laws whose marginal is 1-sub-Gaussian and has no atom, as [RRLK] conjectures. This serves EValues, Layer 3, item 7 (Admissibility). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0196ftMVbgjSJzPQEwdek3kM
There was a problem hiding this comment.
🟡 api-design — request_changes claude/claude-opus-5-5
All the general helpers flagged earlier are now public in their proper homes, and the helpers still private are specific to this proof. The new admissibility API lacks the congr lemma that the existing IsAdmissibleEVar API has.
LMLExplore/EValues/EProcess/Admissible.lean:78—IsAdmissibleEProcesshas nocongrlemma (admissibility is preserved by an a.s. change of the process), unlikeIsAdmissibleEVar.congr, so consumers who swap in an a.e.-equal version must unfold the definition. Fix: AddIsAdmissibleEProcess.congr (hE : IsAdmissibleEProcess E ℱ S) (hF : Adapted ℱ F) (hEF : ∀ P ∈ S, ∀ n, E n =ᵐ[P] F n) : IsAdmissibleEProcess F ℱ S, proving the e-process part withIsEProcess.mono_aeand the domination part as inIsAdmissibleEVar.congr.
Reply in this thread to contest a finding; that re-runs only this rubric and posts an answer here. (To fix it, just push a commit — that re-reviews on its own. To contest again after an answer, post a NEW reply rather than editing an old one.)
claude/claude-opus-5-5 · 32s · 260.7k in (247.1k cache read, 13.6k cache write) / 2.4k out tokens · reviewing this diff · rubric ·
There was a problem hiding this comment.
🟡 placement — request_changes claude/claude-opus-5-5
The general helpers now sit public in their proper earlier files, and every import I checked is used. But the PR creates the directory EValues/EProcess/ while leaving EValues/EProcess.lean beside it, against the repo's Foo/Basic.lean layout.
LMLExplore/EValues/EProcess/Admissible.lean— The PR creates the directoryEValues/EProcess/while the base module stays outside it asEValues/EProcess.lean. The two files share the subjectEProcessbut are not grouped in one directory. Fix:git mv LMLExplore/EValues/EProcess.lean LMLExplore/EValues/EProcess/Basic.lean, then update every in-repository import (includingpublic import LMLExplore.EValues.EProcessinEProcess/Admissible.lean) in this PR, with no forwarding module.
Reply in this thread to contest a finding; that re-runs only this rubric and posts an answer here. (To fix it, just push a commit — that re-reviews on its own. To contest again after an answer, post a NEW reply rather than editing an old one.)
claude/claude-opus-5-5 · 69s · 527.9k in (513.4k cache read, 14.4k cache write) / 3.4k out tokens · reviewing this diff · rubric ·
There was a problem hiding this comment.
🟡 proof-quality — request_changes claude/claude-opus-5-5
The proofs are commented in sections, but two lemmas are 110–150 lines long and hide facts that could stand alone, and there is one fragile non-terminal simp, one long chain of named rewrites, and some small facts proved twice.
LMLExplore/EValues/SubGaussian/AdmissibleEProcess.lean:745—exists_touching_absolutelyContinuousis about 150 lines. It builds the moment-matchedDand its derivatives, the global boundhL₀, the mixture identityhreal/hle, and the four properties of the law all inline. Fix: Split it into lemmas: one thatDvanishes to second order at 0 and 1 with the boundhL₀, one for the mixture inequalityhreal/hlegivenc₀, and one for the probability, no-atom and sub-Gaussian properties of the perturbed law. The main proof should then just put them together.LMLExplore/EValues/SubGaussian/AdmissibleEProcess.lean:367—exists_mul_min_le_ksGapis about 110 lines. It proves several facts aboutksGapinline:G2is monotone on[1/2, ∞), the quadratic growthhnearnear 1, the antitonicityhantion[1/2, 1], and the right-half boundhright. Fix: Factor outksGap_antitoneOn_Icc_half_oneand a lemma giving a quadratic lower bound onksGapnear 1. Then the main proof only combines them using the symmetryksGap_one_sub.LMLExplore/EValues/SubGaussian/AdmissibleEProcess.lean:635— Inexists_coeffs_four, an unrestrictedsimp [Fin.sum_univ_four]is followed byfield_simp; ring. Its output on the explicit![…]coefficient vector is not fixed, so a change to the simp set can break thefield_simp/ringsteps after it. Fix: Usesimp only [Fin.sum_univ_four, Matrix.cons_val_zero, Matrix.cons_val_one, …, Fin.val_zero, …], ornorm_num [Fin.sum_univ_four]as the closing step.LMLExplore/EValues/SubGaussian/AdmissibleEProcess.lean:727—lintegral_ofReal_exp_mul_mixtureuses a chain of eight named rewrites (lintegral_add_measure,lintegral_finsetSum_measure,lintegral_smul_measure,← ofReal_integral_eq_lintegral_ofReal,ENNReal.ofReal_add,ENNReal.ofReal_sum_of_nonneg,ENNReal.ofReal_mul,smul_eq_mul). This breaks easily when Mathlib renames lemmas. Fix: Split the linear-in-measure step (simp only [lintegral_add_measure, lintegral_finsetSum_measure, lintegral_smul_measure]) from theofRealarithmetic, and usesimp/push_cast-style normalisation for theENNReal.ofRealsums and products.LMLExplore/EValues/SubGaussian/AdmissibleEProcess.lean:274— Some small facts are proved twice.ksParam * (1 + exp (1/2)) = 1appears at lines 274 and 335, andexp (-(1/2)) * exp (1/2) = 1at lines 189 and 868. The integrability stepsimpa using integrable_pow_mul_exp_of_ae_abs_le … 0 tis also repeated inexp_neg_mul_integral_exp_leandlintegral_ofReal_exp_mul_mixture. Fix: Add private lemmasksParam_mul_one_add_exp_halfandintegrable_exp_mul_of_measure_compl(fromhb), and use them at each of these places.
Reply in this thread to contest a finding; that re-runs only this rubric and posts an answer here. (To fix it, just push a commit — that re-reviews on its own. To contest again after an answer, post a NEW reply rather than editing an old one.)
claude/claude-opus-5-5 · 38s · 121.8k in (114.7k cache read, 7.1k cache write) / 3.9k out tokens · reviewing this diff · rubric ·
AI review — changes requestedEach 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 |
…y proof, and cite its sources Move the general helpers of `AdmissibleEProcess.lean` to their existing homes as public declarations: the second-order lower bound to `Analysis/Calculus/MeanValue.lean`, the i.i.d. coordinate facts to `Probability/ProductMeasure.lean`, the Gaussian Laplace transform to `Probability/Distributions/Gaussian/Real.lean`, the lower-integral criterion for sub-Gaussianity (generalised to any random variable and variance) to `Probability/Moments/SubGaussian/Basic.lean`, and the moments of a bounded random variable to `Probability/Moments/IntegrableExpMul.lean`. Prove the binomial weights through `add_pow` instead of pasted `simp only` lists, extract the Gaussian-times-exponential bound and the mixture's Laplace transform from the perturbation proof, drop a `change` and two `rfl` unfoldings, and cite [EVR26, Note 02], the source Lean file and [KS98]. Co-Authored-By: Claude Code <noreply@github.com>
…sible-eprocess # Conflicts: # LMLExplore/Probability/ProductMeasure.lean
…sAdmissibleEProcess.congr` Group the e-process files under one directory, add the `congr` lemma of admissible e-processes matching `IsAdmissibleEVar.congr`, and replace a pasted `simp?` lemma list and a trailing `rfl` in the sub-Gaussian instance proof. Co-Authored-By: Claude Code <noreply@github.com>
This pull request defines admissible e-processes as [RRLK, §4.2] does, with a sufficient condition for admissibility, and proves that the sub-Gaussian exponential process
exp (∑ i ≤ n, X i - (n + 1) / 2)is an admissible e-process forFiltration.piLEand the i.i.d. laws whose marginal is1-sub-Gaussian and has no atom, which [RRLK] conjectures. It adds two new files,LMLExplore/EValues/EProcess/Admissible.lean(111 lines: the definition and its API) andLMLExplore/EValues/SubGaussian/AdmissibleEProcess.lean(the instance). It also adds the proof's general helpers, as public declarations, to five existing files (listed below).Main declarations
IsAdmissibleEProcess E ℱ S: a structure extendingIsEProcess E ℱ Swith the fieldae_le_of_ae_le: every e-processFwithE n ≤ᵐ[P] F nfor everyP ∈ Sand everynhasF n ≤ᵐ[P] E nfor everyP ∈ Sand everyn. It has the shape ofIsAdmissibleEVar.IsAdmissibleEProcess.ae_le,IsAdmissibleEProcess.ae_eq: an e-process that dominates an admissible one is at most it, and equal to it, at every time, almost surely under every member of the null.IsAdmissibleEProcess.congr: an adapted process equal to an admissible e-process at every time, almost surely under every member of the null, is an admissible e-process (the counterpart ofIsAdmissibleEVar.congr; it needs no finiteness of the null).isAdmissibleEProcess_iff_measure_lt_eq_zero:Eis admissible exactly when it is an e-process and, for every e-processFthat dominates it,P {ω | E n ω < F n ω} = 0for everyP ∈ Sand everyn. This is the roadmap's wording: no e-process dominatesEstrictly.IsEProcess.isAdmissibleEProcess_of_exists_lintegral_eq: for a null of finite measures, an e-processEis admissible if everyℱ n-measurable set charged by a member of the null is charged by a memberPwith∫⁻ E n ∂P = P univ. It is the e-process counterpart ofIsStronglyAdmissibleEVar.isAdmissibleEVar, applied at each time to the events of that time.isAdmissibleEProcess_ofReal_exp_sum_sub_iid: the processfun n ω ↦ ENNReal.ofReal (Real.exp (∑ i ∈ Finset.range (n + 1), ω i - (n + 1) / 2))is an admissible e-process forFiltration.piLE (X := fun _ : ℕ ↦ ℝ)and the null(fun μ ↦ Measure.infinitePi fun _ : ℕ ↦ μ) '' {μ : Measure ℝ | IsProbabilityMeasure μ ∧ NullSingletonClass μ ∧ HasSubgaussianMGF id 1 μ}.Moved modules
LMLExplore.EValues.EProcessis moved toLMLExplore.EValues.EProcess.Basic(fileLMLExplore/EValues/EProcess.lean→LMLExplore/EValues/EProcess/Basic.lean), so that the e-process files share the directoryEValues/EProcess/. Its declarations are unchanged; every in-repository import is updated and there is no forwarding module. Downstream projects should replaceimport LMLExplore.EValues.EProcessbyimport LMLExplore.EValues.EProcess.Basic.General helpers added to existing files
LMLExplore.add_mul_add_mul_sq_le_of_le_deriv2(Analysis/Calculus/MeanValue.lean): ifc ≤ f''on a convex setIcontaininga, thenf a + f' a (x - a) + c / 2 (x - a) ^ 2 ≤ f xonI.ProbabilityTheory.indep_piLE_comap_eval_succ,ProbabilityTheory.setLIntegral_infinitePi_comp_eval_succ(Probability/ProductMeasure.lean): under an i.i.d. law, coordinaten + 1is independent ofFiltration.piLE n, and∫⁻ ω in s, f (ω (n + 1)) ∂μ^ℕ = μ^ℕ s * ∫⁻ f ∂μforsinFiltration.piLE n.LMLExplore.lintegral_ofReal_exp_mul_gaussianReal(Probability/Distributions/Gaussian/Real.lean): the moment generating function of𝒩(μ, v)as a lower integral.ProbabilityTheory.HasSubgaussianMGF.of_lintegral_le(Probability/Moments/SubGaussian/Basic.lean): if∫⁻ exp (t X) ≤ exp (c t ^ 2 / 2)for everyt, thenHasSubgaussianMGF X c μ, for anycand any a.e.-measurableX.LMLExplore.integrable_pow_mul_exp_of_ae_abs_le,LMLExplore.hasDerivAt_integral_pow_mul_exp_of_ae_abs_le(Probability/Moments/IntegrableExpMul.lean): if|X| ≤ ba.s. under a finite measure, everyX ^ n exp (t X)is integrable, andt ↦ E[X ^ n exp (t X)]has derivativeE[X ^ (n + 1) exp (t X)]. These are stated for a random variableXwith|X| ≤ ba.s., which is more general than a measure carried by[-b, b]. The former privatelintegral_ofReal_exp_of_measure_complwas only Mathlib'sofReal_integral_eq_lintegral_ofRealapplied once, so its one use now calls that lemma directly.Roadmap coverage (EValues, Layer 3, item 7)
Covered: the definition of admissibility in the first bullet ("
E'dominatesEwhen … ;Eis admissible when no e-process dominates it strictly"), and the second sentence of the bullet "Instance": the exponential process is admissible for the i.i.d. laws whose marginal is1-sub-Gaussian and has no atom, withFiltration.piLE.Left for later pull requests: in the first bullet, domination by an admissible e-process for locally dominated nulls [RRLK, Proposition 9], admissible e-processes as essential infima of martingales [RRLK, Corollary 26], the simple-null case [RRLK, Theorem 18] and composite nonnegative martingales [RRLK, Corollary 29]; and the first sentence of the bullet "Instance", admissibility for the null of conditionally
1-sub-Gaussian increments [RRLK, Theorem 35].Notes for reviewers
IsAdmissibleEVar, so the rest of item 7 can build on it. Stating the instance with domination and equality written out would have needed a restatement once item 7 is built. The definition usesE n ≤ᵐ[P] F nrather thanP {E n ≤ F n} = 1: the two agree for probability measures and the first one needs no measurability.isAdmissibleEProcess_iff_measure_lt_eq_zerostates the roadmap's wording ("no e-process dominatesEstrictly"). The sufficient condition is general, and it is the step of the proof that does not depend on sub-Gaussian laws, so it sits with the definition inEProcess/Admissible.lean.1-sub-Gaussian increments [RRLK, Theorem 35] and conjectures it for the nonatomic laws. The roadmap cites the proof here to the notes of the paper projectRemyDegenne/evalues_research. The proof in this pull request is a rewrite of that project's Lean proof.M₀ * ∏ k < n, F kwithM₀ = exp (X 0 - 1 / 2)andF k = exp (X (k + 1) - 1 / 2). Under an i.i.d. law the factorF kis independent of the firstk + 1coordinates, soisTestSupermartingale_mul_prodmakes the process a test supermartingale under the null, hence an e-process (IsTestSupermartingale.isEProcess). Call a lawνtouching when it is nonatomic,1-sub-Gaussian, and∫ exp (x - 1 / 2) ∂ν = 1. Under the i.i.d. law of a touchingνthe process is a test martingale (isTestMartingale_mul_prod), so it has expectation1at every time. By the sufficient condition above it remains to show that every event of timencharged byμ^ℕ, for a nonatomic probability lawμ, is charged byν^ℕfor some touchingν. That event is a Borel set of the firstn + 1coordinates, and byMeasure.AbsolutelyContinuous.pi'it is enough that every finite nonatomic measuremcarried by[-b, b]is absolutely continuous with respect to a touching law. That law isν₀ + c₀ (m - ∑ j, c j N_j):ν₀ = ∑ j, w j N_jmixes four Gaussian lawsN_j = N (j - 3 p, 6 p - 2)with binomial weights, forp = 1 / (1 + √e).exp (t ^ 2 / 2 - 3 g t), wheregvanishes at0and1and is otherwise positive with a quadratic margin: this is the Kearns–Saul inequality, proved here.c jmatch the mass, mean,∫ exp xand∫ x exp xofm. The four moment vectors of the components form a basis ofℝ ^ 4, which is proved by an explicit inverse.0and1, and for smallc₀ > 0the slack of the base law absorbs it.λ) is Mathlib'sHasSubgaussianMGF id 1 μ, withIsProbabilityMeasure μ, as in the open feat: the complete class for the two-sided sub-Gaussian null #428. "No atom" is Mathlib'sNullSingletonClass μ(μ {x} = 0for everyx). For a finite Borel measure onℝthis is the same as being atomless. The null is written out in the statement, and no definition is introduced for it.exp (∑ k < n, X k - n / 2), which is the indexing of the natural filtration of the past. WithFiltration.piLE, which the roadmap asks for here, timenhas seenn + 1observations, so the statement usesexp (∑ i ≤ n, X i - (n + 1) / 2): the same process, shifted by one time step. The unshifted process is not an e-process forFiltration.piLE. A stopping time can look atX nbefore deciding to stop atn, for exampleτ = 0ifX 0 < 0andτ = 1otherwise, and under the standard Gaussian law this has expectation1 / 2 + Φ(1) > 1atτ.IsTestSupermartingale.isEProcess, and the wealth processes areisTestSupermartingale_mul_prodandisTestMartingale_mul_prod. The product of absolutely continuous measures is Statlib'sMeasure.AbsolutelyContinuous.pi',Measure.infinitePi_map_restrictandFiltration.piLE_eq_comap_frestrictLecome from Mathlib, the derivatives oft ↦ ∫ x ^ n exp (t x)from Mathlib'shasDerivAt_integral_pow_mul_exp_real, and the Gaussian moment generating function frommgf_fun_id_gaussianReal. The file imports neither Tau Ceti's nor LML's sub-Gaussian file, so the duplicateHasSubgaussianMGF.monoreported in feat: the complete class for the two-sided sub-Gaussian null #428 does not arise.p = 1 / (1 + √e), the base law, moment matching, and the perturbation.RemyDegenne/evalues_research) as the source of the argument, names the Lean file it is adapted from (EValuesResearch/Results/SubGaussian.lean, commitdd4072f), and cites Kearns–Saul [KS98] for the Bernoulli sub-Gaussian bound.gh pr liston 2026-11-15). feat: the complete class for the two-sided sub-Gaussian null #428 and feat: e-processes for the one-sided conditionally sub-Gaussian null are dominated by predictable products of mixtures of exponentials #430 treat sub-Gaussian nulls but share no declaration with this one. feat: e-processes for an i.i.d. null grow at most at the bipolar rate in expectation [RR26, Lemma 3.3] #413 has lemmas on the firstnobservations of an i.i.d. sequence, but they are not used here.Roadmap: EValues
Paper: RemyDegenne/evalues_research
Item: R16
🤖 Generated with Claude Code
https://claude.ai/code/session_0196ftMVbgjSJzPQEwdek3kM