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

Hilbert_kernel_regularity

Carleson.Classical.HilbertKernel · Carleson/Classical/HilbertKernel.lean:208 to 315

Mathematical statement

Exact Lean statement

lemma Hilbert_kernel_regularity {x y y' : ℝ} :
    2 * |y - y'| ≤ |x - y| → ‖K x y - K x y'‖ ≤ 2 ^ 8 * (1 / |x - y|) * (|y - y'| / |x - y|)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma Hilbert_kernel_regularity {x y y' : } :    2 * |y - y'|  |x - y|  ‖K x y - K x y'‖  2 ^ 8 * (1 / |x - y|) * (|y - y'| / |x - y|)  := by  rw [K, K]  wlog x_eq_zero : x = 0 generalizing x y y'  · intro h    set x_ := (0 : ) with x_def    set y_ := y - x with y_def    set y'_ := y' - x with y'_def    have h_ : 2 * |y_ - y'_|  |x_ - y_| := by simpa [x_def, y_def, y'_def]    have := this x_def h_    rw [x_def, y_def, y'_def] at this    simpa  rw [x_eq_zero]  intro h  simp only [zero_sub, abs_neg] at h  simp only [zero_sub, abs_neg]  wlog! yy'nonneg : 0  y  0  y' generalizing y y'  · by_cases! yge0 : 0  y    · exfalso      rw [_root_.abs_of_nonneg yge0, _root_.abs_of_nonneg] at h <;> linarith [yy'nonneg yge0]    by_cases! y'ge0 : 0  y'    · exfalso      rw [abs_of_neg yge0, abs_of_neg] at h <;> linarith    /- This is the only interesting case. -/    set! y_ := -y with y_def    set! y'_ := -y' with y'_def    have h_ : 2 * |y_ - y'_|  |y_| := by      rw [y_def, y'_def,  abs_neg]      simpa [neg_add_eq_sub]    have y_y'_nonneg : 0  y_  0  y'_ := by constructor <;> linarith    have := this h_ y_y'_nonneg    rw [y_def, y'_def] at this    simp only [neg_neg, abs_neg, sub_neg_eq_add, neg_add_eq_sub] at this    rw [ RCLike.norm_conj, map_sub,  k_of_neg_eq_conj_k,  k_of_neg_eq_conj_k,       abs_neg (y' - y)] at this    simpa  /-"Wlog" 0 < y-/  by_cases! ypos : y  0  · have y_eq_zero : y = 0 := le_antisymm ypos yy'nonneg.1    have y'_eq_zero : y' = 0 := by      simp [y_eq_zero, _root_.abs_of_nonneg yy'nonneg.2] at h      linarith    simp [y_eq_zero, y'_eq_zero]  /- Beginning of the main proof -/  have y2ley' : y / 2  y' := by    rw [div_le_iff₀ two_pos]    calc y      _ = 2 * (y - y') - y + 2 * y' := by ring      _  2 * |y - y'| - y + 2 * y' := by gcongr; exact le_abs_self _      _  y - y + 2 * y' := by        gcongr        rw [abs_eq_self.mpr yy'nonneg.1] at h        exact h      _ = y' * 2 := by ring  /- Distinguish four cases -/  rcases le_or_gt y 1, le_or_gt y' 1 with hy | hy, hy' | hy'  · apply le_trans (Hilbert_kernel_regularity_main_part yy'nonneg ypos y2ley' hy hy')    gcongr <;> norm_num  · rw [@k_of_one_le_abs (-y')]    · calc ‖k (-y) - 0        _ = ‖k (-y) - k (-1)‖ := by          congr          apply (k_of_one_le_abs _).symm          simp        _  2 ^ 6 * (1 / |y|) * (|y - 1| / |y|) := by          apply Hilbert_kernel_regularity_main_part          constructor          all_goals linarith        _  2 ^ 6 * (1 / |y|) * (|y - y'| / |y|) := by          gcongr 2 ^ 6 * (1 / |y|) * (?_ / |y|)          rw [abs_sub_comm, _root_.abs_of_nonneg, abs_sub_comm, _root_.abs_of_nonneg] <;> linarith        _  2 ^ 8 * (1 / |y|) * (|y - y'| / |y|) := by          gcongr <;> norm_num    · rw [abs_neg, _root_.abs_of_nonneg] <;> linarith  · rw [@k_of_one_le_abs (-y)]    · calc0 - k (-y')‖        _ = ‖k (-1) - k (-y')‖ := by          congr          apply (k_of_one_le_abs _).symm          simp only [abs_neg, abs_one, le_refl]        _ = ‖k (-y') - k (-1)‖ := by rw [norm_sub_rev]        _  2 ^ 6 * (1 / |y'|) * (|y' - 1| / |y'|) := by          apply Hilbert_kernel_regularity_main_part          constructor          all_goals linarith        _ = 2 ^ 6 * (1 / y') * ((1 - y') / y') := by          congr          · simp [_root_.abs_of_nonneg, yy'nonneg.2]          · rw [abs_of_nonpos, neg_sub]            linarith          · simp [_root_.abs_of_nonneg, yy'nonneg.2]        _  2 ^ 6 * (1 / (y / 2)) * ((1 - y') / (y / 2)) := by          gcongr          apply div_nonneg <;> linarith        _ = (2 ^ 6 * 2 * 2) * (1 / y) * ((1 - y') / y) := by          ring        _  (2 ^ 6 * 2 * 2) * (1 / |y|) * (|y - y'| / |y|) := by          gcongr          on_goal 2 => rw [_root_.abs_of_nonneg] <;> linarith          all_goals rw [_root_.abs_of_nonneg yy'nonneg.1]        _  2 ^ 8 * (1 / |y|) * (|y - y'| / |y|) := by norm_num    · rw [abs_neg, _root_.abs_of_nonneg] <;> linarith  · calc ‖k (-y) - k (-y')‖      _ = 0 := by        rw [norm_sub_eq_zero_iff, k_of_one_le_abs,          k_of_one_le_abs] <;> (rw [abs_neg, _root_.abs_of_nonneg] <;> linarith)      _  2 ^ 8 * (1 / |y|) * (|y - y'| / |y|) := mul_nonneg (mul_nonneg (by norm_num) (by simp))        (mul_nonneg (by norm_num) (by simp))