|
| 1 | +/- |
| 2 | +Copyright (c) 2025 Lua Viana Reis. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Lua Viana Reis |
| 5 | +-/ |
| 6 | +module |
| 7 | + |
| 8 | +import Mathlib.Analysis.Oscillation |
| 9 | +import Mathlib.Dynamics.BirkhoffSum.Maximal |
| 10 | +import Mathlib.Dynamics.BirkhoffSum.NormedSpace |
| 11 | +import Mathlib.Analysis.InnerProductSpace.MeanErgodic |
| 12 | + |
| 13 | +open MeasureTheory Measure MeasurableSpace Filter Topology Module |
| 14 | +open scoped NNReal ENNReal |
| 15 | + |
| 16 | +variable {α R M : Type*} {f : α → α} {g : α → M} {n : ℕ} [RCLike R] |
| 17 | + [MeasurableSpace α] (μ : Measure α) (hf : MeasurePreserving f μ μ) |
| 18 | + [NormedAddCommGroup M] (hg : Integrable g μ) [IsFiniteMeasure μ] [NormedSpace R M] |
| 19 | + |
| 20 | +variable {μ} (R M) in |
| 21 | +abbrev koopman (p) : End R (Lp M p μ) := Lp.compMeasurePreservingₗ R f hf |
| 22 | + |
| 23 | +variable (R M f) in |
| 24 | +def convergenceSet := {g : Lp M 1 μ | ∀ᵐ x ∂μ, oscillation (birkhoffAverage R f g · x) atTop = 0} |
| 25 | + |
| 26 | +lemma mem_convergenceSet_of_mem_coboundary {g : Lp M 1 μ} |
| 27 | + (hg : g ∈ End.coboundaries (koopman R M hf 1)) : g ∈ convergenceSet R M f μ := by |
| 28 | + rcases hg with ⟨h, hh⟩ |
| 29 | + simp at hh |
| 30 | + |
| 31 | + sorry |
| 32 | + |
| 33 | +lemma ENNReal.forall_pos_of_forall_mul {motive : ℝ≥0∞ → Prop} (k : ℝ≥0∞) |
| 34 | + (h : ∀ ε > 0, motive (k * ε)) (hk₀ : k ≠ 0 := by positivity) (hk : k ≠ ∞ := by finiteness) : |
| 35 | + ∀ ε > 0, motive ε := fun ε hε ↦ |
| 36 | + ENNReal.mul_div_cancel (a := k) (b := ε) hk₀ hk ▸ h (ε / k) (ENNReal.div_pos hε.ne_zero hk) |
| 37 | + |
| 38 | +omit [IsFiniteMeasure μ] in |
| 39 | +lemma foo {f : α → ℝ≥0∞} (h : ∀ ε > 0, ∀ᵐ x ∂μ, f x ≤ ε) : ∀ᵐ x ∂μ, f x ≤ 0 := by |
| 40 | + have H : ∀ᵐ x ∂μ, ∀ n : ℕ, f x ≤ (n : ℝ≥0∞)⁻¹ := |
| 41 | + ae_all_iff.mpr fun n ↦ h _ (ENNReal.inv_pos.mpr (by finiteness)) |
| 42 | + filter_upwards [H] with x hx |
| 43 | + refine le_of_forall_pos_le_add fun ε hε => ?_ |
| 44 | + obtain ⟨n, hn⟩ := ENNReal.exists_inv_nat_lt hε.ne_zero |
| 45 | + exact (hx n).trans (by simp [hn.le]) |
| 46 | + |
| 47 | +include hf in |
| 48 | +theorem closed_convergenceSet : IsClosed (convergenceSet R M f μ) := by |
| 49 | + refine isClosed_of_closure_subset (fun g hg ↦ ?_) |
| 50 | + rw [EMetric.mem_closure_iff] at hg |
| 51 | + simp only [convergenceSet, ← nonpos_iff_eq_zero, Set.mem_setOf_eq] |
| 52 | + apply foo |
| 53 | + refine ENNReal.forall_pos_of_forall_mul 2 fun δ hδ ↦ ?_ |
| 54 | + by_cases! hδ' : δ = ∞; · bound |
| 55 | + apply ae_iff.mpr <| nonpos_iff_eq_zero.mp _ |
| 56 | + push Not |
| 57 | + have (h : Lp M 1 μ) (hh : h ∈ convergenceSet R M f μ) : |
| 58 | + ∀ᵐ x ∂μ, 2 * δ < oscillation (birkhoffAverage R f g · x) atTop → |
| 59 | + δ < birkhoffAverageSup f (‖(⇑g - ⇑h) ·‖) x := by |
| 60 | + filter_upwards [hh] with x hosc hx |
| 61 | + have := hx.trans_le <| oscillation_le_add_sub (f₂ := (birkhoffAverage R f h · x)) .. |
| 62 | + rw [hosc] at this |
| 63 | + grw [oscillation_le_two_mul_iSup_enorm] at this |
| 64 | + simp only [Pi.sub_apply, zero_add, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true, |
| 65 | + ENNReal.ofNat_ne_top, ENNReal.mul_lt_mul_iff_right] at this |
| 66 | + change _ < ⨆ n, ‖(birkhoffAverage R f g - _) n x‖ₑ at this |
| 67 | + rw [← birkhoffAverage_sub] at this |
| 68 | + simp_rw [← EReal.coe_ennreal_lt_coe_ennreal_iff, EReal.coe_ennreal_iSup] at this |
| 69 | + exact this.trans_le (iSup_mono fun _ ↦ EReal.coe_le_coe norm_birkhoffAverage_le) |
| 70 | + refine le_of_forall_gt fun c hc ↦ ?_ |
| 71 | + rcases hg (δ * c) (by positivity) with ⟨h, hh, hh'⟩ |
| 72 | + apply measure_mono_ae (this h hh) |>.trans_lt |
| 73 | + |
| 74 | + apply iSup_distribution_birkhoffAverageSup_le_norm' μ hf (by fun_prop) δ |>.trans_lt |
| 75 | + rw [Integrable.toL1_sub g h (by fun_prop) (by fun_prop), ← edist_eq_enorm_sub, |
| 76 | + Integrable.toL1_coeFn, Integrable.toL1_coeFn] |
| 77 | + apply ENNReal.mul_lt_mul_right (ENNReal.inv_ne_zero.mpr hδ') (by finiteness) hh' |>.trans_le |
| 78 | + rw [ENNReal.inv_mul_cancel_left (by positivity) hδ'] |
0 commit comments