BanditRLlib
Lean gate passed before this site build; local proof declarations are shown as compiled.

Lean module · Finite-horizon RL

BanditRLProof.RL.FiniteHorizonAdaptiveCumulativeInverseSqrtCalibration

# Adaptive cumulative inverse-square-root calibration This module calibrates the cumulative count-martingale confidence producer to a concrete count-dependent optimistic planner. Path-support exploration gives every adaptive batch a common predictable visit floor. Outside the compiled global count event, the accumulated realized visits exceed that predictable floor minus the cumulative confidence radius. The usable planner radius is `budget` at zero visits and `min budget (scale / sqrt(count))` after the first visit. Separating the zero-count value-envelope cap from the inverse-square-root scale avoids the uninhabitable one-scale cover. A deterministic roundwise two-scale calibration then supplies both cap and inverse-square-root covers. The terminal remains about recommended-policy expected regret, not behavior or realized regret.

Module map

Declarations
16
Placeholders
0

Imports

BanditRLProof.RL.FiniteHorizonAdaptiveCumulativeCountMartingaleConfidence, BanditRLProof.RL.FiniteHorizonExploratoryPathSupportExplicitCalibration

Imported by

BanditRLProof, BanditRLProof.RL.FiniteHorizonAdaptiveCumulativeHoeffdingUCBVI, BanditRLProof.RL.FiniteHorizonAdaptiveCumulativeInverseSqrtExplicitRate

Declarations

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

def BanditRLProof.FiniteHorizonRL.TransitionCountRadius.inverseSqrt Compiled

A concrete count radius: the supplied budget at zero visits and inverse-square root decay after the first visit.

noncomputable def inverseSqrt (budget : Real) (hbudget : 0 <= budget) : TransitionCountRadius where
theorem BanditRLProof.FiniteHorizonRL.TransitionCountRadius.inverseSqrt_radius_zero Compiled

The inverse-square-root radius exposes its supplied zero-count budget.

@[simp] theorem inverseSqrt_radius_zero (budget : Real) (hbudget : 0 <= budget) : (inverseSqrt budget hbudget).radius 0 = budget
theorem BanditRLProof.FiniteHorizonRL.TransitionCountRadius.inverseSqrt_radius_of_pos Compiled

Positive counts use the genuine inverse-square-root branch.

theorem inverseSqrt_radius_of_pos (budget : Real) (hbudget : 0 <= budget) {count : Nat} (hcount : 0 < count) : (inverseSqrt budget hbudget).radius count = budget / Real.sqrt count
def BanditRLProof.FiniteHorizonRL.TransitionCountRadius.cappedInverseSqrt Compiled

A usable capped inverse-square-root radius. `budget` controls the zero-count value envelope, while `scale` controls the statistical decay after enough visits; the cap preserves antitonicity across the first visit.

noncomputable def cappedInverseSqrt (budget scale : Real) (hbudget : 0 <= budget) (hscale : 0 <= scale) : TransitionCountRadius where
theorem BanditRLProof.FiniteHorizonRL.TransitionCountRadius.cappedInverseSqrt_radius_zero Compiled

No declaration docstring is present; use the chapter context and exact statement below.

@[simp] theorem cappedInverseSqrt_radius_zero (budget scale : Real) (hbudget : 0 <= budget) (hscale : 0 <= scale) : (cappedInverseSqrt budget scale hbudget hscale).radius 0 = budget
theorem BanditRLProof.FiniteHorizonRL.TransitionCountRadius.cappedInverseSqrt_radius_of_pos Compiled

No declaration docstring is present; use the chapter context and exact statement below.

theorem cappedInverseSqrt_radius_of_pos (budget scale : Real) (hbudget : 0 <= budget) (hscale : 0 <= scale) {count : Nat} (hcount : 0 < count) : (cappedInverseSqrt budget scale hbudget hscale).radius count = min budget (scale / Real.sqrt count)
def BanditRLProof.FiniteHorizonRL.AdaptiveEpisodeBatchSource.cumulativePathVisitExpectedFloor Compiled

Predictable cumulative visit floor supplied by one path-support batch floor.

def cumulativePathVisitExpectedFloor (episodes prefixRounds : Nat) (visitFloor : Real) : Real
def BanditRLProof.FiniteHorizonRL.AdaptiveEpisodeBatchSource.cumulativePathVisitLowerMargin Compiled

Predictable visit floor after subtracting the cumulative confidence radius.

noncomputable def cumulativePathVisitLowerMargin (mdp : MDP State Action) (episodes rounds : Nat) (delta visitFloor : Real) (round : Fin rounds) : Real
def BanditRLProof.FiniteHorizonRL.AdaptiveEpisodeBatchSource.cumulativeInverseSqrtRadiusEnvelope Compiled

Deterministic selected-radius envelope obtained from the lower visit margin.

noncomputable def cumulativeInverseSqrtRadiusEnvelope (mdp : MDP State Action) (episodes rounds : Nat) (delta visitFloor budget scale : Real) (round : Fin rounds) : Real
structure BanditRLProof.FiniteHorizonRL.AdaptiveEpisodeBatchSource.CumulativeInverseSqrtPathCalibration Compiled

Scalar regularity needed to fit all transition-coordinate errors under the inverse-square-root planner radius. It is deterministic and roundwise; path support and the martingale event supply the corresponding realized counts.

structure CumulativeInverseSqrtPathCalibration (mdp : MDP State Action) (episodes rounds : Nat) (delta visitFloor rewardBound budget scale : Real) : Prop where
theorem BanditRLProof.FiniteHorizonRL.AdaptiveCumulativeEmpiricalOptimisticSource.exploratorySource_coordinateMeanAt_visit_ge_pathFloor Compiled

Every adaptive exploratory batch retains the common path-support visit floor.

theorem exploratorySource_coordinateMeanAt_visit_ge_pathFloor (mdp : MDP State Action) (initialState : Measure State) [IsProbabilityMeasure initialState] (episodes : Nat) (initialTable : DeterministicMarkovPolicyTable mdp) (defaultState : State) (countRadius : TransitionCountRadius) (explorationRate : NNReal) (hexplorationRate : explorationRate <= 1) (support : ExploratoryPathSupport mdp initialState) (visitFloor : Real) (hfloor : ExploratoryPathUniformVisitFloor support explorationRate visitFloor) (round : Nat) (trajectory : EpisodeBatchTrajectory mdp episodes) (stage : Fin mdp.horizon) (state : State) (action : Action) : (episodes : Real) * visitFloor <= (exploratorySource mdp initialState episodes initialTable defaultState countRadius explorationRate hexplorationRate).coordinateMeanAt (.visit stage state action) round trajectory
theorem BanditRLProof.FiniteHorizonRL.AdaptiveCumulativeEmpiricalOptimisticSource.exploratorySource_cumulativeCoordinateMean_visit_ge_pathFloor Compiled

The common batch floor sums to a predictable cumulative visit floor.

theorem exploratorySource_cumulativeCoordinateMean_visit_ge_pathFloor (mdp : MDP State Action) (initialState : Measure State) [IsProbabilityMeasure initialState] (episodes : Nat) (initialTable : DeterministicMarkovPolicyTable mdp) (defaultState : State) (countRadius : TransitionCountRadius) (explorationRate : NNReal) (hexplorationRate : explorationRate <= 1) (support : ExploratoryPathSupport mdp initialState) (visitFloor : Real) (hfloor : ExploratoryPathUniformVisitFloor support explorationRate visitFloor) (prefixRounds : Nat) (trajectory : EpisodeBatchTrajectory mdp episodes) (stage : Fin mdp.horizon) (state : State) (action : Action) : AdaptiveEpisodeBatchSource.cumulativePathVisitExpectedFloor episodes prefixRounds visitFloor <= (exploratorySource mdp initialState episodes initialTable defaultState countRadius explorationRate hexplorationRate).cumulativeCoordinateMean (.visit stage state action) prefixRounds trajectory
theorem BanditRLProof.FiniteHorizonRL.AdaptiveCumulativeEmpiricalOptimisticSource.exploratorySource_cumulativePathVisitLowerMargin_lt_visitCount Compiled

Outside the global count event, every cumulative visit count exceeds its lower margin.

theorem exploratorySource_cumulativePathVisitLowerMargin_lt_visitCount (mdp : MDP State Action) (initialState : Measure State) [IsProbabilityMeasure initialState] (episodes rounds : Nat) (initialTable : DeterministicMarkovPolicyTable mdp) (defaultState : State) (countRadius : TransitionCountRadius) (explorationRate : NNReal) (hexplorationRate : explorationRate <= 1) (support : ExploratoryPathSupport mdp initialState) (visitFloor delta : Real) (hfloor : ExploratoryPathUniformVisitFloor support explorationRate visitFloor) {trajectory : EpisodeBatchTrajectory mdp episodes} (htrajectory : trajectory ∉ (exploratorySource mdp initialState episodes initialTable defaultState countRadius explorationRate hexplorationRate).adaptiveCumulativeCountBadEvent rounds delta) (round : Fin rounds) (stage : Fin mdp.horizon) (state : State) (action : Action) : AdaptiveEpisodeBatchSource.cumulativePathVisitLowerMargin mdp episodes rounds delta visitFloor round < ((cumulativeTransitionCountSummaryAt trajectory round).visitCount stage state action : Real)
theorem BanditRLProof.FiniteHorizonRL.AdaptiveCumulativeEmpiricalOptimisticSource.exploratorySource_adaptiveCumulativeCountMartingaleCover_of_pathSupport_inverseSqrtCalibration Compiled

Path support and the two-scale calibration discharge the full capped inverse-sqrt cover.

theorem exploratorySource_adaptiveCumulativeCountMartingaleCover_of_pathSupport_inverseSqrtCalibration (mdp : MDP State Action) (initialState : Measure State) [IsProbabilityMeasure initialState] (episodes rounds : Nat) (initialTable : DeterministicMarkovPolicyTable mdp) (defaultState : State) (explorationRate : NNReal) (hexplorationRate : explorationRate <= 1) (support : ExploratoryPathSupport mdp initialState) (visitFloor delta : Real) (hfloor : ExploratoryPathUniformVisitFloor support explorationRate visitFloor) (rewardBound budget scale : Real) (calibration : AdaptiveEpisodeBatchSource.CumulativeInverseSqrtPathCalibration mdp episodes rounds delta visitFloor rewardBound budget scale) : AdaptiveEpisodeBatchSource.AdaptiveCumulativeCountMartingaleCover (rounds
theorem BanditRLProof.FiniteHorizonRL.AdaptiveCumulativeEmpiricalOptimisticSource.adaptiveCumulativeEmpiricalOptimisticPlanAt_selectedRadiusRemaining_le_inverseSqrtEnvelope Compiled

The selected capped inverse-sqrt radius is controlled by the lower-margin envelope.

theorem adaptiveCumulativeEmpiricalOptimisticPlanAt_selectedRadiusRemaining_le_inverseSqrtEnvelope (mdp : MDP State Action) (initialState : Measure State) [IsProbabilityMeasure initialState] (episodes rounds : Nat) (initialTable : DeterministicMarkovPolicyTable mdp) (defaultState : State) (explorationRate : NNReal) (hexplorationRate : explorationRate <= 1) (support : ExploratoryPathSupport mdp initialState) (visitFloor delta : Real) (hfloor : ExploratoryPathUniformVisitFloor support explorationRate visitFloor) (rewardBound budget scale : Real) (calibration : AdaptiveEpisodeBatchSource.CumulativeInverseSqrtPathCalibration mdp episodes rounds delta visitFloor rewardBound budget scale) {trajectory : EpisodeBatchTrajectory mdp episodes} (htrajectory : trajectory ∉ (exploratorySource mdp initialState episodes initialTable defaultState (TransitionCountRadius.cappedInverseSqrt budget scale calibration.budget_nonneg calibration.scale_nonneg) explorationRate hexplorationRate).adaptiveCumulativeCountBadEvent rounds delta) (round : Fin rounds) (remaining : Nat) (hremaining : remaining + 1 <= mdp.horizon) (state : State) : (adaptiveCumulativeEmpiricalOptimisticPlanAt trajectory defaultState (TransitionCountRadius.cappedInverseSqrt budget scale calibration.budget_nonneg calibration.scale_nonneg) round).selectedRadiusRemaining remaining hremaining state <= AdaptiveEpisodeBatchSource.cumulativeInverseSqrtRadiusEnvelope mdp episodes rounds delta visitFloor budget scale round
theorem BanditRLProof.FiniteHorizonRL.AdaptiveCumulativeEmpiricalOptimisticSource.exploratorySource_trajectoryMeasure_cumulativeInverseSqrtPathSupport_optimism_and_explicitRecommendedExpectedRegret Compiled

Concrete route endpoint: path support and capped inverse-sqrt calibration produce one measurable cumulative count event, optimism, and a round-indexed finite-sum bound for recommended-policy expected regret.

theorem exploratorySource_trajectoryMeasure_cumulativeInverseSqrtPathSupport_optimism_and_explicitRecommendedExpectedRegret (mdp : MDP State Action) (initialState : Measure State) [IsProbabilityMeasure initialState] (episodes rounds : Nat) [StandardBorelSpace (EpisodeBatch mdp episodes)] [StandardBorelSpace (EpisodeBatchTrajectory mdp episodes)] (initialTable : DeterministicMarkovPolicyTable mdp) (defaultState : State) (explorationRate : NNReal) (hexplorationRate : explorationRate <= 1) (support : ExploratoryPathSupport mdp initialState) (visitFloor : Real) (hfloor : ExploratoryPathUniformVisitFloor support explorationRate visitFloor) (rewardBound budget scale : Real) (hrewardBound : forall state action, |mdp.reward state action| <= rewardBound) (hhorizon : 0 < mdp.horizon) (hrounds : 0 < rounds) (hepisodes : 0 < episodes) (delta : Real) (hdelta : 0 < delta) (hdelta_le_one : delta <= 1) (calibration : AdaptiveEpisodeBatchSource.CumulativeInverseSqrtPathCalibration mdp episodes rounds delta visitFloor rewardBound budget scale) : let countRadius := TransitionCountRadius.cappedInverseSqrt budget scale calibration.budget_nonneg calibration.scale_nonneg let source := exploratorySource mdp initialState episodes initialTable defaultState countRadius explorationRate hexplorationRate MeasurableSet (source.adaptiveCumulativeCountBadEvent rounds delta) /\ source.trajectoryMeasure (source.adaptiveCumulativeCountBadEvent rounds delta) <= ENNReal.ofReal delta /\ forall trajectory, trajectory ∉ source.adaptiveCumulativeCountBadEvent rounds delta -> (forall round : Fin rounds, forall state, mdp.optimalValueRemaining mdp.horizon le_rfl state <= (adaptiveCumulativeEmpiricalOptimisticPlanAt trajectory defaultState countRadius round).upperValueRemaining mdp.horizon le_rfl state) /\ adaptiveCumulativeEmpiricalOptimisticRecommendedExpectedRegret (initialState