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

exists_rat_near_carlesonOperatorIntegrand'

Carleson.MetricCarleson.Basic · Carleson/MetricCarleson/Basic.lean:330 to 358

Source documentation

Given 0 < R₁ < R₂, move (R₁, R₂) to rational (q₁, q₂) where R₁ < q₁ < q₂ < R₂ and the norm of carlesonOperatorIntegrand changes by at most ε.

Exact Lean statement

lemma exists_rat_near_carlesonOperatorIntegrand'
    (mf : IntegrableOn f (Annulus.oo x R₁ R₂) volume) (hR₁ : 0 < R₁) (hR₂ : R₁ < R₂) {ε : ℝ} (εpos : 0 < ε) :
    ∃ q₁ q₂ : ℚ, R₁ < q₁ ∧ q₁ < q₂ ∧ q₂ < R₂ ∧
    dist (carlesonOperatorIntegrand K θ q₁ q₂ f x)
    (carlesonOperatorIntegrand K θ R₁ R₂ f x) < ε

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma exists_rat_near_carlesonOperatorIntegrand'    (mf : IntegrableOn f (Annulus.oo x R₁ R₂) volume) (hR₁ : 0 < R₁) (hR₂ : R₁ < R₂) {ε : } (εpos : 0 < ε) :     q₁ q₂ : , R₁ < q₁  q₁ < q₂  q₂ < R₂     dist (carlesonOperatorIntegrand K θ q₁ q₂ f x)    (carlesonOperatorIntegrand K θ R₁ R₂ f x) < ε := by  -- Shift `R₁` to a larger rational with error less than `ε / 2`  have rcon := @rightContinuous_carlesonOperatorIntegrand' _ _ _ _ _ θ R₁ R₂ _ x mf hR₁  rw [Metric.continuousWithinAt_iff] at rcon; specialize rcon _ (half_pos εpos)  obtain δ₁, δ₁pos, hq₁ := rcon  have lt₁ : R₁ < min (R₁ + δ₁) R₂ := by rw [lt_min_iff]; constructor <;> linarith  obtain q₁, lbq₁, ubq₁ := exists_rat_btwn lt₁  rw [lt_min_iff,  sub_lt_iff_lt_add'] at ubq₁; obtain ubq₁, lR₂ := ubq₁  have dq₁ : dist ↑q₁ R₁ < δ₁ := by rwa [Real.dist_eq, abs_of_nonneg (sub_nonneg.mpr lbq₁.le)]  specialize hq₁ lbq₁.le dq₁  -- Shift `R₂` to a smaller rational with error less than `ε / 2`  have q₁pos : (0 : ) < q₁ := hR₁.trans lbq₁  have lcon := leftContinuous_carlesonOperatorIntegrand' (θ := θ) (mf.mono_set (by gcongr)) q₁pos  rw [Metric.continuousWithinAt_iff] at lcon; specialize lcon _ (half_pos εpos)  obtain δ₂, δ₂pos, hq₂ := lcon  have lt₂ : max (R₂ - δ₂) q₁ < R₂ := by rw [max_lt_iff]; constructor <;> linarith  obtain q₂, lbq₂, ubq₂ := exists_rat_btwn lt₂  rw [max_lt_iff, sub_lt_comm] at lbq₂; obtain lbq₂, lq := lbq₂  have dq₂ : dist ↑q₂ R₂ < δ₂ := by    rwa [Real.dist_eq, abs_sub_comm, abs_of_nonneg (sub_nonneg.mpr ubq₂.le)]  specialize hq₂ ubq₂.le dq₂  -- The rest is just the triangle inequality  use q₁, q₂, lbq₁, Rat.cast_lt.mp lq, ubq₂  have final_bound := (dist_triangle ..).trans_lt (add_lt_add hq₂ hq₁)  rwa [add_halves] at final_bound