Skip to content

Commit 96aba28

Browse files
committed
prove Kernel.measurableSet_eq
1 parent 020a19e commit 96aba28

2 files changed

Lines changed: 64 additions & 30 deletions

File tree

‎LeanBandits/ForMathlib/CondDistrib.lean‎

Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -816,40 +816,14 @@ instance : OrderedSub (FiniteMeasure α) where
816816
simp only [FiniteMeasure.le_iff_coe, FiniteMeasure.toMeasure_sub, FiniteMeasure.toMeasure_add]
817817
exact Measure.sub_le_iff_add
818818

819-
instance : MeasurableSub₂ (FiniteMeasure α) where
820-
measurable_sub := by
821-
simp only [FiniteMeasure.sub_def]
822-
refine Measurable.subtype_mk ?_
823-
refine Measure.measurable_of_measurable_coe _ fun s hs ↦ ?_
824-
sorry
825-
826-
instance : MeasurableSingletonClass (Measure α) where
827-
measurableSet_singleton μ := sorry
828-
829-
instance : MeasurableSingletonClass (FiniteMeasure α) := Subtype.instMeasurableSingletonClass
830-
831-
lemma Kernel.measurableSet_eq (κ η : Kernel α β) [IsFiniteKernel κ] [IsFiniteKernel η] :
832-
MeasurableSet {a | κ a = η a} := by
833-
let κ' : α → FiniteMeasure β := fun a ↦ ⟨κ a, inferInstance⟩
834-
have hκ' : Measurable κ' := Measurable.subtype_mk (by fun_prop)
835-
let η' : α → FiniteMeasure β := fun a ↦ ⟨η a, inferInstance⟩
836-
have hη' : Measurable η' := Measurable.subtype_mk (by fun_prop)
837-
have h2 : {a | κ a = η a}
838-
= (fun a ↦ (κ' a, η' a)) ⁻¹'
839-
{p : FiniteMeasure β × FiniteMeasure β | p.fst = p.snd} := by
840-
ext
841-
simp [κ', η', FiniteMeasure.ext_iff_coe]
842-
sorry
843-
rw [h2]
844-
refine MeasurableSet.preimage ?_ (by fun_prop)
845-
refine measurableSet_eq_fun' (by fun_prop) (by fun_prop)
846-
847-
lemma Kernel.prodMkLeft_ae_eq_iff {κ η : Kernel α β} [IsFiniteKernel κ] [IsFiniteKernel η]
819+
lemma Kernel.prodMkLeft_ae_eq_iff [MeasurableSpace.CountableOrCountablyGenerated α β]
820+
{κ η : Kernel α β} [IsFiniteKernel κ] [IsFiniteKernel η]
848821
{μ : Measure (γ × α)} :
849822
κ.prodMkLeft γ =ᵐ[μ] η.prodMkLeft γ ↔ κ =ᵐ[μ.snd] η := by
850823
rw [Measure.snd, Filter.EventuallyEq, Filter.EventuallyEq, ae_map_iff (by fun_prop)]
851824
· simp
852-
· exact Kernel.measurableSet_eq κ η
825+
· classical
826+
exact Kernel.measurableSet_eq κ η
853827

854828
omit [Nonempty Ω'] in
855829
lemma condIndepFun_of_exists_condDistrib_prod_ae_eq_prodMkLeft

‎LeanBandits/ForMathlib/KernelSub.lean‎

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,4 +202,64 @@ lemma sub_apply [∀ η : Kernel α β, Decidable (IsSFiniteKernel η)] [IsFinit
202202
filter_upwards [Kernel.rnDeriv_eq_rnDeriv_measure (κ := κ) (η := η) (a := a)] with b hb
203203
simp [← hb]
204204

205+
omit [CountableOrCountablyGenerated α β] in
206+
lemma le_iff (κ η : Kernel α β) : κ ≤ η ↔ ∀ a, κ a ≤ η a := Iff.rfl
207+
208+
lemma sub_le_self [∀ η : Kernel α β, Decidable (IsSFiniteKernel η)] [IsFiniteKernel κ]
209+
[IsFiniteKernel η] :
210+
κ - η ≤ κ := by
211+
rw [le_iff]
212+
intro a
213+
rw [sub_apply]
214+
exact Measure.sub_le
215+
216+
instance [∀ η : Kernel α β, Decidable (IsSFiniteKernel η)]
217+
[IsFiniteKernel κ] [IsFiniteKernel η] : IsFiniteKernel (κ - η) :=
218+
isFiniteKernel_of_le sub_le_self
219+
220+
lemma sub_apply_eq_zero_iff_le [∀ η : Kernel α β, Decidable (IsSFiniteKernel η)]
221+
[IsFiniteKernel κ] [IsFiniteKernel η] (a : α) : (κ - η) a = 0 ↔ κ a ≤ η a := by
222+
simp_rw [sub_apply_eq_rnDeriv_add_singularPart,
223+
add_eq_zero_iff_of_nonneg (Measure.zero_le _) (Measure.zero_le _)]
224+
refine ⟨fun h ↦ ?_, fun h ↦ ?_⟩
225+
· rw [Kernel.withDensity_apply _ (by fun_prop), withDensity_eq_zero_iff (by fun_prop)] at h
226+
rw [singularPart_eq_zero_iff_absolutelyContinuous κ η a] at h
227+
rw [← Measure.rnDeriv_le_one_iff_le h.2]
228+
filter_upwards [h.1, rnDeriv_eq_rnDeriv_measure (κ := κ) (η := η) (a := a)] with b hb1 hb2
229+
rw [← hb2]
230+
simp only [Pi.sub_apply, Pi.one_apply, Pi.zero_apply] at hb1
231+
rwa [tsub_eq_zero_iff_le] at hb1
232+
· rw [(singularPart_eq_zero_iff_absolutelyContinuous κ η a).mpr
233+
(Measure.absolutelyContinuous_of_le h)]
234+
rw [Kernel.withDensity_apply _ (by fun_prop), withDensity_eq_zero_iff (by fun_prop)]
235+
simp only [and_true]
236+
suffices κ.rnDeriv η a ≤ᵐ[η a] 1 by
237+
filter_upwards [this] with b hb
238+
simpa [tsub_eq_zero_iff_le] using hb
239+
filter_upwards [Measure.rnDeriv_le_one_of_le h,
240+
rnDeriv_eq_rnDeriv_measure (κ := κ) (η := η) (a := a)] with b hb1 hb2
241+
rwa [hb2]
242+
243+
lemma sub_eq_zero_iff_le [∀ η : Kernel α β, Decidable (IsSFiniteKernel η)]
244+
[IsFiniteKernel κ] [IsFiniteKernel η] : κ - η = 0 ↔ κ ≤ η := by
245+
simp [Kernel.ext_iff, le_iff, sub_apply_eq_zero_iff_le]
246+
247+
lemma measurableSet_eq_zero (κ : Kernel α β) [IsFiniteKernel κ] :
248+
MeasurableSet {a | κ a = 0} := by
249+
have h_sing : {a | κ a = 0} = {a | κ a ⟂ₘ κ a} := by ext; simp
250+
rw [h_sing]
251+
exact measurableSet_mutuallySingular κ κ
252+
253+
lemma measurableSet_eq [∀ η : Kernel α β, Decidable (IsSFiniteKernel η)]
254+
(κ η : Kernel α β) [IsFiniteKernel κ] [IsFiniteKernel η] :
255+
MeasurableSet {a | κ a = η a} := by
256+
have h_sub : {a | κ a = η a} = {a | (κ - η) a = 0} ∩ {a | (η - κ) a = 0} := by
257+
ext1 a
258+
simp only [Set.mem_setOf_eq, Set.mem_inter_iff, sub_apply_eq_zero_iff_le]
259+
exact ⟨fun h ↦ by simp [h], fun h ↦ le_antisymm h.1 h.2⟩
260+
rw [h_sub]
261+
refine MeasurableSet.inter ?_ ?_
262+
· exact measurableSet_eq_zero _
263+
· exact measurableSet_eq_zero _
264+
205265
end ProbabilityTheory.Kernel

0 commit comments

Comments
 (0)