Skip to main content
fpvandoorn/carleson
Source indexedlemma · leanprover/lean4:v4.32.0

leftContinuous_integral_annulus

Carleson.MetricCarleson.Basic · Carleson/MetricCarleson/Basic.lean:185 to 263

Source documentation

Let f be integrable over an annulus with fixed radii R₁, R₂. Then fun R ↦ ∫ y in oo x R₁ R, f y is left-continuous at R₂.

Exact Lean statement

lemma leftContinuous_integral_annulus (iof : IntegrableOn f (oo x R₁ R₂)) :
    ContinuousWithinAt (fun R ↦ ∫ y in oo x R₁ R, f y) (Iic R₂) R₂

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma leftContinuous_integral_annulus (iof : IntegrableOn f (oo x R₁ R₂)) :    ContinuousWithinAt (fun R  ∫ y in oo x R₁ R, f y) (Iic R₂) R₂ := by  -- If `R₁ ≥ R₂` the proof is easy  rcases le_or_gt R₂ R₁ with hR₂ | hR₂  · simp_rw [continuousWithinAt_iff, mem_Iic]; intro ε εpos    use 1, zero_lt_one; intro R' hR' _    rw [oo_eq_empty (hR'.trans hR₂), oo_eq_empty hR₂, setIntegral_empty, dist_self]    exact εpos  -- Reduce to showing that the volumes of annuli `co x R R₂` can be arbitrarily small  suffices Tendsto (volume.restrict (oo x R₁ R₂) ∘ (co x · R₂)) (𝓝[] R₂) (nhds 0) by    simp_rw [continuousWithinAt_iff, mem_Iic]; intro ε εpos    have key := iof.tendsto_setIntegral_nhds_zero this    simp_rw [ integral_indicator measurableSet_co,  integral_indicator measurableSet_oo,      indicator_indicator, tendsto_nhdsWithin_nhds, mem_Iic] at key    specialize key _ εpos; obtain δ, δpos, nb := key    use min δ (R₂ - R₁), lt_min_iff.mpr δpos, sub_pos.mpr hR₂; intro y ly dy    rw [lt_min_iff] at dy; specialize nb ly dy.1    rw [dist_eq_norm', Real.norm_of_nonneg (sub_nonneg.mpr ly), sub_lt_sub_iff_left] at dy    rw [dist_eq_norm, sub_zero, inter_eq_self_of_subset_right (co_subset_oo dy.2 le_rfl),      integral_indicator measurableSet_co] at nb    rw [dist_eq_norm']; convert nb    rw [sub_eq_iff_eq_add',  setIntegral_union _ measurableSet_co]; rotate_left    · exact iof.mono_set (by gcongr)    · exact iof.mono_set (co_subset_oo dy.2 le_rfl)    · simp_rw [disjoint_left, co, oo, mem_setOf, mem_Ico, mem_Ioo, not_and_or, not_le]      exact fun z mz  .inl mz.2    rw [oo_union_co dy.2 ly]  -- Obtain a strictly monotone sequence of numbers greater than `R₁` and converging to `R₂`.  -- By monotone convergence we reduce to showing that the volumes of annuli `co x R R₂`  -- along this sequence can be arbitrarily small  obtain u, smu, mu, ttu := exists_seq_strictMono_tendsto' hR₂  suffices Tendsto (fun n  volume (co x (u n) R₂)) atTop (nhds 0) by    rw [ENNReal.tendsto_nhds_zero]; intro ε εpos    rw [eventually_nhdsWithin_iff, Metric.eventually_nhds_iff]    rw [ENNReal.tendsto_atTop_zero] at this    specialize this _ εpos; obtain n, hn := this; specialize hn _ le_rfl    use R₂ - u n, sub_pos.mpr (mu n).2; intro y dy ly    rw [dist_eq_norm', Real.norm_of_nonneg (sub_nonneg.mpr ly), sub_lt_sub_iff_left] at dy    rw [Function.comp_apply, Measure.restrict_apply measurableSet_co,      inter_eq_self_of_subset_left (co_subset_oo ((mu n).1.trans dy) le_rfl)]    exact (measure_mono (by gcongr)).trans hn  -- Split the annulus along the `u n`...  let s (n : ) := co x (u n) (u (n + 1))  have us (k : ) : ⋃ n, s (k + n) = co x (u k) R₂ := by    ext y; simp_rw [mem_iUnion, s, co, mem_setOf, mem_Ico]; constructor <;> intro h    · obtain n, hn₁, hn₂ := h      exact (smu.monotone (Nat.le_add_right ..)).trans hn₁, hn₂.trans (mu (k + n + 1)).2    · let T : Set  := {n | dist x y < u (k + n)}      have neT : T.Nonempty := by        rw [Metric.tendsto_atTop] at ttu        specialize ttu (R₂ - dist x y) (by linarith only [h.2]); obtain N, hN := ttu        specialize hN (k + N) (Nat.le_add_left ..)        rw [dist_eq_norm', Real.norm_of_nonneg (by linarith only [(mu (k + N)).2]),          sub_lt_sub_iff_left] at hN; use N, hN      have wfT : T.IsWF := IsWF.of_wellFoundedLT T      use wfT.min neT - 1      have minT_mem := wfT.min_mem neT; simp_rw [T, mem_setOf] at minT_mem      have minT_pos : wfT.min neT  0 := by        by_contra! h'; rw [h'] at minT_mem; exact absurd h.1 (not_le.mpr minT_mem)      nth_rw 2 [ Nat.add_sub_assoc (by lia)]; rw [Nat.sub_add_cancel (by lia),  not_lt]      refine ?_, minT_mem; change wfT.min neT - 1  T; contrapose! minT_pos      replace minT_pos := wfT.min_le neT minT_pos; lia  have ds (k : ) : Pairwise (Function.onFun Disjoint fun n  s (k + n)) := fun i j hn  by    change Disjoint (s (k + i)) (s (k + j))    wlog hl : i < j generalizing i j; · exact (this j i hn.symm (by lia)).symm    simp_rw [s, disjoint_left, co, mem_setOf, mem_Ico]; intro y my    rw [not_and_or, not_le]; left    exact my.2.trans_le (smu.monotone (show k + i + 1  k + j by lia))  -- ...and appeal to `ENNReal.tendsto_sum_nat_add`  conv =>    enter [1, n]; rw [ us, measure_iUnion (ds n) (fun _  measurableSet_co)]    enter [1, k]; rw [add_comm]  specialize us 0; specialize ds 0; simp_rw [zero_add] at us ds  apply tendsto_sum_nat_add fun n  volume (s n)  rw [ measure_iUnion ds (fun _  measurableSet_co), us,  lt_top_iff_ne_top]  calc    _  volume (ball x R₂) := by      refine measure_mono fun y my  ?_; rw [co_eq] at my; exact my.1    _ < _ := measure_ball_lt_top