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

Lean module · Tsallis-FTRL

BanditRLProof.TsallisOracleRestartGlobalMeanSwitchCount

# Oracle restart at global population-mean change points This module builds a deterministic oracle schedule that restarts exactly after each supplied change point. It then specializes the change predicate to population-mean changes of an independent finite-arm reward law.

Module map

Declarations
16
Placeholders
0

Imports

BanditRLProof.TsallisOracleRestartGeneratedDynamicRegret, BanditRLProof.TsallisFiniteArmIndependentGlobalMeanSwitchCountDynamicRegret

Imported by

BanditRLProof

Declarations

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

def BanditRLProof.Tsallis.oracleChangePointRestartStart Compiled

Start of the most recent epoch when a restart occurs after every `change` boundary. A true value at `s` starts the new epoch at `s + 1`.

def oracleChangePointRestartStart (change : Nat -> Prop) [DecidablePred change] : Nat -> Nat | 0 => 0 | n + 1 => if change n then n + 1 else oracleChangePointRestartStart change n /-- A valid restart schedule generated by an arbitrary decidable boundary predicate. -/ def oracleChangePointRestartSchedule (change : Nat -> Prop) [DecidablePred change] : OracleRestartSchedule where
def BanditRLProof.Tsallis.oracleChangePointRestartSchedule Compiled

A valid restart schedule generated by an arbitrary decidable boundary predicate.

def oracleChangePointRestartSchedule (change : Nat -> Prop) [DecidablePred change] : OracleRestartSchedule where
theorem BanditRLProof.Tsallis.oracleChangePointRestartSchedule_start_zero Compiled

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

theorem oracleChangePointRestartSchedule_start_zero (change : Nat -> Prop) [DecidablePred change] : (oracleChangePointRestartSchedule change).start 0 = 0
theorem BanditRLProof.Tsallis.oracleChangePointRestartSchedule_start_succ Compiled

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

theorem oracleChangePointRestartSchedule_start_succ (change : Nat -> Prop) [DecidablePred change] (n : Nat) : (oracleChangePointRestartSchedule change).start (n + 1) = if change n then n + 1 else (oracleChangePointRestartSchedule change).start n
theorem BanditRLProof.Tsallis.oracleRestartScheduleEpochs_oracleChangePointRestartSchedule Compiled

The registered epochs are zero together with every successor of a change point before the inclusive horizon.

theorem oracleRestartScheduleEpochs_oracleChangePointRestartSchedule (change : Nat -> Prop) [DecidablePred change] (horizon : Nat) : oracleRestartScheduleEpochs (oracleChangePointRestartSchedule change) horizon = insert 0 (((Finset.range horizon).filter change).image (fun s => s + 1))
theorem BanditRLProof.Tsallis.oracleRestartScheduleEpochs_card_oracleChangePointRestartSchedule Compiled

A change-point restart schedule has exactly one more visited epoch than the number of change boundaries before the inclusive horizon.

theorem oracleRestartScheduleEpochs_card_oracleChangePointRestartSchedule (change : Nat -> Prop) [DecidablePred change] (horizon : Nat) : (oracleRestartScheduleEpochs (oracleChangePointRestartSchedule change) horizon).card = ((Finset.range horizon).filter change).card + 1
def BanditRLProof.Tsallis.finiteArmIndependentGlobalMeanChangeAt Compiled

A boundary has a global population-mean change when at least one arm changes mean between its two adjacent reward laws.

def finiteArmIndependentGlobalMeanChangeAt {K : Nat} (armLaw : Nat -> Fin K -> Measure Rat) (s : Nat) : Prop
def BanditRLProof.Tsallis.finiteArmIndependentGlobalMeanChangeTimes Compiled

Global population-mean change boundaries strictly before `horizon`.

noncomputable def finiteArmIndependentGlobalMeanChangeTimes {K : Nat} (armLaw : Nat -> Fin K -> Measure Rat) (horizon : Nat) : Finset Nat
def BanditRLProof.Tsallis.finiteArmIndependentGlobalMeanChangeRestartSchedule Compiled

Population-mean oracle schedule: restart immediately after every global mean-change boundary.

noncomputable def finiteArmIndependentGlobalMeanChangeRestartSchedule {K : Nat} (armLaw : Nat -> Fin K -> Measure Rat) : OracleRestartSchedule
theorem BanditRLProof.Tsallis.oracleRestartScheduleEpochs_card_finiteArmIndependentGlobalMeanChangeRestartSchedule Compiled

The population-mean restart schedule has exactly one initial epoch plus one epoch for every global mean-change boundary.

theorem oracleRestartScheduleEpochs_card_finiteArmIndependentGlobalMeanChangeRestartSchedule {K : Nat} (armLaw : Nat -> Fin K -> Measure Rat) (horizon : Nat) : (oracleRestartScheduleEpochs (finiteArmIndependentGlobalMeanChangeRestartSchedule armLaw) horizon).card = (finiteArmIndependentGlobalMeanChangeTimes armLaw horizon).card + 1
theorem BanditRLProof.Tsallis.finiteArmIndependentCumulativeGlobalMeanSwitchCount_eq_changeTimes_card Compiled

The existing real-valued global switch count is the coercion of the named change-time finset cardinality.

theorem finiteArmIndependentCumulativeGlobalMeanSwitchCount_eq_changeTimes_card {K : Nat} (armLaw : Nat -> Fin K -> Measure Rat) (horizon : Nat) : finiteArmIndependentCumulativeGlobalMeanSwitchCount armLaw horizon = ((finiteArmIndependentGlobalMeanChangeTimes armLaw horizon).card : Real)
theorem BanditRLProof.Tsallis.oracleRestartScheduleEpochs_card_cast_finiteArmIndependentGlobalMeanChangeRestartSchedule Compiled

In real-valued form, the exact epoch count is the existing cumulative global population-mean switch count plus one.

theorem oracleRestartScheduleEpochs_card_cast_finiteArmIndependentGlobalMeanChangeRestartSchedule {K : Nat} (armLaw : Nat -> Fin K -> Measure Rat) (horizon : Nat) : ((oracleRestartScheduleEpochs (finiteArmIndependentGlobalMeanChangeRestartSchedule armLaw) horizon).card : Real) = finiteArmIndependentCumulativeGlobalMeanSwitchCount armLaw horizon + 1
theorem BanditRLProof.Tsallis.finiteArmIndependentRewardMean_eq_globalMeanChangeRestartStart Compiled

Since every global mean change starts a new epoch, each arm's population mean is constant from the current epoch start through the current round.

theorem finiteArmIndependentRewardMean_eq_globalMeanChangeRestartStart {K : Nat} (armLaw : Nat -> Fin K -> Measure Rat) (t : Nat) (arm : Fin K) : finiteArmIndependentRewardMean armLaw t arm = finiteArmIndependentRewardMean armLaw ((finiteArmIndependentGlobalMeanChangeRestartSchedule armLaw).start t) arm
theorem BanditRLProof.Tsallis.finiteArmIndependentRewardMean_le_globalMeanChangeRestartBestArm Compiled

The arm maximizing population mean at the current epoch start remains a population-mean maximizer at every round in that epoch.

theorem finiteArmIndependentRewardMean_le_globalMeanChangeRestartBestArm {K : Nat} (model : FiniteBanditModel K) (armLaw : Nat -> Fin K -> Measure Rat) (t : Nat) (arm : Fin K) : finiteArmIndependentRewardMean armLaw t arm <= finiteArmIndependentRewardMean armLaw t (finiteArmIndependentBestArmAt model armLaw ((finiteArmIndependentGlobalMeanChangeRestartSchedule armLaw).start t))
theorem BanditRLProof.Tsallis.independentLossStateTimeVaryingMeanGap_globalMeanChangeRestartBestArm_nonneg Compiled

Under unit support, the raw-population-mean oracle comparator is also optimal for the clipped loss used by the generated trajectory.

theorem independentLossStateTimeVaryingMeanGap_globalMeanChangeRestartBestArm_nonneg {K : Nat} (model : FiniteBanditModel K) (armLaw : Nat -> Fin K -> Measure Rat) (hprob : forall t arm, IsProbabilityMeasure (armLaw t arm)) (hbound : forall t arm, ∀ᵐ reward ∂armLaw t arm, ((reward : Rat) : Real) ∈ Set.Icc (0 : Real) 1) (t : Nat) (arm : Fin K) : 0 <= independentLossStateTimeVaryingMeanGap (finiteArmIndependentRewardVectorLaw armLaw) (fun _ => finiteArmIIDRewardVectorLoss) t (finiteArmIndependentBestArmAt model armLaw ((finiteArmIndependentGlobalMeanChangeRestartSchedule armLaw).start t)) arm
theorem BanditRLProof.Tsallis.integral_sampledOracleRestartHalfTsallisFiniteArmIndependentGlobalMeanChangeDynamicRegret_le Compiled

The concrete independent reward law, restarted at every global population-mean change, has generated expected dynamic regret bounded by the square root of its exact population-mean switch count. The comparator selected at each epoch start remains optimal for the clipped loss throughout that epoch under the almost-sure unit-support contract.

theorem integral_sampledOracleRestartHalfTsallisFiniteArmIndependentGlobalMeanChangeDynamicRegret_le {K : Nat} (model : FiniteBanditModel K) (armLaw : Nat -> Fin K -> Measure Rat) (hprob : ∀ t arm, IsProbabilityMeasure (armLaw t arm)) (hbound : ∀ t arm, ∀ᵐ reward ∂armLaw t arm, ((reward : Rat) : Real) ∈ Set.Icc (0 : Real) 1) (horizon : Nat) : letI : Nonempty (Fin K)