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

close_smooth_approx_periodic_Lp

Carleson.Classical.Approximation · Carleson/Classical/Approximation.lean:41 to 103

Mathematical statement

Exact Lean statement

lemma close_smooth_approx_periodic_Lp {T : ℝ} [hT : Fact (0 < T)] {f : ℝ → ℂ}
  {p : ENNReal} (hp : 1 ≤ p) (hp' : p ≠ ⊤) (hf : MemLp f p (volume.restrict (Set.Ioc 0 T)))
  {ε : NNReal} (εpos : 0 < ε) :
    ∃ (f₀ : ℝ → ℂ), ContDiff ℝ ∞ f₀ ∧ f₀.Periodic T ∧
      eLpNorm (f - f₀) p (volume.restrict (Set.Ioc 0 T)) ≤ ε

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma close_smooth_approx_periodic_Lp {T : } [hT : Fact (0 < T)] {f :   ℂ}  {p : ENNReal} (hp : 1  p) (hp' : p  ⊤) (hf : MemLp f p (volume.restrict (Set.Ioc 0 T)))  {ε : NNReal} (εpos : 0 < ε) :     (f₀ :   ℂ), ContDiff  ∞ f₀  f₀.Periodic T       eLpNorm (f - f₀) p (volume.restrict (Set.Ioc 0 T))  ε := by  set f' := AddCircle.liftIoc T 0 f  have hf' : MemLp f' p volume := by    rw [ zero_add T] at hf    exact hf.memLp_liftIoc  rcases hf'.exists_boundedContinuous_eLpNorm_sub_le:= ε / 2) hp' (by simp [εpos.ne'])    with g, hf'g, hg  set h := fun (x : )  g x  have periodic_h : h.Periodic T := by    unfold h    intro x    simp  have unicont_h : UniformContinuous h := by    apply periodic_h.uniformContinuous_of_continuous hT.out (Continuous.continuousOn _)    continuity  have meas_h : AEStronglyMeasurable h (volume.restrict (Set.Ioc 0 T)) :=    unicont_h.continuous.measurable.aestronglyMeasurable  set ε' :  := (T ^ p.toReal⁻¹)⁻¹ */ 2)  have ε'pos : 0 < ε' := by    have := hT.out    positivity  rcases close_smooth_approx_periodic unicont_h periodic_h ε'pos    with f₀, contdiff_f₀, periodic_f₀, hf₀  have meas_f₀ : AEStronglyMeasurable f₀ (volume.restrict (Set.Ioc 0 T)) :=    contdiff_f₀.continuous.measurable.aestronglyMeasurable  use f₀, contdiff_f₀, periodic_f₀  calc _    _  eLpNorm (f - h) p (volume.restrict (Set.Ioc 0 T))        + eLpNorm (h - f₀) p (volume.restrict (Set.Ioc 0 T)) := by      apply (eLpNorm_add_le (hf.1.sub meas_h) (meas_h.sub meas_f₀) hp).trans_eq'      simp    _  ε / 2 + ε / 2 := by      gcongr      · calc _          _ = eLpNorm (f' - ⇑g) p volume := by            nth_rw 1 [ zero_add T]            rw [eLpNorm_eq_eLpNorm_liftIoc (by rw [zero_add]; exact hf.1.sub meas_h)]            congr with x            unfold f' h            rw [AddCircle.liftIoc, AddCircle.liftIoc]            simp        exact hf'g      · apply (eLpNorm_le_of_ae_bound (C := ε') _).trans        · simp only [MeasurableSet.univ, Measure.restrict_apply, Set.univ_inter, volume_Ioc,          sub_zero]          unfold ε'          -- todo: potentially automatable ENNReal calculation          rw [ENNReal.ofReal_rpow_of_pos hT.out,             ENNReal.ofReal_mul (Real.rpow_nonneg hT.out.le _),  mul_assoc,            mul_inv_cancel₀, one_mul]          · norm_cast          · rw [Real.rpow_ne_zero hT.out.le]            · exact hT.out.ne'            · simp only [ne_eq, inv_eq_zero]              rw [ ne_eq, ENNReal.toReal_ne_zero]              use (by positivity)        filter_upwards        exact hf₀    _ = ε := by simp