BanditRLlib
Lean gate passed before this site build; local proof declarations are shown as compiled.Lean-verified build · exact declarations linked.

Lean module · ETC

BanditRLProof.Algorithms.ETCExactSubGaussianTail

This module normalizes the canonical common-proxy ETC pairwise tail to the closed exponential used by the exact LML theorem route. It remains over the project's existing Rat reward-law model, with all random variables embedded in Real; transport to native Real reward kernels is downstream work.

Module map

Teaching chapter
3. Explore-Then-Commit
Declarations
5
Placeholders
0

Imports

BanditRLProof.Algorithms.ETCExpectedPullCount, BanditRLProof.Algorithms.ETCFiniteArmRewardLaw

Imported by

BanditRLProof, BanditRLProof.Algorithms.ETCRatArmLawRealKernel

Declarations

Open an item to read its exact compact statement and source link. Detailed teaching notes are linked when registered.

theorem BanditRLProof.ETC.sum_centeredPairwiseRewardDiffVarianceProxy_const_eq_two_mul Compiled

Over the round-robin exploration horizon, the constant common-proxy pairwise process charges exactly `m` pulls of the candidate arm and `m` pulls of the selected best arm.

Used in these reading views: Bandit Book

3. Explore-Then-Commit

Canonical node identitydeclaration:BanditRLProof.ETC.sum_centeredPairwiseRewardDiffVarianceProxy_const_eq_two_mul

Reading membership is not a proof dependency. Exact assumptions remain in the Lean statement.

theorem sum_centeredPairwiseRewardDiffVarianceProxy_const_eq_two_mul {K : Nat} (spec : ETC.Spec K) (model : FiniteBanditModel K) (sigma2 : NNReal) (a : Fin K) (hne : a = model.bestArm -> False) : (Finset.range (spec.explorationPulls * K)).sum (fun t => ETC.centeredPairwiseRewardDiffVarianceProxy spec model model.bestArm (fun _ _ => sigma2) a t) = (2 : NNReal) * (spec.explorationPulls : NNReal) * sigma2
theorem BanditRLProof.ETC.centeredPairwiseGapThreshold_eq_explorationPulls_mul_gap Compiled

The deterministic centered pairwise threshold is `m` times the model gap.

Used in these reading views: Bandit Book

3. Explore-Then-Commit

Canonical node identitydeclaration:BanditRLProof.ETC.centeredPairwiseGapThreshold_eq_explorationPulls_mul_gap

Reading membership is not a proof dependency. Exact assumptions remain in the Lean statement.

theorem centeredPairwiseGapThreshold_eq_explorationPulls_mul_gap {K : Nat} (spec : ETC.Spec K) (model : FiniteBanditModel K) (a : Fin K) (hne : a = model.bestArm -> False) : ETC.centeredPairwiseGapThreshold spec model a = (spec.explorationPulls : Real) * ((model.gap a : Rat) : Real)
theorem BanditRLProof.ETC.canonicalSubGaussianArmPairwiseTailReal_eq_exp_neg_explorationPulls_mul_gap_sq_div_four_mul Compiled

The canonical direct-MGF pairwise tail equals the exact LML exponential `exp (-m * gap^2 / (4 * sigma2))` for every non-best arm. Only `m > 0` is needed to cancel the exploration multiplicity. The `sigma2 = 0` boundary is handled separately and remains a valid equality in Lean's total division.

Used in these reading views: Bandit Book

3. Explore-Then-Commit

Canonical node identitydeclaration:BanditRLProof.ETC.canonicalSubGaussianArmPairwiseTailReal_eq_exp_neg_explorationPulls_mul_gap_sq_div_four_mul

Reading membership is not a proof dependency. Exact assumptions remain in the Lean statement.

theorem canonicalSubGaussianArmPairwiseTailReal_eq_exp_neg_explorationPulls_mul_gap_sq_div_four_mul {K : Nat} (spec : ETC.Spec K) (model : FiniteBanditModel K) (sigma2 : NNReal) (a : Fin K) (hexplorationPulls_pos : 0 < spec.explorationPulls) (hne : a = model.bestArm -> False) : ETC.canonicalSubGaussianArmPairwiseTailReal spec model sigma2 a = Real.exp (-(spec.explorationPulls : Real) * ((model.gap a : Rat) : Real) ^ 2 / (4 * (sigma2 : Real)))
theorem BanditRLProof.ETC.real_measure_explorationArgmaxCommit_eq_arm_le_exp_neg_explorationPulls_mul_gap_sq_div_four_mul_of_armLaws Compiled

Exact-LML-constant form of the canonical single-arm commit-fiber probability bound under the existing common-sub-Gaussian `Rat` arm laws. This is a genuine concentration producer, but not yet the native `Real` reward-kernel theorem: the arm laws are measures on `Rat`, their centered casts have a common `NNReal` proxy, and the generated trajectory is the local canonical history process.

Used in these reading views: Bandit Book

3. Explore-Then-Commit

Canonical node identitydeclaration:BanditRLProof.ETC.real_measure_explorationArgmaxCommit_eq_arm_le_exp_neg_explorationPulls_mul_gap_sq_div_four_mul_of_armLaws

Reading membership is not a proof dependency. Exact assumptions remain in the Lean statement.

theorem real_measure_explorationArgmaxCommit_eq_arm_le_exp_neg_explorationPulls_mul_gap_sq_div_four_mul_of_armLaws {K : Nat} {Context : Type} [MeasurableSpace Context] (spec : ETC.Spec K) (model : FiniteBanditModel K) (armLaw : Fin K -> MeasureTheory.Measure Rat) (hprob : forall arm, MeasureTheory.IsProbabilityMeasure (armLaw arm)) (sigma2 : NNReal) (hmean : forall arm, MeasureTheory.integral (armLaw arm) (fun reward : Rat => (((reward : Rat) : Real))) = (((model.mean arm : Rat) : Real))) (hsubG : forall arm, ProbabilityTheory.HasSubgaussianMGF (fun reward : Rat => ((reward : Rat) : Real) - (((model.mean arm : Rat) : Real))) sigma2 (armLaw arm)) (context : (n : Nat) -> ((j : Finset.Iic n) -> Rat) -> Context) (hcontext : forall n : Nat, Measurable (context n)) (hexplorationPulls_pos : 0 < spec.explorationPulls) (a : Fin K) (hne : a = model.bestArm -> False) : let defaultAction := ETC.exploreArm spec 0 let rewardKernel := RewardKernel.contextIndependentOfActionLaws (Context := Context) armLaw hprob let policy := fun t => ETC.explorationArgmaxHistoryPolicy spec model t let state := fun t history => ETC.explorationArgmaxHistoryState t history let stepKernel := RewardKernel.historyStepKernelFamily rewardKernel policy context state hcontext (fun t => ETC.measurable_explorationArgmaxHistoryState t) let trajMeasure := ProbabilityTheory.Kernel.trajMeasure (X := fun _ : Nat => Rat) (armLaw defaultAction) stepKernel trajMeasure.real {trajectory : RewardTrace Rat | ETC.explorationArgmaxCommit spec model trajectory = a} <= Real.exp (-(spec.explorationPulls : Real) * ((model.gap a : Rat) : Real) ^ 2 / (4 * (sigma2 : Real)))
theorem BanditRLProof.ETC.integral_real_pullCount_explorationArgmaxAction_le_exploration_add_remaining_mul_exp_of_armLaws Compiled

Canonical generated-history per-arm expected pull-count bound with the exact LML exponential constant, under the existing common-sub-Gaussian `Rat` arm laws. This theorem composes the concrete commit-fiber concentration producer with the generic Real/Bochner `actionWithCommit` expected-count consumer. It is the first local theorem with the full `m + (n - K*m) * exp (...)` per-arm shape. Native `Real` reward-kernel transport and external algorithm/environment-law alignment remain downstream.

Used in these reading views: Bandit Book

3. Explore-Then-Commit

Canonical node identitydeclaration:BanditRLProof.ETC.integral_real_pullCount_explorationArgmaxAction_le_exploration_add_remaining_mul_exp_of_armLaws

Reading membership is not a proof dependency. Exact assumptions remain in the Lean statement.

theorem integral_real_pullCount_explorationArgmaxAction_le_exploration_add_remaining_mul_exp_of_armLaws {K : Nat} {Context : Type} [MeasurableSpace Context] (spec : ETC.Spec K) (model : FiniteBanditModel K) (armLaw : Fin K -> MeasureTheory.Measure Rat) (hprob : forall arm, MeasureTheory.IsProbabilityMeasure (armLaw arm)) (sigma2 : NNReal) (hmean : forall arm, MeasureTheory.integral (armLaw arm) (fun reward : Rat => (((reward : Rat) : Real))) = (((model.mean arm : Rat) : Real))) (hsubG : forall arm, ProbabilityTheory.HasSubgaussianMGF (fun reward : Rat => ((reward : Rat) : Real) - (((model.mean arm : Rat) : Real))) sigma2 (armLaw arm)) (context : (n : Nat) -> ((j : Finset.Iic n) -> Rat) -> Context) (hcontext : forall n : Nat, Measurable (context n)) (hexplorationPulls_pos : 0 < spec.explorationPulls) (a : Fin K) (n : Nat) (hn : K * spec.explorationPulls <= n) (hne : a = model.bestArm -> False) : let defaultAction := ETC.exploreArm spec 0 let rewardKernel := RewardKernel.contextIndependentOfActionLaws (Context := Context) armLaw hprob let policy := fun t => ETC.explorationArgmaxHistoryPolicy spec model t let state := fun t history => ETC.explorationArgmaxHistoryState t history let stepKernel := RewardKernel.historyStepKernelFamily rewardKernel policy context state hcontext (fun t => ETC.measurable_explorationArgmaxHistoryState t) let trajMeasure := ProbabilityTheory.Kernel.trajMeasure (X := fun _ : Nat => Rat) (armLaw defaultAction) stepKernel MeasureTheory.integral trajMeasure (fun trajectory : RewardTrace Rat => ((pullCount (ETC.explorationArgmaxAction spec model trajectory) a n : Nat) : Real)) <= (spec.explorationPulls : Real) + ((n - K * spec.explorationPulls : Nat) : Real) * Real.exp (-(spec.explorationPulls : Real) * ((model.gap a : Rat) : Real) ^ 2 / (4 * (sigma2 : Real)))