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

dist_dirichletApprox_le

Carleson.Classical.HilbertStrongType · Carleson/Classical/HilbertStrongType.lean:647 to 686

Source documentation

Lemma 11.3.5, part 4.

The kernel dirichletApprox approximates well the kernel of the Hilbert transform, on [-π, π], up to an error which is uniformly bounded in L^1 (as it is bounded by a constant multiple of niceKernel).

Exact Lean statement

lemma dist_dirichletApprox_le
    {r : ℝ} (hr : r ∈ Ioo 0 1) {n : ℕ} (hn : n = ⌈r⁻¹⌉₊) {x : ℝ} (hx : x ∈ Icc (-π) π) :
    dist (dirichletApprox n x) ({y : ℝ | |y| ∈ Ico r 1}.indicator k x) ≤ 12 * niceKernel r x

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma dist_dirichletApprox_le    {r : } (hr : r  Ioo 0 1) {n : } (hn : n = ⌈r⁻¹⌉₊) {x : } (hx : x  Icc (-π) π) :    dist (dirichletApprox n x) ({y :  | |y|  Ico r 1}.indicator k x)  12 * niceKernel r x := by  have rpos : 0 < r := hr.1  have hn1 : n < r⁻¹ + 1 := by    rw [hn]    exact Nat.ceil_lt_add_one (by simpa using rpos.le)  have hn2 : n  2 * r⁻¹ := by    have : 1  r⁻¹ := (one_le_inv₀ hr.1).2 hr.2.le    apply hn1.le.trans (by linarith)  rcases lt_or_ge (|x|) r with h'x | h'x  · rw [indicator_of_notMem]; swap    · simp [h'x]    simp only [dist_zero_right]    apply norm_dirichletApprox_le.trans    rw [niceKernel_eq_inv' _ h'x.le]; swap    · simp only [hr.1, true_and]      linarith [Real.pi_gt_d2, hr.2]    linarith  have hexpx : exp (I * x)  1 := by    simp only [ne_eq, exp_I_mul_eq_one_iff_of_lt_of_lt x (by linarith [hx.1, Real.pi_pos])      (by linarith [hx.2, Real.pi_pos])]    intro h    simp only [h, abs_zero] at h'x    linarith  have hnzero : n  0 := by    intro h    simp only [h, eq_comm, Nat.ceil_eq_zero, inv_nonpos] at hn    linarith  rw [dirichletApprox_eq_add_dirichletApproxAux hexpx hnzero, dist_eq_norm, add_sub_right_comm]  apply (norm_add_le _ _).trans  have A : ‖(1 - exp (I * x))⁻¹ - {y | |y|  Ico r 1}.indicator k x‖  2 * niceKernel r x := by    apply norm_sub_indicator_k h'x _ rpos hr.2    simpa only [Real.norm_eq_abs, abs_le] using! hx  have B : ‖dirichletApproxAux n x‖  10 * niceKernel r x := by    apply norm_dirichletApproxAux_le hexpx h'x _ _ hr.1 hr.2    · simp [abs_le, hx.1, hx.2]    · rw [hn]      apply Nat.le_ceil  linarith