Repository navigation
feat: admissible e-variables, strong admissibility, and the simple null - #404
Conversation
Define `ProbabilityTheory.IsAdmissibleEVar E S` (EValues roadmap, Layer 0.5): an e-variable that every e-variable dominating it almost surely under the null equals almost surely under the null, with the everywhere-domination form of [RW, Definition 2.11] as an equivalence. Define strongly admissible e-variables [RW, Corollary 2.15 (a)] and prove that they are admissible for a null of finite measures, that exact e-variables are strongly admissible, that for a simple null admissible and exact coincide and exact e-variables are likelihood ratios [RW, Proposition 2.12], and that products of strongly admissible e-variables are strongly admissible for the product null [RW, Proposition 2.17]. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0196ftMVbgjSJzPQEwdek3kM
There was a problem hiding this comment.
🟡 reuse — request_changes claude/claude-opus-5-5
The two new definitions and their results are new material and mostly reuse existing API (isExactEVar_rnDeriv, Measure.rnDeriv_withDensity, lintegral_prod_mul). One proof re-derives Mathlib's ae_eq_of_ae_le_of_lintegral_le through subtraction.
LMLExplore/EValues/Admissible.lean:134— Lines 134-141 ofIsStronglyAdmissibleEVar.isAdmissibleEVarshow by hand thatE =ᵐ[P] FfromE ≤ᵐ[P] Fand∫⁻ F ∂P ≤ ∫⁻ E ∂P < ∞, going throughlintegral_sub,lintegral_eq_zero_iffandtsub_eq_zero_iff_le. Mathlib already has this as a lemma. Fix: Usehave h_eq := ae_eq_of_ae_le_of_lintegral_le (hEF P hP) (by rw [hPE]; exact measure_ne_top P univ) hF.measurable.aemeasurable (by rw [hPE]; exact hF.lintegral_le_measure_univ P hP), then close withhPA (ae_iff.1 (h_eq.mono fun ω hω ↦ by simp [hω]))or similar. This removesh_sub, therw ... at h_substep andh_le.
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 · 40s · 210.6k in (190.8k cache read, 19.8k cache write) / 3.4k out tokens · reviewing this diff · rubric ·
There was a problem hiding this comment.
🟡 api-design — request_changes claude/claude-opus-5-5
IsStronglyAdmissibleEVar lacks part of its characterizing API: an a.s.-invariance (congr) lemma and the form with expectation one for probability nulls that the roadmap uses.
LMLExplore/EValues/Admissible.lean:115— NoIsStronglyAdmissibleEVar.congr, although the file provesIsAdmissibleEVar.congrandIsExactEVar.congrexists; consumers must unfold the structure to move along a.s. equality. Fix: AddIsStronglyAdmissibleEVar.congr (hE : IsStronglyAdmissibleEVar E S) (hF : Measurable F) (hEF : ∀ P ∈ S, E =ᵐ[P] F) : IsStronglyAdmissibleEVar F S, viahE.toIsEVar.congrandlintegral_congr_ae.LMLExplore/EValues/Admissible.lean:115— Roadmap item 5 states strong admissibility with∫⁻ E ∂P = 1, but the API offers only theP univform; there is nothing for probability nulls likeisExactEVar_iff/IsExactEVar.of_lintegral_eq_one. Fix: AddisStronglyAdmissibleEVar_iff (hS : ∀ P ∈ S, IsProbabilityMeasure P) : IsStronglyAdmissibleEVar E S ↔ IsEVar E S ∧ ∀ A, MeasurableSet A → (∃ P ∈ S, P A ≠ 0) → ∃ P ∈ S, P A ≠ 0 ∧ ∫⁻ ω, E ω ∂P = 1(plus anof_lintegral_eq_oneconstructor).
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 · 27s · 76.5k in (60.6k cache read, 15.9k cache write) / 2.5k out tokens · reviewing this diff · rubric ·
There was a problem hiding this comment.
🟡 proof-quality — request_changes claude/claude-opus-5-5
Most proofs are readable and robust, but IsStronglyAdmissibleEVar.prod relies on an undocumented definitional equality between f ⁻¹' {0}ᶜ and Function.support f. It also repeats the same 'the product charges A iff the slice set is charged' step four times, which should be one helper lemma.
LMLExplore/EValues/Admissible.lean:219—hE.exists_lintegral_eq _ (hB (measurableSet_singleton 0).compl)produces facts about(fun x ↦ P' (Prod.mk x ⁻¹' A)) ⁻¹' {0}ᶜ, and the proof consumes them as0 < P₁ (Function.support _)throughlintegral_pos_iff_support(lines 221, 225). This relies on an undocumented definitional equality between the preimage of{0}ᶜandFunction.support. The same happens at line 229, consumed at lines 231 and 236. Fix: UsemeasurableSet_support hBandmeasurableSet_support hCso the sets appear syntactically asFunction.support _, or add a comment that explains the coercion.LMLExplore/EValues/Admissible.lean:220— The step 'the product chargesAiff the set of points whose slice ofAis charged has positive measure' is proved inline four times. Each copy is a chain ofMeasure.prod_apply/prod_apply_symm,lintegral_pos_iff_supportandpos_iff_ne_zero(lines 220–221, 223–225, 230–231, 235–236). This hides a reusable fact and makes the proof brittle. Fix: Factor out lemmas such asprod_apply_ne_zero_iff (hA : MeasurableSet A) : μ.prod ν A ≠ 0 ↔ μ {x | ν (Prod.mk x ⁻¹' A) ≠ 0} ≠ 0and its symmetric version, for example fromMeasure.measure_prod_null, and use them at each site.
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 · 44s · 111.8k in (103.3k cache read, 8.5k cache write) / 3.5k 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 |
Use ae_eq_of_ae_le_of_lintegral_le in IsStronglyAdmissibleEVar.isAdmissibleEVar, add IsStronglyAdmissibleEVar.congr, isStronglyAdmissibleEVar_iff and IsStronglyAdmissibleEVar.of_lintegral_eq_one, and factor the product-measure charging step of IsStronglyAdmissibleEVar.prod into Measure.prod_apply_ne_zero_iff and Measure.prod_apply_ne_zero_iff_symm. Co-Authored-By: Claude Code <noreply@github.com>
3d57f2c
This pull request adds admissible e-variables, with the parts of the target that need no further theory. It adds one new file,
LMLExplore/EValues/Admissible.lean(240 lines), and changes no existing file.The definitions
ProbabilityTheory.IsAdmissibleEVar E Sis a structure extending Statlib'sIsEVar E Swith one field: every e-variableFforSwithE ≤ᵐ[P] Ffor allP ∈ ShasF ≤ᵐ[P] Efor allP ∈ S. The definition of [RW, Definition 2.11], with domination everywhere, isisAdmissibleEVar_iff_forall_le.ProbabilityTheory.IsStronglyAdmissibleEVar E SextendsIsEVar E Swith: every measurable set charged by some member ofSis charged by a memberPofSwith∫⁻ E ∂P = P univ. This is the sufficient condition of [RW, Corollary 2.15 (a)], as the roadmap names it; for probability measures the integral condition is expectation one.Main declarations
IsAdmissibleEVar.ae_le,IsAdmissibleEVar.ae_eq,IsAdmissibleEVar.congr: the elimination forms, and invariance under almost sure equality.isAdmissibleEVar_iff_forall_le:IsAdmissibleEVar E S ↔ IsEVar E S ∧ ∀ F, IsEVar F S → E ≤ F → ∀ P ∈ S, F =ᵐ[P] E.IsStronglyAdmissibleEVar.isAdmissibleEVar: for a null of finite measures, strongly admissible implies admissible [RW, Corollary 2.15 (a)].IsExactEVar.isStronglyAdmissibleEVarandIsExactEVar.isAdmissibleEVar: exact e-variables (LMLExplore'sIsExactEVar) are strongly admissible, hence admissible for a null of finite measures.IsAdmissibleEVar.isExactEVar_singletonandisAdmissibleEVar_singleton_iff: for a simple null{P}withPfinite, admissible and exact coincide [RW, Proposition 2.12].isExactEVar_singleton_iff_exists_rnDeriv: the exact e-variables for{P}are the measurable functionsP-almost surely equal toQ.rnDeriv Pfor a measureQ ≪ PwithQ univ = P univ[RW, Proposition 2.12].IsStronglyAdmissibleEVar.prod: the productfun p ↦ E p.1 * F p.2of two strongly admissible e-variables is strongly admissible forSet.image2 Measure.prod S T, for nulls of finite measures [RW, Proposition 2.17].Roadmap coverage (EValues, Layer 0, item 5)
Covered:
Left for later pull requests:
liminfcondition;This pull request shares no content with the open #399, #401, #402 and #403.
Notes for reviewers
isAdmissibleEVar_iff_forall_le: replaceFbymax E F), and the almost sure form is the one that later statements produce.∫⁻ E ∂P = P univofIsExactEVar, so the statements hold for nulls of finite measures, not only of probability measures. The hypotheses∀ P ∈ S, IsFiniteMeasure Pare used: Statlib'sIsEVargives∫⁻ E ∂P ≤ P univ, which says nothing for an infinite measure.IsAdmissibleEVarin a statement on nulls generated by constraints, which will follow once feat: nulls generated by constraints, their bets, and the complete class theorem for finitely many constraints #402 is merged.Roadmap: EValues
Paper: RemyDegenne/evalues_research
Item: R5
🤖 Generated with Claude Code
https://claude.ai/code/session_0196ftMVbgjSJzPQEwdek3kM