Lean module · Thompson sampling
BanditRLProof.Algorithms.ThompsonAlgorithmDensity
# Thompson posterior invariance from algorithm-density laws This module isolates the measure-theoretic core of LML's algorithm-density posterior transport. If the actual history law and the actual history/environment joint law are obtained from their reference counterparts by the same density depending only on history, then the reference and actual environment posteriors agree at the actual history law.
Module map
Imports
BanditRLProof.Algorithms.ThompsonReferencePolicy
Imported by
BanditRLProof, BanditRLProof.Algorithms.ThompsonAlgorithmDensityProcess
Declarations
Open an item to read its exact compact statement and source link. Detailed teaching notes are linked when registered.
theorem
BanditRLProof.Thompson.compProd_withDensity_left
Compiled
Weighting the base measure of a composition product is the same as weighting the product by the density pulled back through the first projection.
theorem compProd_withDensity_left {History : Type u} {Env : Type v} [MeasurableSpace History] [MeasurableSpace Env] (historyLaw : Measure History) [SFinite historyLaw] (posterior : ProbabilityTheory.Kernel History Env) [ProbabilityTheory.IsSFiniteKernel posterior] (density : History -> ENNReal) (hdensity : Measurable density) : historyLaw.withDensity density ⊗ₘ posterior = (historyLaw ⊗ₘ posterior).withDensity (density ∘ Prod.fst)
theorem
BanditRLProof.Thompson.comp_withDensity_history
Compiled
Composing a kernel weighted by a density independent of its input is the same as weighting the composed output measure.
theorem comp_withDensity_history {Env : Type u} {History : Type v} [MeasurableSpace Env] [MeasurableSpace History] (envLaw : Measure Env) (historyKernel : ProbabilityTheory.Kernel Env History) [ProbabilityTheory.IsSFiniteKernel historyKernel] (density : History -> ENNReal) (hdensity : Measurable density) : (historyKernel.withDensity (fun _ history => density history)) ∘ₘ envLaw = (historyKernel ∘ₘ envLaw).withDensity density
theorem
BanditRLProof.Thompson.map_swap_withDensity_snd
Compiled
Swapping a joint law weighted by its second coordinate moves the density to the first coordinate of the swapped law.
theorem map_swap_withDensity_snd {Env : Type u} {History : Type v} [MeasurableSpace Env] [MeasurableSpace History] (joint : Measure (Env × History)) (density : History -> ENNReal) (hdensity : Measurable density) : (joint.withDensity (density ∘ Prod.snd)).map Prod.swap = (joint.map Prod.swap).withDensity (density ∘ Prod.fst)
theorem
BanditRLProof.Thompson.compProd_eq_compProd_withDensity_snd_of_ae_eq
Compiled
Composition products transport an a.e. output-only kernel density directly, without requiring an `IsSFiniteKernel` instance for the weighted kernel.
theorem compProd_eq_compProd_withDensity_snd_of_ae_eq {Env : Type u} {History : Type v} [MeasurableSpace Env] [MeasurableSpace History] (envLaw : Measure Env) [SFinite envLaw] (actualHistoryKernel referenceHistoryKernel : ProbabilityTheory.Kernel Env History) [ProbabilityTheory.IsSFiniteKernel actualHistoryKernel] [ProbabilityTheory.IsSFiniteKernel referenceHistoryKernel] (density : History -> ENNReal) (hdensity : Measurable density) (hkernel : actualHistoryKernel =ᵐ[envLaw] referenceHistoryKernel.withDensity (fun _ history => density history)) : envLaw ⊗ₘ actualHistoryKernel = (envLaw ⊗ₘ referenceHistoryKernel).withDensity (density ∘ Prod.snd)
structure
BanditRLProof.Thompson.AlgorithmDensityPosteriorSource
Compiled
The exact law interface produced by an algorithm-density/change-of-algorithm argument. Both the history marginal and the history/environment joint law are weighted by the same measurable density depending only on history.
structure AlgorithmDensityPosteriorSource {Omega : Type u} {OmegaRef : Type v} {History : Type w} {Env : Type x} [MeasurableSpace Omega] [MeasurableSpace OmegaRef] [MeasurableSpace History] [MeasurableSpace Env] (mu : Measure Omega) (env : Omega -> Env) (history : Omega -> History) (referenceMu : Measure OmegaRef) (referenceEnv : OmegaRef -> Env) (referenceHistory : OmegaRef -> History) where
def
BanditRLProof.Thompson.algorithmDensityPosteriorSource_of_condDistrib_history_withDensity
Compiled
Construct the two algorithm-density pushforward laws from a closer-to-process interface: the actual and reference environment marginals agree, and the actual conditional history kernel is the reference conditional history kernel weighted by one history-only density.
noncomputable def algorithmDensityPosteriorSource_of_condDistrib_history_withDensity {Omega : Type u} {OmegaRef : Type v} {History : Type w} {Env : Type x} [MeasurableSpace Omega] [MeasurableSpace OmegaRef] [MeasurableSpace History] [StandardBorelSpace History] [Nonempty History] [MeasurableSpace Env] (mu : Measure Omega) [IsFiniteMeasure mu] (env : Omega -> Env) (history : Omega -> History) (henv : Measurable env) (hhistory : Measurable history) (referenceMu : Measure OmegaRef) [IsFiniteMeasure referenceMu] (referenceEnv : OmegaRef -> Env) (referenceHistory : OmegaRef -> History) (hreferenceEnv : Measurable referenceEnv) (hreferenceHistory : Measurable referenceHistory) (density : History -> ENNReal) (hdensity : Measurable density) (henvLaw : mu.map env = referenceMu.map referenceEnv) (hcond : ProbabilityTheory.condDistrib history env mu =ᵐ[mu.map env] (ProbabilityTheory.condDistrib referenceHistory referenceEnv referenceMu).withDensity (fun _ history => density history)) : AlgorithmDensityPosteriorSource mu env history referenceMu referenceEnv referenceHistory
theorem
BanditRLProof.Thompson.referencePosterior_ae_eq_condDistrib_of_algorithmDensitySource
Compiled
The reference environment posterior equals the actual posterior whenever the two algorithm-density pushforward laws use the same history density.
theorem referencePosterior_ae_eq_condDistrib_of_algorithmDensitySource {Omega : Type u} {OmegaRef : Type v} {History : Type w} {Env : Type x} [MeasurableSpace Omega] [MeasurableSpace OmegaRef] [MeasurableSpace History] [MeasurableSpace Env] [StandardBorelSpace Env] [Nonempty Env] (mu : Measure Omega) [IsFiniteMeasure mu] (env : Omega -> Env) (history : Omega -> History) (henv : Measurable env) (referenceMu : Measure OmegaRef) [IsFiniteMeasure referenceMu] (referenceEnv : OmegaRef -> Env) (referenceHistory : OmegaRef -> History) (hreferenceEnv : Measurable referenceEnv) (hreferenceHistory : Measurable referenceHistory) (source : AlgorithmDensityPosteriorSource mu env history referenceMu referenceEnv referenceHistory) : (referencePosterior referenceMu referenceEnv referenceHistory hreferenceEnv hreferenceHistory).kernel =ᵐ[mu.map history] ProbabilityTheory.condDistrib env history mu
theorem
BanditRLProof.Thompson.referencePolicySampler_condDistrib_action_ae_eq_bestAction_of_algorithmDensitySource
Compiled
Reference-policy Thompson probability matching with algorithm-density laws as the only process-level input.
theorem referencePolicySampler_condDistrib_action_ae_eq_bestAction_of_algorithmDensitySource {Omega : Type u} {OmegaRef : Type v} {History : Type w} {Env : Type x} {Action : Type y} [MeasurableSpace Omega] [MeasurableSpace OmegaRef] [MeasurableSpace History] [MeasurableSpace Env] [StandardBorelSpace Env] [Nonempty Env] [MeasurableSpace Action] [StandardBorelSpace Action] [Nonempty Action] (mu : Measure Omega) [IsFiniteMeasure mu] (env : Omega -> Env) (history : Omega -> History) (henv : Measurable env) (hhistory : Measurable history) (referenceMu : Measure OmegaRef) [IsFiniteMeasure referenceMu] (referenceEnv : OmegaRef -> Env) (referenceHistory : OmegaRef -> History) (hreferenceEnv : Measurable referenceEnv) (hreferenceHistory : Measurable referenceHistory) (bestAction : Env -> Action) (hbestAction : Measurable bestAction) (source : AlgorithmDensityPosteriorSource mu env history referenceMu referenceEnv referenceHistory) : let policy := referenceActionKernel referenceMu referenceEnv referenceHistory hreferenceEnv hreferenceHistory bestAction hbestAction let sampler := policySamplerMeasure mu history hhistory policy ProbabilityTheory.condDistrib policySamplerAction (policySamplerHistory history) sampler =ᵐ[ sampler.map (policySamplerHistory history)] ProbabilityTheory.condDistrib (bestAction ∘ policySamplerEnv env) (policySamplerHistory history) sampler
theorem
BanditRLProof.Thompson.referencePolicySampler_condDistrib_action_ae_eq_bestAction_of_condDistrib_history_withDensity
Compiled
Reference-policy Thompson probability matching from an equal environment marginal and a conditional-history density law, without separately assuming the two algorithm-density pushforward laws.
theorem referencePolicySampler_condDistrib_action_ae_eq_bestAction_of_condDistrib_history_withDensity {Omega : Type u} {OmegaRef : Type v} {History : Type w} {Env : Type x} {Action : Type y} [MeasurableSpace Omega] [MeasurableSpace OmegaRef] [MeasurableSpace History] [StandardBorelSpace History] [Nonempty History] [MeasurableSpace Env] [StandardBorelSpace Env] [Nonempty Env] [MeasurableSpace Action] [StandardBorelSpace Action] [Nonempty Action] (mu : Measure Omega) [IsFiniteMeasure mu] (env : Omega -> Env) (history : Omega -> History) (henv : Measurable env) (hhistory : Measurable history) (referenceMu : Measure OmegaRef) [IsFiniteMeasure referenceMu] (referenceEnv : OmegaRef -> Env) (referenceHistory : OmegaRef -> History) (hreferenceEnv : Measurable referenceEnv) (hreferenceHistory : Measurable referenceHistory) (density : History -> ENNReal) (hdensity : Measurable density) (henvLaw : mu.map env = referenceMu.map referenceEnv) (hcond : ProbabilityTheory.condDistrib history env mu =ᵐ[mu.map env] (ProbabilityTheory.condDistrib referenceHistory referenceEnv referenceMu).withDensity (fun _ history => density history)) (bestAction : Env -> Action) (hbestAction : Measurable bestAction) : let policy := referenceActionKernel referenceMu referenceEnv referenceHistory hreferenceEnv hreferenceHistory bestAction hbestAction let sampler := policySamplerMeasure mu history hhistory policy ProbabilityTheory.condDistrib policySamplerAction (policySamplerHistory history) sampler =ᵐ[ sampler.map (policySamplerHistory history)] ProbabilityTheory.condDistrib (bestAction ∘ policySamplerEnv env) (policySamplerHistory history) sampler
theorem
BanditRLProof.Thompson.finitePairReferencePolicySampler_condDistrib_action_ae_eq_bestAction_of_algorithmDensitySource
Compiled
Finite action/reward-prefix Thompson probability matching from a packaged pair of algorithm-density laws.
theorem finitePairReferencePolicySampler_condDistrib_action_ae_eq_bestAction_of_algorithmDensitySource {Omega : Type u} {OmegaRef : Type v} {Env : Type w} {Action : Type x} {Reward : Type y} [MeasurableSpace Omega] [MeasurableSpace OmegaRef] [MeasurableSpace Env] [StandardBorelSpace Env] [Nonempty Env] [MeasurableSpace Action] [StandardBorelSpace Action] [Nonempty Action] [MeasurableSpace Reward] (mu : Measure Omega) [IsFiniteMeasure mu] (env : Omega -> Env) (action : Omega -> ActionTrace Action) (reward : Omega -> RewardTrace Reward) (henv : Measurable env) (haction : forall t : Nat, Measurable (fun omega => action omega t)) (hreward : forall t : Nat, Measurable (fun omega => reward omega t)) (referenceMu : Measure OmegaRef) [IsFiniteMeasure referenceMu] (referenceEnv : OmegaRef -> Env) (referenceAction : OmegaRef -> ActionTrace Action) (referenceReward : OmegaRef -> RewardTrace Reward) (hreferenceEnv : Measurable referenceEnv) (hreferenceAction : forall t : Nat, Measurable (fun omega => referenceAction omega t)) (hreferenceReward : forall t : Nat, Measurable (fun omega => referenceReward omega t)) (n : Nat) (bestAction : Env -> Action) (hbestAction : Measurable bestAction) (source : AlgorithmDensityPosteriorSource mu env (fun omega => History.finitePairHistoryOfTrace (action omega) (reward omega) n) referenceMu referenceEnv (fun omega => History.finitePairHistoryOfTrace (referenceAction omega) (referenceReward omega) n)) : let actualHistory := fun omega => History.finitePairHistoryOfTrace (action omega) (reward omega) n let referenceHistory := fun omega => History.finitePairHistoryOfTrace (referenceAction omega) (referenceReward omega) n let policy := referenceActionKernel referenceMu referenceEnv referenceHistory hreferenceEnv (History.measurable_finitePairHistoryOfTrace referenceAction referenceReward hreferenceAction hreferenceReward n) bestAction hbestAction let sampler := policySamplerMeasure mu actualHistory (History.measurable_finitePairHistoryOfTrace action reward haction hreward n) policy ProbabilityTheory.condDistrib policySamplerAction (policySamplerHistory actualHistory) sampler =ᵐ[ sampler.map (policySamplerHistory actualHistory)] ProbabilityTheory.condDistrib (bestAction ∘ policySamplerEnv env) (policySamplerHistory actualHistory) sampler
theorem
BanditRLProof.Thompson.finitePairReferencePolicySampler_condDistrib_action_ae_eq_bestAction_of_condDistrib_history_withDensity
Compiled
Finite action/reward-prefix Thompson probability matching from an equal environment marginal and a conditional finite-history density law.
theorem finitePairReferencePolicySampler_condDistrib_action_ae_eq_bestAction_of_condDistrib_history_withDensity {Omega : Type u} {OmegaRef : Type v} {Env : Type w} {Action : Type x} {Reward : Type y} [MeasurableSpace Omega] [MeasurableSpace OmegaRef] [MeasurableSpace Env] [StandardBorelSpace Env] [Nonempty Env] [MeasurableSpace Action] [StandardBorelSpace Action] [Nonempty Action] [MeasurableSpace Reward] [StandardBorelSpace Reward] [Nonempty Reward] (mu : Measure Omega) [IsFiniteMeasure mu] (env : Omega -> Env) (action : Omega -> ActionTrace Action) (reward : Omega -> RewardTrace Reward) (henv : Measurable env) (haction : forall t : Nat, Measurable (fun omega => action omega t)) (hreward : forall t : Nat, Measurable (fun omega => reward omega t)) (referenceMu : Measure OmegaRef) [IsFiniteMeasure referenceMu] (referenceEnv : OmegaRef -> Env) (referenceAction : OmegaRef -> ActionTrace Action) (referenceReward : OmegaRef -> RewardTrace Reward) (hreferenceEnv : Measurable referenceEnv) (hreferenceAction : forall t : Nat, Measurable (fun omega => referenceAction omega t)) (hreferenceReward : forall t : Nat, Measurable (fun omega => referenceReward omega t)) (n : Nat) (density : History.FinitePairHistory Action Reward n -> ENNReal) (hdensity : Measurable density) (henvLaw : mu.map env = referenceMu.map referenceEnv) (hcond : ProbabilityTheory.condDistrib (fun omega => History.finitePairHistoryOfTrace (action omega) (reward omega) n) env mu =ᵐ[mu.map env] (ProbabilityTheory.condDistrib (fun omega => History.finitePairHistoryOfTrace (referenceAction omega) (referenceReward omega) n) referenceEnv referenceMu).withDensity (fun _ history => density history)) (bestAction : Env -> Action) (hbestAction : Measurable bestAction) : let actualHistory := fun omega => History.finitePairHistoryOfTrace (action omega) (reward omega) n let referenceHistory := fun omega => History.finitePairHistoryOfTrace (referenceAction omega) (referenceReward omega) n let policy := referenceActionKernel referenceMu referenceEnv referenceHistory hreferenceEnv (History.measurable_finitePairHistoryOfTrace referenceAction referenceReward hreferenceAction hreferenceReward n) bestAction hbestAction let sampler := policySamplerMeasure mu actualHistory (History.measurable_finitePairHistoryOfTrace action reward haction hreward n) policy ProbabilityTheory.condDistrib policySamplerAction (policySamplerHistory actualHistory) sampler =ᵐ[ sampler.map (policySamplerHistory actualHistory)] ProbabilityTheory.condDistrib (bestAction ∘ policySamplerEnv env) (policySamplerHistory actualHistory) sampler