Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 809e920

Browse files
committed
feat(dynamics/ergodic/ergodic): expand ergodic map API for finite measures (#17864)
1 parent d5ca915 commit 809e920

File tree

3 files changed

+88
-13
lines changed

3 files changed

+88
-13
lines changed

src/dynamics/ergodic/ergodic.lean

Lines changed: 62 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ preserving condition is relaxed to quasi measure preserving.
2929
-/
3030

3131
open set function filter measure_theory measure_theory.measure
32+
open_locale ennreal
3233

3334
variables {α : Type*} {m : measurable_space α} (f : α → α) {s : set α}
3435
include m
@@ -107,15 +108,6 @@ end
107108

108109
end measure_theory.measure_preserving
109110

110-
namespace ergodic
111-
112-
/-- An ergodic map is quasi ergodic. -/
113-
lemma quasi_ergodic (hf : ergodic f μ) : quasi_ergodic f μ :=
114-
{ .. hf.to_pre_ergodic,
115-
.. hf.to_measure_preserving.quasi_measure_preserving, }
116-
117-
end ergodic
118-
119111
namespace quasi_ergodic
120112

121113
/-- For a quasi ergodic map, sets that are almost invariant (rather than strictly invariant) are
@@ -131,3 +123,64 @@ begin
131123
end
132124

133125
end quasi_ergodic
126+
127+
namespace ergodic
128+
129+
/-- An ergodic map is quasi ergodic. -/
130+
lemma quasi_ergodic (hf : ergodic f μ) : quasi_ergodic f μ :=
131+
{ .. hf.to_pre_ergodic,
132+
.. hf.to_measure_preserving.quasi_measure_preserving, }
133+
134+
/-- See also `ergodic.ae_empty_or_univ_of_preimage_ae_le`. -/
135+
lemma ae_empty_or_univ_of_preimage_ae_le'
136+
(hf : ergodic f μ) (hs : measurable_set s) (hs' : f⁻¹' s ≤ᵐ[μ] s) (h_fin : μ s ≠ ∞) :
137+
s =ᵐ[μ] (∅ : set α) ∨ s =ᵐ[μ] univ :=
138+
begin
139+
refine hf.quasi_ergodic.ae_empty_or_univ' hs _,
140+
refine ae_eq_of_ae_subset_of_measure_ge hs' (hf.measure_preimage hs).symm.le _ h_fin,
141+
exact measurable_set_preimage hf.measurable hs,
142+
end
143+
144+
/-- See also `ergodic.ae_empty_or_univ_of_ae_le_preimage`. -/
145+
lemma ae_empty_or_univ_of_ae_le_preimage'
146+
(hf : ergodic f μ) (hs : measurable_set s) (hs' : s ≤ᵐ[μ] f⁻¹' s) (h_fin : μ s ≠ ∞) :
147+
s =ᵐ[μ] (∅ : set α) ∨ s =ᵐ[μ] univ :=
148+
begin
149+
replace h_fin : μ (f⁻¹' s) ≠ ∞, { rwa hf.measure_preimage hs, },
150+
refine hf.quasi_ergodic.ae_empty_or_univ' hs _,
151+
exact (ae_eq_of_ae_subset_of_measure_ge hs' (hf.measure_preimage hs).le hs h_fin).symm,
152+
end
153+
154+
/-- See also `ergodic.ae_empty_or_univ_of_image_ae_le`. -/
155+
lemma ae_empty_or_univ_of_image_ae_le'
156+
(hf : ergodic f μ) (hs : measurable_set s) (hs' : f '' s ≤ᵐ[μ] s) (h_fin : μ s ≠ ∞) :
157+
s =ᵐ[μ] (∅ : set α) ∨ s =ᵐ[μ] univ :=
158+
begin
159+
replace hs' : s ≤ᵐ[μ] f ⁻¹' s :=
160+
(has_subset.subset.eventually_le (subset_preimage_image f s)).trans
161+
(hf.quasi_measure_preserving.preimage_mono_ae hs'),
162+
exact ae_empty_or_univ_of_ae_le_preimage' hf hs hs' h_fin,
163+
end
164+
165+
section is_finite_measure
166+
167+
variables [is_finite_measure μ]
168+
169+
lemma ae_empty_or_univ_of_preimage_ae_le
170+
(hf : ergodic f μ) (hs : measurable_set s) (hs' : f⁻¹' s ≤ᵐ[μ] s) :
171+
s =ᵐ[μ] (∅ : set α) ∨ s =ᵐ[μ] univ :=
172+
ae_empty_or_univ_of_preimage_ae_le' hf hs hs' $ measure_ne_top μ s
173+
174+
lemma ae_empty_or_univ_of_ae_le_preimage
175+
(hf : ergodic f μ) (hs : measurable_set s) (hs' : s ≤ᵐ[μ] f⁻¹' s) :
176+
s =ᵐ[μ] (∅ : set α) ∨ s =ᵐ[μ] univ :=
177+
ae_empty_or_univ_of_ae_le_preimage' hf hs hs' $ measure_ne_top μ s
178+
179+
lemma ae_empty_or_univ_of_image_ae_le
180+
(hf : ergodic f μ) (hs : measurable_set s) (hs' : f '' s ≤ᵐ[μ] s) :
181+
s =ᵐ[μ] (∅ : set α) ∨ s =ᵐ[μ] univ :=
182+
ae_empty_or_univ_of_image_ae_le' hf hs hs' $ measure_ne_top μ s
183+
184+
end is_finite_measure
185+
186+
end ergodic

src/measure_theory/measure/measure_space.lean

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -267,12 +267,30 @@ lemma measure_eq_measure_larger_of_between_null_diff {s₁ s₂ s₃ : set α}
267267
lemma measure_compl (h₁ : measurable_set s) (h_fin : μ s ≠ ∞) : μ (sᶜ) = μ univ - μ s :=
268268
by { rw compl_eq_univ_diff, exact measure_diff (subset_univ s) h₁ h_fin }
269269

270+
@[simp] lemma union_ae_eq_left_iff_ae_subset : (s ∪ t : set α) =ᵐ[μ] s ↔ t ≤ᵐ[μ] s :=
271+
begin
272+
rw ae_le_set,
273+
refine ⟨λ h, by simpa only [union_diff_left] using (ae_eq_set.mp h).1,
274+
λ h, eventually_le_antisymm_iff.mpr
275+
by rwa [ae_le_set, union_diff_left], has_subset.subset.eventually_le $ subset_union_left s t⟩⟩,
276+
end
277+
278+
@[simp] lemma union_ae_eq_right_iff_ae_subset : (s ∪ t : set α) =ᵐ[μ] t ↔ s ≤ᵐ[μ] t :=
279+
by rw [union_comm, union_ae_eq_left_iff_ae_subset]
280+
281+
lemma ae_eq_of_ae_subset_of_measure_ge (h₁ : s ≤ᵐ[μ] t) (h₂ : μ t ≤ μ s) (hsm : measurable_set s)
282+
(ht : μ t ≠ ∞) : s =ᵐ[μ] t :=
283+
begin
284+
refine eventually_le_antisymm_iff.mpr ⟨h₁, ae_le_set.mpr _⟩,
285+
replace h₂ : μ t = μ s, from h₂.antisymm (measure_mono_ae h₁),
286+
replace ht : μ s ≠ ∞, from h₂ ▸ ht,
287+
rw [measure_diff' t hsm ht, measure_congr (union_ae_eq_left_iff_ae_subset.mpr h₁), h₂, tsub_self],
288+
end
289+
270290
/-- If `s ⊆ t`, `μ t ≤ μ s`, `μ t ≠ ∞`, and `s` is measurable, then `s =ᵐ[μ] t`. -/
271291
lemma ae_eq_of_subset_of_measure_ge (h₁ : s ⊆ t) (h₂ : μ t ≤ μ s) (hsm : measurable_set s)
272292
(ht : μ t ≠ ∞) : s =ᵐ[μ] t :=
273-
have A : μ t = μ s, from h₂.antisymm (measure_mono h₁),
274-
have B : μ s ≠ ∞, from A ▸ ht,
275-
h₁.eventually_le.antisymm $ ae_le_set.2 $ by rw [measure_diff h₁ hsm B, A, tsub_self]
293+
ae_eq_of_ae_subset_of_measure_ge (has_subset.subset.eventually_le h₁) h₂ hsm ht
276294

277295
lemma measure_Union_congr_of_subset [countable β] {s : β → set α} {t : β → set α}
278296
(hsub : ∀ b, s b ⊆ t b) (h_le : ∀ b, μ (t b) ≤ μ (s b)) :

src/measure_theory/measure/measure_space_def.lean

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,11 @@ lemma ae_le_set_inter {s' t' : set α} (h : s ≤ᵐ[μ] t) (h' : s' ≤ᵐ[μ]
367367
(s ∩ s' : set α) ≤ᵐ[μ] (t ∩ t' : set α) :=
368368
h.inter h'
369369

370-
@[simp] lemma union_ae_eq_right : (s ∪ t : set α) =ᵐ[μ] t ↔ μ (s \ t) = 0 :=
370+
lemma ae_le_set_union {s' t' : set α} (h : s ≤ᵐ[μ] t) (h' : s' ≤ᵐ[μ] t') :
371+
(s ∪ s' : set α) ≤ᵐ[μ] (t ∪ t' : set α) :=
372+
h.union h'
373+
374+
lemma union_ae_eq_right : (s ∪ t : set α) =ᵐ[μ] t ↔ μ (s \ t) = 0 :=
371375
by simp [eventually_le_antisymm_iff, ae_le_set, union_diff_right,
372376
diff_eq_empty.2 (set.subset_union_right _ _)]
373377

0 commit comments

Comments
 (0)