Skip to content

Commit fc86070

Browse files
committed
chore(Measure): add gcongr lemmas (#16379)
1 parent 28e7b45 commit fc86070

File tree

3 files changed

+24
-13
lines changed

3 files changed

+24
-13
lines changed

Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,6 +1012,9 @@ theorem fst_map_prod_mk {X : α → β} {Y : α → γ} {μ : Measure α}
10121012
(hY : Measurable Y) : (μ.map fun a => (X a, Y a)).fst = μ.map X :=
10131013
fst_map_prod_mk₀ hY.aemeasurable
10141014

1015+
@[gcongr]
1016+
theorem fst_mono {μ : Measure (α × β)} (h : ρ ≤ μ) : ρ.fst ≤ μ.fst := map_mono h measurable_fst
1017+
10151018
/-- Marginal measure on `β` obtained from a measure on `ρ` `α × β`, defined by `ρ.map Prod.snd`. -/
10161019
noncomputable def snd (ρ : Measure (α × β)) : Measure β :=
10171020
ρ.map Prod.snd
@@ -1056,6 +1059,9 @@ theorem snd_map_prod_mk {X : α → β} {Y : α → γ} {μ : Measure α} (hX :
10561059
(μ.map fun a => (X a, Y a)).snd = μ.map Y :=
10571060
snd_map_prod_mk₀ hX.aemeasurable
10581061

1062+
@[gcongr]
1063+
theorem snd_mono {μ : Measure (α × β)} (h : ρ ≤ μ) : ρ.snd ≤ μ.snd := map_mono h measurable_snd
1064+
10591065
@[simp] lemma fst_map_swap : (ρ.map Prod.swap).fst = ρ.snd := by
10601066
rw [Measure.fst, Measure.map_map measurable_fst measurable_swap]
10611067
rfl

Mathlib/MeasureTheory/Measure/Restrict.lean

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,21 @@ theorem restrict_mono' {_m0 : MeasurableSpace α} ⦃s s' : Set α⦄ ⦃μ ν :
7676
_ = ν.restrict s' t := (restrict_apply ht).symm
7777

7878
/-- Restriction of a measure to a subset is monotone both in set and in measure. -/
79-
@[mono]
79+
@[mono, gcongr]
8080
theorem restrict_mono {_m0 : MeasurableSpace α} ⦃s s' : Set α⦄ (hs : s ⊆ s') ⦃μ ν : Measure α⦄
8181
(hμν : μ ≤ ν) : μ.restrict s ≤ ν.restrict s' :=
8282
restrict_mono' (ae_of_all _ hs) hμν
8383

84+
@[gcongr]
85+
theorem restrict_mono_measure {_ : MeasurableSpace α} {μ ν : Measure α} (h : μ ≤ ν) (s : Set α) :
86+
μ.restrict s ≤ ν.restrict s :=
87+
restrict_mono subset_rfl h
88+
89+
@[gcongr]
90+
theorem restrict_mono_set {_ : MeasurableSpace α} (μ : Measure α) {s t : Set α} (h : s ⊆ t) :
91+
μ.restrict s ≤ μ.restrict t :=
92+
restrict_mono h le_rfl
93+
8494
theorem restrict_mono_ae (h : s ≤ᵐ[μ] t) : μ.restrict s ≤ μ.restrict t :=
8595
restrict_mono' h (le_refl μ)
8696

Mathlib/Probability/Kernel/Disintegration/CondCDF.lean

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,23 +50,18 @@ noncomputable def IicSnd (r : ℝ) : Measure α :=
5050

5151
theorem IicSnd_apply (r : ℝ) {s : Set α} (hs : MeasurableSet s) :
5252
ρ.IicSnd r s = ρ (s ×ˢ Iic r) := by
53-
rw [IicSnd, fst_apply hs,
54-
restrict_apply' (MeasurableSet.univ.prod (measurableSet_Iic : MeasurableSet (Iic r))), ←
55-
prod_univ, prod_inter_prod, inter_univ, univ_inter]
53+
rw [IicSnd, fst_apply hs, restrict_apply' (MeasurableSet.univ.prod measurableSet_Iic),
54+
univ_prod, Set.prod_eq]
5655

5756
theorem IicSnd_univ (r : ℝ) : ρ.IicSnd r univ = ρ (univ ×ˢ Iic r) :=
5857
IicSnd_apply ρ r MeasurableSet.univ
5958

59+
@[gcongr]
6060
theorem IicSnd_mono {r r' : ℝ} (h_le : r ≤ r') : ρ.IicSnd r ≤ ρ.IicSnd r' := by
61-
refine Measure.le_iff.2 fun s hs ↦ ?_
62-
simp_rw [IicSnd_apply ρ _ hs]
63-
refine measure_mono (prod_subset_prod_iff.mpr (Or.inl ⟨subset_rfl, Iic_subset_Iic.mpr ?_⟩))
64-
exact mod_cast h_le
65-
66-
theorem IicSnd_le_fst (r : ℝ) : ρ.IicSnd r ≤ ρ.fst := by
67-
refine Measure.le_iff.2 fun s hs ↦ ?_
68-
simp_rw [fst_apply hs, IicSnd_apply ρ r hs]
69-
exact measure_mono (prod_subset_preimage_fst _ _)
61+
unfold IicSnd; gcongr
62+
63+
theorem IicSnd_le_fst (r : ℝ) : ρ.IicSnd r ≤ ρ.fst :=
64+
fst_mono restrict_le_self
7065

7166
theorem IicSnd_ac_fst (r : ℝ) : ρ.IicSnd r ≪ ρ.fst :=
7267
Measure.absolutelyContinuous_of_le (IicSnd_le_fst ρ r)

0 commit comments

Comments
 (0)