Skip to content

Commit fb8794a

Browse files
committed
condDistrib lemmas
1 parent df07be0 commit fb8794a

3 files changed

Lines changed: 31 additions & 5 deletions

File tree

‎LeanBandits/Bandit.lean‎

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,11 +234,17 @@ lemma condDistrib_arm_reward [StandardBorelSpace α] [Nonempty α] [StandardBore
234234
((alg.p0 ⊗ₘ ν).map (MeasurableEquiv.piIicZero (fun _ ↦ α × R)).symm)
235235
(κ := Bandit.stepKernel alg ν) n
236236

237-
lemma condDistrib_reward [StandardBorelSpace R] [Nonempty R] (alg : Algorithm α R) (ν : Kernel α R)
238-
[IsMarkovKernel ν] (n : ℕ) :
237+
lemma condDistrib_reward [StandardBorelSpace α] [Nonempty α] [StandardBorelSpace R] [Nonempty R]
238+
(alg : Algorithm α R) (ν : Kernel α R) [IsMarkovKernel ν] (n : ℕ) :
239239
condDistrib (reward n) (arm n) (Bandit.trajMeasure alg ν)
240240
=ᵐ[(Bandit.trajMeasure alg ν).map (arm n)] ν := by
241-
sorry
241+
cases n with
242+
| zero => sorry
243+
| succ n =>
244+
have h_ar := condDistrib_arm_reward alg ν n
245+
have h_prod := condDistrib_prod_left (X := arm (n + 1)) (Y := reward (n + 1))
246+
(T := hist n) (μ := Bandit.trajMeasure alg ν) (by fun_prop) (by fun_prop) (by fun_prop)
247+
sorry
242248

243249
lemma condDistrib_arm [StandardBorelSpace α] [Nonempty α] [StandardBorelSpace R] [Nonempty R]
244250
(alg : Algorithm α R) (ν : Kernel α R) [IsMarkovKernel ν] (n : ℕ) :

‎LeanBandits/ForMathlib/CondDistrib.lean‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,26 @@ lemma condDistrib_fst_prod (hX : AEMeasurable X μ) (hY : AEMeasurable Y μ)
521521
fun_prop
522522
· fun_prop
523523

524+
lemma Measure.compProd_assoc {μ : Measure α} {κ : Kernel α β} {η : Kernel (α × β) γ}
525+
[SFinite μ] [IsSFiniteKernel κ] [IsSFiniteKernel η] :
526+
(μ ⊗ₘ κ) ⊗ₘ η = (μ ⊗ₘ (κ ⊗ₖ η)).map MeasurableEquiv.prodAssoc.symm := by
527+
sorry
528+
529+
lemma Measure.compProd_assoc' {μ : Measure α} {κ : Kernel α β} {η : Kernel (α × β) γ}
530+
[SFinite μ] [IsSFiniteKernel κ] [IsSFiniteKernel η] :
531+
μ ⊗ₘ (κ ⊗ₖ η) = ((μ ⊗ₘ κ) ⊗ₘ η).map MeasurableEquiv.prodAssoc := by
532+
simp [Measure.compProd_assoc]
533+
534+
lemma condDistrib_prod_left [StandardBorelSpace β] [Nonempty β]
535+
(hX : AEMeasurable X μ) (hY : AEMeasurable Y μ) (hT : AEMeasurable T μ) :
536+
condDistrib (fun ω ↦ (X ω, Y ω)) T μ
537+
=ᵐ[μ.map T] condDistrib X T μ ⊗ₖ condDistrib Y (fun ω ↦ (T ω, X ω)) μ := by
538+
refine condDistrib_ae_eq_of_measure_eq_compProd₀ (μ := μ) hT (by fun_prop)
539+
(condDistrib X T μ ⊗ₖ condDistrib Y (fun ω ↦ (T ω, X ω)) μ) ?_
540+
rw [Measure.compProd_assoc', compProd_map_condDistrib hX, compProd_map_condDistrib hY,
541+
AEMeasurable.map_map_of_aemeasurable (by fun_prop) (by fun_prop)]
542+
rfl
543+
524544
end CondDistrib
525545

526546
section Cond

‎LeanBandits/RewardByCountMeasure.lean‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ notation "𝓛[" Y " | " X " ← " x "; " μ "]" => Measure.map Y (μ[|X ⁻¹'
102102
notation "𝓛[" Y " | " X "; " μ "]" => condDistrib Y X μ
103103

104104
omit [DecidableEq α] [MeasurableSingletonClass α] in
105-
lemma condDistrib_reward' (n : ℕ) :
105+
lemma condDistrib_reward' [StandardBorelSpace α] [Nonempty α] (n : ℕ) :
106106
𝓛[fun ω ↦ reward n ω.1 | fun ω ↦ arm n ω.1; Bandit.measure alg ν]
107107
=ᵐ[(Bandit.measure alg ν).map (fun ω ↦ arm n ω.1)] ν := by
108108
let μ := Bandit.measure alg ν
@@ -122,7 +122,7 @@ lemma condDistrib_reward' (n : ℕ) :
122122
rw [h_prod, h_eq]
123123

124124
omit [DecidableEq α] in
125-
lemma reward_cond_arm [Countable α] (a : α) (n : ℕ)
125+
lemma reward_cond_arm [StandardBorelSpace α] [Nonempty α] [Countable α] (a : α) (n : ℕ)
126126
(hμa : (Bandit.measure alg ν).map (fun ω ↦ arm n ω.1) {a} ≠ 0) :
127127
𝓛[fun ω ↦ reward n ω.1 | fun ω ↦ arm n ω.1 ← a; Bandit.measure alg ν] = ν a := by
128128
let μ := Bandit.measure alg ν

0 commit comments

Comments
 (0)