Lean module · Finite-horizon RL
BanditRLProof.RL.FiniteHorizonAdaptiveStochasticRewardSampledEmpiricalOptimisticConfidence
# Finite-round confidence for the adaptive sampled empirical optimistic source This module transports the fixed-policy sampled count-and-reward empirical model event through the exact history-fiber laws of the adaptive stochastic source. The resulting finite-round event controls models computed from the actual sampled rewards, not their known-mean projection.
Module map
Imports
BanditRLProof.RL.FiniteHorizonAdaptiveStochasticRewardSampledEmpiricalOptimisticSource, BanditRLProof.RL.FiniteHorizonStochasticRewardIIDExplicitCalibration
Imported by
BanditRLProof, BanditRLProof.RL.FiniteHorizonAdaptiveStochasticRewardSampledEmpiricalOptimisticCumulativeRecommendedRegret, BanditRLProof.RL.FiniteHorizonAdaptiveStochasticRewardSampledEmpiricalOptimisticSelfConsistentCausalModelConfidence
Declarations
Open an item to read its exact compact statement and source link. Detailed teaching notes are linked when registered.
def
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.policyAt
Compiled
Policy whose iid stochastic law generated a batch coordinate.
def policyAt {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (source : AdaptiveStochasticEpisodeBatchSource mdp initialState episodes) (trajectory : StochasticEpisodeBatchTrajectory mdp episodes) : Nat -> MarkovPolicy mdp | 0 => source.initialPolicy | n + 1 => source.successorPolicy n (Preorder.frestrictLe n trajectory) /-- Pull an initial stochastic-batch event back to the adaptive trajectory. -/ def initialBadEvent {mdp : MDP State Action} {episodes : Nat} (bad : Set (StochasticEpisodeBatch mdp episodes)) : Set (StochasticEpisodeBatchTrajectory mdp episodes)
def
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.initialBadEvent
Compiled
Pull an initial stochastic-batch event back to the adaptive trajectory.
def initialBadEvent {mdp : MDP State Action} {episodes : Nat} (bad : Set (StochasticEpisodeBatch mdp episodes)) : Set (StochasticEpisodeBatchTrajectory mdp episodes)
def
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.successorBadEvent
Compiled
Pull a prefix-dependent successor stochastic-batch event back to the trajectory.
def successorBadEvent {mdp : MDP State Action} {episodes : Nat} (n : Nat) (bad : Set (StochasticEpisodeBatchPrefix mdp episodes n × StochasticEpisodeBatch mdp episodes)) : Set (StochasticEpisodeBatchTrajectory mdp episodes)
def
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.roundBadEvent
Compiled
Round-indexed adapted stochastic-batch event.
def roundBadEvent {mdp : MDP State Action} {episodes : Nat} (initialBad : Set (StochasticEpisodeBatch mdp episodes)) (successorBad : (n : Nat) -> Set (StochasticEpisodeBatchPrefix mdp episodes n × StochasticEpisodeBatch mdp episodes)) : Nat -> Set (StochasticEpisodeBatchTrajectory mdp episodes) | 0 => initialBadEvent initialBad | n + 1 => successorBadEvent n (successorBad n) /-- Union of the first `rounds` adapted stochastic-batch events. -/ def finiteHorizonBadEvent {mdp : MDP State Action} {episodes : Nat} (rounds : Nat) (initialBad : Set (StochasticEpisodeBatch mdp episodes)) (successorBad : (n : Nat) -> Set (StochasticEpisodeBatchPrefix mdp episodes n × StochasticEpisodeBatch mdp episodes)) : Set (StochasticEpisodeBatchTrajectory mdp episodes)
def
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.finiteHorizonBadEvent
Compiled
Union of the first `rounds` adapted stochastic-batch events.
def finiteHorizonBadEvent {mdp : MDP State Action} {episodes : Nat} (rounds : Nat) (initialBad : Set (StochasticEpisodeBatch mdp episodes)) (successorBad : (n : Nat) -> Set (StochasticEpisodeBatchPrefix mdp episodes n × StochasticEpisodeBatch mdp episodes)) : Set (StochasticEpisodeBatchTrajectory mdp episodes)
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.measurableSet_finiteHorizonBadEvent
Compiled
Measurability of the finite adapted stochastic-batch union.
theorem measurableSet_finiteHorizonBadEvent {mdp : MDP State Action} {episodes rounds : Nat} {initialBad : Set (StochasticEpisodeBatch mdp episodes)} {successorBad : (n : Nat) -> Set (StochasticEpisodeBatchPrefix mdp episodes n × StochasticEpisodeBatch mdp episodes)} (hinitial : MeasurableSet initialBad) (hsuccessor : forall n, n + 1 < rounds -> MeasurableSet (successorBad n)) : MeasurableSet (finiteHorizonBadEvent rounds initialBad successorBad)
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.trajectoryMeasure_initialBadEvent
Compiled
Exact mass of a pulled-back initial stochastic-batch event.
theorem trajectoryMeasure_initialBadEvent {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (source : AdaptiveStochasticEpisodeBatchSource mdp initialState episodes) {bad : Set (StochasticEpisodeBatch mdp episodes)} (hbad : MeasurableSet bad) : source.trajectoryMeasure (initialBadEvent bad) = source.rewardSource.iidStochasticTrajectoryFamilyMeasure source.initialPolicy initialState episodes bad
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.trajectoryMeasure_successorBadEvent_le
Compiled
A successor event inherits a uniform bound on every history fiber.
theorem trajectoryMeasure_successorBadEvent_le {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (source : AdaptiveStochasticEpisodeBatchSource mdp initialState episodes) (n : Nat) {bad : Set (StochasticEpisodeBatchPrefix mdp episodes n × StochasticEpisodeBatch mdp episodes)} (hbad : MeasurableSet bad) (budget : ENNReal) (hfiber : forall history, source.batchKernel n history (Prod.mk history ⁻¹' bad) <= budget) : source.trajectoryMeasure (successorBadEvent n bad) <= budget
def
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.initialAllCoordinateEmpiricalModelBadEvent
Compiled
Initial selected count-and-reward empirical-model event.
noncomputable def initialAllCoordinateEmpiricalModelBadEvent {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (source : AdaptiveStochasticEpisodeBatchSource mdp initialState episodes) (rounds : Nat) (varianceProxy : NNReal) (countDelta rewardDelta : Real) : Set (StochasticEpisodeBatch mdp episodes)
def
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.successorAllCoordinateEmpiricalModelBadEvent
Compiled
Prefix-selected successor count-and-reward empirical-model event.
noncomputable def successorAllCoordinateEmpiricalModelBadEvent {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (source : AdaptiveStochasticEpisodeBatchSource mdp initialState episodes) (rounds : Nat) (varianceProxy : NNReal) (countDelta rewardDelta : Real) (n : Nat) : Set (StochasticEpisodeBatchPrefix mdp episodes n × StochasticEpisodeBatch mdp episodes)
def
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.adaptiveAllCoordinateEmpiricalModelBadEvent
Compiled
Finite-round selected count-and-reward empirical-model event.
noncomputable def adaptiveAllCoordinateEmpiricalModelBadEvent {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (source : AdaptiveStochasticEpisodeBatchSource mdp initialState episodes) (rounds : Nat) (varianceProxy : NNReal) (countDelta rewardDelta : Real) : Set (StochasticEpisodeBatchTrajectory mdp episodes)
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.multiBatchLocalDelta_pos_of_pos
Compiled
A positive global share gives a positive finite-round local share.
theorem multiBatchLocalDelta_pos_of_pos {rounds : Nat} (hrounds : 0 < rounds) {delta : Real} (hdelta : 0 < delta) : 0 < multiBatchLocalDelta rounds delta
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.multiBatchLocalDelta_le_one_of_le_one
Compiled
A global share at most one gives every finite-round local share at most one.
theorem multiBatchLocalDelta_le_one_of_le_one {rounds : Nat} (hrounds : 0 < rounds) {delta : Real} (hdelta_le_one : delta <= 1) : multiBatchLocalDelta rounds delta <= 1
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.measurableSet_initialAllCoordinateEmpiricalModelBadEvent
Compiled
The initial selected empirical-model event is measurable.
theorem measurableSet_initialAllCoordinateEmpiricalModelBadEvent {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (source : AdaptiveStochasticEpisodeBatchSource mdp initialState episodes) (rounds : Nat) (varianceProxy : NNReal) (countDelta rewardDelta : Real) : MeasurableSet (source.initialAllCoordinateEmpiricalModelBadEvent rounds varianceProxy countDelta rewardDelta)
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.measurableSet_adaptiveAllCoordinateEmpiricalModelBadEvent
Compiled
Measurability of every selected successor event closes the global event.
theorem measurableSet_adaptiveAllCoordinateEmpiricalModelBadEvent {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (source : AdaptiveStochasticEpisodeBatchSource mdp initialState episodes) (rounds : Nat) (varianceProxy : NNReal) (countDelta rewardDelta : Real) (hsuccessor : forall n, n + 1 < rounds -> MeasurableSet (source.successorAllCoordinateEmpiricalModelBadEvent rounds varianceProxy countDelta rewardDelta n)) : MeasurableSet (source.adaptiveAllCoordinateEmpiricalModelBadEvent rounds varianceProxy countDelta rewardDelta)
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.initialAllCoordinateEmpiricalModelBadEvent_le
Compiled
The initial selected empirical-model event receives its two local shares.
theorem initialAllCoordinateEmpiricalModelBadEvent_le [StandardBorelSpace State] [StandardBorelSpace Action] {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (source : AdaptiveStochasticEpisodeBatchSource mdp initialState episodes) (rounds : Nat) (hrounds : 0 < rounds) (hepisodes : 0 < episodes) (varianceProxy : NNReal) (law : source.rewardSource.UniformSubgaussianRewardLaw varianceProxy) (htotal : 0 < ((((episodes : NNReal) * varianceProxy : NNReal) : Real))) (countDelta : Real) (hcountDelta : 0 < countDelta) (hcountDelta_le_one : countDelta <= 1) (rewardDelta : Real) (hrewardDelta : 0 < rewardDelta) (hrewardDelta_le_one : rewardDelta <= 1) : (source.rewardSource.iidStochasticTrajectoryFamilyMeasure source.initialPolicy initialState episodes) (source.initialAllCoordinateEmpiricalModelBadEvent rounds varianceProxy countDelta rewardDelta) <= ENNReal.ofReal (multiBatchLocalDelta rounds countDelta) + ENNReal.ofReal (multiBatchLocalDelta rounds rewardDelta)
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.successorAllCoordinateEmpiricalModelBadEvent_fiber_le
Compiled
Every selected successor fiber receives the same two local shares.
theorem successorAllCoordinateEmpiricalModelBadEvent_fiber_le [StandardBorelSpace State] [StandardBorelSpace Action] {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (source : AdaptiveStochasticEpisodeBatchSource mdp initialState episodes) (rounds : Nat) (hrounds : 0 < rounds) (hepisodes : 0 < episodes) (varianceProxy : NNReal) (law : source.rewardSource.UniformSubgaussianRewardLaw varianceProxy) (htotal : 0 < ((((episodes : NNReal) * varianceProxy : NNReal) : Real))) (countDelta : Real) (hcountDelta : 0 < countDelta) (hcountDelta_le_one : countDelta <= 1) (rewardDelta : Real) (hrewardDelta : 0 < rewardDelta) (hrewardDelta_le_one : rewardDelta <= 1) (n : Nat) (history : StochasticEpisodeBatchPrefix mdp episodes n) : source.batchKernel n history (Prod.mk history ⁻¹' source.successorAllCoordinateEmpiricalModelBadEvent rounds varianceProxy countDelta rewardDelta n) <= ENNReal.ofReal (multiBatchLocalDelta rounds countDelta) + ENNReal.ofReal (multiBatchLocalDelta rounds rewardDelta)
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.ofReal_multiBatchLocalDelta_add
Compiled
The two local shares are the local share of their sum.
theorem ofReal_multiBatchLocalDelta_add (rounds : Nat) {countDelta rewardDelta : Real} (hcountDelta : 0 <= countDelta) (hrewardDelta : 0 <= rewardDelta) : ENNReal.ofReal (multiBatchLocalDelta rounds countDelta) + ENNReal.ofReal (multiBatchLocalDelta rounds rewardDelta) = ENNReal.ofReal (multiBatchLocalDelta rounds (countDelta + rewardDelta))
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.trajectoryMeasure_adaptiveAllCoordinateEmpiricalModelBadEvent_le
Compiled
Finite-round adaptive count-and-reward confidence under exact selected-policy iid fibers. The two global shares remain separate in the terminal bound.
theorem trajectoryMeasure_adaptiveAllCoordinateEmpiricalModelBadEvent_le [StandardBorelSpace State] [StandardBorelSpace Action] {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (source : AdaptiveStochasticEpisodeBatchSource mdp initialState episodes) (rounds : Nat) (hrounds : 0 < rounds) (hepisodes : 0 < episodes) (varianceProxy : NNReal) (law : source.rewardSource.UniformSubgaussianRewardLaw varianceProxy) (htotal : 0 < ((((episodes : NNReal) * varianceProxy : NNReal) : Real))) (countDelta : Real) (hcountDelta : 0 < countDelta) (hcountDelta_le_one : countDelta <= 1) (rewardDelta : Real) (hrewardDelta : 0 < rewardDelta) (hrewardDelta_le_one : rewardDelta <= 1) (hsuccessor : forall n, n + 1 < rounds -> MeasurableSet (source.successorAllCoordinateEmpiricalModelBadEvent rounds varianceProxy countDelta rewardDelta n)) : source.trajectoryMeasure (source.adaptiveAllCoordinateEmpiricalModelBadEvent rounds varianceProxy countDelta rewardDelta) <= ENNReal.ofReal countDelta + ENNReal.ofReal rewardDelta
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticEpisodeBatchSource.policyAt_batch_not_mem_allCoordinateEmpiricalModelBadEvent
Compiled
Outside the adaptive event, each batch avoids its generating policy's event.
theorem policyAt_batch_not_mem_allCoordinateEmpiricalModelBadEvent {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes rounds : Nat} (source : AdaptiveStochasticEpisodeBatchSource mdp initialState episodes) (trajectory : StochasticEpisodeBatchTrajectory mdp episodes) (varianceProxy : NNReal) (countDelta rewardDelta : Real) (htrajectory : trajectory ∉ source.adaptiveAllCoordinateEmpiricalModelBadEvent rounds varianceProxy countDelta rewardDelta) (round : Fin rounds) : trajectory round ∉ source.rewardSource.stochasticAllCoordinateEmpiricalModelBadEvent (source.policyAt trajectory round) initialState episodes varianceProxy (multiBatchLocalDelta rounds countDelta) (multiBatchLocalDelta rounds rewardDelta)
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticSampledEmpiricalOptimisticSource.measurableSet_selectedExploratoryStochasticAllCoordinateEmpiricalModelBadEvent
Compiled
Selected exploratory count-and-reward events are measurable after pulling the stochastic batch back to its raw sampled `EpisodeBatch`.
theorem measurableSet_selectedExploratoryStochasticAllCoordinateEmpiricalModelBadEvent {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} {History : Type*} [MeasurableSpace History] (rewardSource : mdp.MeanCompatibleRewardKernel) (selector : History -> DeterministicMarkovPolicyTable mdp) (hselector : Measurable selector) (explorationRate : NNReal) (hexplorationRate : explorationRate <= 1) (varianceProxy : NNReal) (countDelta rewardDelta : Real) : MeasurableSet {pair : History × StochasticEpisodeBatch mdp episodes | pair.2 ∈ rewardSource.stochasticAllCoordinateEmpiricalModelBadEvent ((selector pair.1).exploratoryPolicy explorationRate hexplorationRate) initialState episodes varianceProxy countDelta rewardDelta}
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticSampledEmpiricalOptimisticSource.exploratorySource_measurableSet_successorAllCoordinateEmpiricalModelBadEvent
Compiled
Every successor event of the concrete sampled optimistic source is measurable.
theorem exploratorySource_measurableSet_successorAllCoordinateEmpiricalModelBadEvent {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (rewardSource : mdp.MeanCompatibleRewardKernel) (initialTable : DeterministicMarkovPolicyTable mdp) (defaultState : State) (rewardBudget transitionBudget : Real) (explorationRate : NNReal) (hexplorationRate : explorationRate <= 1) (rounds : Nat) (varianceProxy : NNReal) (countDelta rewardDelta : Real) (n : Nat) : let source := exploratorySource mdp initialState episodes rewardSource initialTable defaultState rewardBudget transitionBudget explorationRate hexplorationRate MeasurableSet (source.successorAllCoordinateEmpiricalModelBadEvent rounds varianceProxy countDelta rewardDelta n)
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticSampledEmpiricalOptimisticSource.exploratorySource_trajectoryMeasure_adaptiveAllCoordinateEmpiricalModelBadEvent_le
Compiled
The concrete sampled optimistic source inherits the finite-round selected count-and-reward event without any caller-supplied measurability premise.
theorem exploratorySource_trajectoryMeasure_adaptiveAllCoordinateEmpiricalModelBadEvent_le [StandardBorelSpace State] [StandardBorelSpace Action] {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (rewardSource : mdp.MeanCompatibleRewardKernel) (initialTable : DeterministicMarkovPolicyTable mdp) (defaultState : State) (rewardBudget transitionBudget : Real) (explorationRate : NNReal) (hexplorationRate : explorationRate <= 1) (rounds : Nat) (hrounds : 0 < rounds) (hepisodes : 0 < episodes) (varianceProxy : NNReal) (law : rewardSource.UniformSubgaussianRewardLaw varianceProxy) (htotal : 0 < ((((episodes : NNReal) * varianceProxy : NNReal) : Real))) (countDelta : Real) (hcountDelta : 0 < countDelta) (hcountDelta_le_one : countDelta <= 1) (rewardDelta : Real) (hrewardDelta : 0 < rewardDelta) (hrewardDelta_le_one : rewardDelta <= 1) : let source := exploratorySource mdp initialState episodes rewardSource initialTable defaultState rewardBudget transitionBudget explorationRate hexplorationRate let event := source.adaptiveAllCoordinateEmpiricalModelBadEvent rounds varianceProxy countDelta rewardDelta MeasurableSet event /\ source.trajectoryMeasure event <= ENNReal.ofReal countDelta + ENNReal.ofReal rewardDelta
theorem
BanditRLProof.FiniteHorizonRL.AdaptiveStochasticSampledEmpiricalOptimisticSource.exploratorySource_trajectoryMeasure_finiteRound_allCoordinateConfidence_optimism_and_recommendedExpectedRegret_of_pathSupport_explicitCalibration
Compiled
Finite-round sampled-reward adaptive optimism with explicit exploratory path support calibration. Every model is built from the actual observed rewards; outside one measurable event, every round is optimistic and its recommended policy satisfies the compiled selected-radius expected-regret bound.
theorem exploratorySource_trajectoryMeasure_finiteRound_allCoordinateConfidence_optimism_and_recommendedExpectedRegret_of_pathSupport_explicitCalibration [StandardBorelSpace State] [StandardBorelSpace Action] {mdp : MDP State Action} {initialState : Measure State} [IsProbabilityMeasure initialState] {episodes : Nat} (rewardSource : mdp.MeanCompatibleRewardKernel) (initialTable : DeterministicMarkovPolicyTable mdp) (explorationRate : NNReal) (hexplorationRate : explorationRate <= 1) (rounds : Nat) (hrounds : 0 < rounds) (hepisodes : 0 < episodes) (varianceProxy : NNReal) (law : rewardSource.UniformSubgaussianRewardLaw varianceProxy) (htotal : 0 < ((((episodes : NNReal) * varianceProxy : NNReal) : Real))) (countDelta : Real) (hcountDelta : 0 < countDelta) (hcountDelta_le_one : countDelta <= 1) (rewardDelta : Real) (hrewardDelta : 0 < rewardDelta) (hrewardDelta_le_one : rewardDelta <= 1) (defaultState : State) (rewardBound : Real) (hrewardBound : forall state action, |mdp.reward state action| <= rewardBound) (support : ExploratoryPathSupport mdp initialState) (visitFloor : Real) (hfloor : ExploratoryPathUniformVisitFloor support explorationRate visitFloor) (hmargin : simultaneousCountConfidenceRadius mdp episodes (multiBatchLocalDelta rounds countDelta) < (episodes : Real) * visitFloor) (hcontraction : (Fintype.card State : Real) * uniformFloorTransitionCoordinateRadius mdp episodes (multiBatchLocalDelta rounds countDelta) visitFloor * (mdp.horizon : Real) <= 1 / 2) : let localCountDelta := multiBatchLocalDelta rounds countDelta let localRewardDelta := multiBatchLocalDelta rounds rewardDelta let rewardBudget := uniformFloorStochasticRewardCoordinateRadius mdp episodes varianceProxy localCountDelta localRewardDelta visitFloor let transitionBudget := uniformFloorStochasticTransitionBudget rewardBound rewardBudget let source := exploratorySource mdp initialState episodes rewardSource initialTable defaultState rewardBudget transitionBudget explorationRate hexplorationRate let event := source.adaptiveAllCoordinateEmpiricalModelBadEvent rounds varianceProxy countDelta rewardDelta MeasurableSet event /\ source.trajectoryMeasure event <= ENNReal.ofReal countDelta + ENNReal.ofReal rewardDelta /\ forall trajectory, trajectory ∉ event -> forall round : Fin rounds, let model := mdp.stochasticAllCoordinateEmpiricalFiniteBatchModel episodes (mdp.sampledEpisodeBatchOfStochasticTrajectories episodes (trajectory round)) defaultState rewardBudget transitionBudget (forall state, mdp.optimalValueRemaining mdp.horizon le_rfl state <= model.plan.upperValueRemaining mdp.horizon le_rfl state) /\ model.plan.optimisticPolicy.expectedRegret initialState <= model.plan.optimisticPolicy.occupancySumRemaining (fun remaining hremaining state => 2 * model.plan.selectedRadiusRemaining remaining hremaining state) mdp.horizon le_rfl initialState