Repository navigation
feat: e-processes, the definition IsEProcess and its first closure properties - #401
Conversation
…operties Define `ProbabilityTheory.IsEProcess E ℱ S` (EValues roadmap, Layer 3.1, first bullet): an adapted `ℝ≥0∞`-valued process whose value at every stopping time with values in `ℕ` is an e-variable for `S`. Prove that its values at fixed times are e-variables, monotonicity in the null, the characterization through simple nulls, domination (almost sure and pointwise), that `1` is an e-process, convexity, and that test supermartingales are e-processes. 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.
🟡 attribution — request_changes claude/claude-opus-5-5
The PR says its material and the field name isEVar_stoppedValue come from the paper project RemyDegenne/evalues_research, but the new file never credits that formalization; only [RW] is cited.
LMLExplore/EValues/EProcess.lean:11— The module docstring does not credit the paper project the definition, field name and proofs come from (RemyDegenne/evalues_research), which the PR description says outright. Fix: Add a sentence to the module docstring, following repo practice, e.g. 'The definition and statements are adapted from the formalization in the paper project RemyDegenne/evalues_research (same author).', with the specific file if known.
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 · 21s · 60.6k in (50.9k cache read, 9.6k cache write) / 1.6k out tokens · reviewing this diff · rubric ·
There was a problem hiding this comment.
🟡 placement — request_changes claude/claude-opus-5-5
The file and its imports are correctly placed, but a generic stopped-value measurability lemma is hidden as private in the e-values file instead of living with the stopped-value API.
LMLExplore/EValues/EProcess.lean:76—measurable_apply_of_isStoppingTimeis a generic stochastic-process fact (an adapted process evaluated at an ℕ-valued stopping time is measurable) with no e-value content. It is hidden asprivatehere instead of being placed in its canonical home. Fix: Move it, public, toLMLExplore/Probability/Process/StoppedValue.leannext tomeasurable_stoppedValueLimsup(e.g. asMeasureTheory.Adapted.measurable_apply_stoppingTime), and use it from there inmono_aeandisEProcess_iff_forall_singleton.
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 · 56s · 213.9k in (200.1k cache read, 13.7k cache write) / 3.9k out tokens · reviewing this diff · rubric ·
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 |
… random time, credit the paper project Replace the private helper measurable_apply_of_isStoppingTime in EProcess.lean by the public MeasureTheory.measurable_apply_of_countable in StoppedValue.lean, and credit the paper project the e-process material is adapted from in the module docstring. Co-Authored-By: Claude Code <noreply@github.com>
…asurability at stopping times Add IsEProcess.of_lintegral_le_one and isEProcess_iff_lintegral_le_one, the counterparts of isEVar_iff_lintegral_le_one, and the public lemmas MeasureTheory.Adapted.measurable_apply_stoppingTime and IsEProcess.measurable_stoppedValue, which replace the repeated measurability term in mono_ae and isEProcess_iff_forall_singleton. Co-Authored-By: Claude Code <noreply@github.com>
4581f34
This pull request adds e-processes, with the API that makes the definition usable and needs none of the later parts of the target. It adds one new file,
LMLExplore/EValues/EProcess.lean, and one general lemma toLMLExplore/Probability/Process/StoppedValue.lean.The definition
ProbabilityTheory.IsEProcess E ℱ S, forE : ℕ → Ω → ℝ≥0∞,ℱ : Filtration ℕ mΩandS : Set (Measure Ω), is a structure with two fields:adapted : Adapted ℱ E;isEVar_stoppedValue: for everyτ : Ω → ℕwithIsStoppingTime ℱ (fun ω ↦ (τ ω : WithTop ℕ)), the functionfun ω ↦ E (τ ω) ωis an e-variable forS(Statlib'sIsEVar).This is [RW, Definition 7.3 (ii)], in the form the roadmap gives. The null is an arbitrary set of measures and the filtration is arbitrary.
Main declarations
IsEProcess.measurableandIsEProcess.isEVar: each valueE nis measurable, and at every fixed time it is an e-variable.IsEProcess.lintegral_le_one: for every probability measurePin the null,∫⁻ ω, E (τ ω) ω ∂P ≤ 1at every stopping timeτwith values inℕ.IsEProcess.of_lintegral_le_oneandisEProcess_iff_lintegral_le_one: for a null of probability measures,IsEProcess E ℱ S ↔ Adapted ℱ E ∧ ∀ τ, IsStoppingTime ℱ τ → ∀ P ∈ S, ∫⁻ ω, E (τ ω) ω ∂P ≤ 1, the counterpart ofisEVar_iff_lintegral_le_one.IsEProcess.measurable_stoppedValue: the value of an e-process at a stopping time with values inℕis measurable.IsEProcess.anti_set: an e-process forTis an e-process for every subset ofT.isEProcess_iff_forall_singleton:IsEProcess E ℱ S ↔ Adapted ℱ E ∧ ∀ P ∈ S, IsEProcess E ℱ {P}. The adaptedness part matters only whenSis empty.IsEProcess.mono_aeandIsEProcess.mono, for a null of finite measures: an adapted processFis an e-process if it is dominated by an e-process, either almost surely at every time (∀ P ∈ S, ∀ n, F n ≤ᵐ[P] E n) or pointwise (F ≤ E).isEProcess_one: the constant process1is an e-process for every null and every filtration.convex_isEProcess: the e-processes for a null form a convex set,Convex ℝ≥0∞ {E | IsEProcess E ℱ S}. This is the counterpart of Statlib'sconvex_isEVar.MeasureTheory.measurable_apply_of_countable(inStoppedValue.lean): for a countable index typeιwith measurable singletons,fun ω ↦ u (σ ω) ωis measurable when everyu iandσare measurable.MeasureTheory.Adapted.measurable_apply_stoppingTime(inStoppedValue.lean): the valuefun ω ↦ u (σ ω) ωof an adapted process at a stopping time with values inℕis measurable.IsTestSupermartingale.isEProcess: a test supermartingale for a null of probability measures is an e-process. The proof uses the optional stopping already in LMLExplore (IsTestSupermartingale.isEVar_stoppedValueLimsup,stoppedValueLimsup_natCast); it cites [RW, Fact 7.5].Roadmap coverage (EValues, Layer 3)
Covered:
IsEProcess E ℱ S.Sexactly when it is one for each{P};Sis an e-process.Left for later pull requests:
stoppedValueLimsupor with theliminfconvention, and domination by a test supermartingale or a test martingale.Sand one forT;This pull request shares no content with the open #399 and #400.
Notes for reviewers
fun ω ↦ E (τ ω) ωcomes from the new publicMeasureTheory.Adapted.measurable_apply_stoppingTime, built onMeasureTheory.measurable_apply_of_countable, both next tomeasurable_stoppedValueLimsup.∀ P ∈ S, IsFiniteMeasure P, as Statlib'sIsEVar.monodoes, because Statlib'sIsEVarexcludes∫ᵉ (X - 1) = ⊥.IsTestSupermartingale.isEProcessassumes probability measures, because a test supermartingale only bounds expectations by1.EValuesResearch/ForLMLExplore/EValues/EProcess.lean(commitd2da7b7) in the paper projectRemyDegenne/evalues_research, which is credited in the module docstring. The field nameisEVar_stoppedValuecomes from there too.Roadmap: EValues
Paper: RemyDegenne/evalues_research
Item: R6
🤖 Generated with Claude Code
https://claude.ai/code/session_0196ftMVbgjSJzPQEwdek3kM