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
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