Skip to main content
AlexKontorovich/PrimeNumberTheoremAnd
Source indexedtheorem · leanprover/lean4:v4.32.0

ZetaAppendix.lemma_IBP_bound_abs_antitone

PrimeNumberTheoremAnd.IEANTN.ZetaAppendix · PrimeNumberTheoremAnd/IEANTN/ZetaAppendix.lean:950 to 1025

Source documentation

Integration by parts bound for continuous functions with antitone absolute value. If |g| is antitone, ‖∫ g F'‖ ≤ sup ‖F‖ · 2 |g(a)|.

Exact Lean statement

theorem lemma_IBP_bound_abs_antitone {a b : ℝ} (hab : a < b) (g : ℝ → ℝ) (F : ℝ → ℂ)
    (hgcont : ContinuousOn g (Icc a b)) (hganti : AntitoneOn (|g ·|) (Icc a b))
    (hF : ContDiffOn ℝ 1 F (Icc a b)) :
    ‖∫ t in Icc a b, (g t : ℂ) * deriv F t‖ ≤ (⨆ t ∈ Icc a b, ‖F t‖) * (2 * |g a|)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
theorem lemma_IBP_bound_abs_antitone {a b : } (hab : a < b) (g :   ) (F :   ℂ)    (hgcont : ContinuousOn g (Icc a b)) (hganti : AntitoneOn (|g ·|) (Icc a b))    (hF : ContDiffOn  1 F (Icc a b)) :    ‖∫ t in Icc a b, (g t : ℂ) * deriv F t‖  (⨆ t  Icc a b, ‖F t‖) * (2 * |g a|) := by  have hsign : ( t  Icc a b, g t  0)  ( t  Icc a b, g t  0) := by    by_cases hsign :  a' b' : , a  a'  a' < b'  b'  b  g a' * g b' < 0    · obtain a', b', ha', hb', hab', hsign := hsign      obtain r, hr :  r  Icc a' b', g r = 0 := by        have hivt : ContinuousOn g (Icc a' b') := hgcont.mono (Icc_subset_Icc ha' hab')        have := hivt.image_Icc hb'.le        exact this.symm.subset (Set.mem_Icc.mpr by nlinarith [Set.mem_Icc.mp (this ▸          mem_image_of_mem g (Set.left_mem_Icc.mpr hb'.le)), Set.mem_Icc.mp (this ▸          mem_image_of_mem g (Set.right_mem_Icc.mpr hb'.le))], by nlinarith [mem_Icc.mp (this ▸          mem_image_of_mem g (Set.left_mem_Icc.mpr hb'.le)), mem_Icc.mp (this ▸          mem_image_of_mem g (Set.right_mem_Icc.mpr hb'.le))])      have := hganti by linarith [hr.1.1], by linarith [hr.1.2] by linarith [hr.1.1], by        linarith [hr.1.2] hr.1.2      simp_all    · contrapose! hsign      obtain ⟨⟨x, hx₁, hx₂, y, hy₁, hy₂⟩⟩ := hsign      norm_num at *      cases lt_or_gt_of_ne (show x  y by rintro rfl; linarith) with      | inl h => exact x, hx₁.1, y, by linarith, by linarith, by nlinarith      | inr h => exact y, hy₁.1, x, by linarith, by linarith, by nlinarith  cases hsign with  | inl hsign =>    have hbd₁ : ‖(∫ t in Icc a b, (g t : ℂ) * deriv F t) - (g b * F b - g a * F a)‖         (⨆ t  Icc a b, ‖F t‖) * (g a - g b) := by      have := @lemma_IBP_bound_monotone a b hab (fun t  -g t) F ?_ ?_ ?_ <;> norm_num at *      · convert this using 1 <;> norm_num [integral_neg]        · ring_nf; rw [ norm_neg]; ring_nf        · exact Or.inl <| by ring      · exact hgcont.neg      · intro t ht u hu htu; have := hganti ht hu htu; simp_all [abs_of_nonneg]      · assumption    have hbd₂ : ‖g b * F b - g a * F a‖  (⨆ t  Icc a b, ‖F t‖) * (g b + g a) := by      refine (norm_sub_le _ _).trans ?_      have hFle :  t  Icc a b, ‖F t‖  ⨆ t  Icc a b, ‖F t‖ := fun t ht  by        apply le_csSup        · obtain M, hM := IsCompact.exists_bound_of_continuousOn isCompact_Icc hF.continuousOn          exact max M 1, forall_mem_range.mpr fun t  by rw [ciSup_eq_ite]; aesop        · exact t, by simp_all      norm_num at *      rw [abs_of_nonneg (hsign b hab.le le_rfl), abs_of_nonneg (hsign a le_rfl hab.le)]      nlinarith [hFle b hab.le le_rfl, hFle a le_rfl hab.le, hsign b hab.le le_rfl, hsign a le_rfl hab.le]    have hbd₃ : ‖∫ t in Icc a b, (g t : ℂ) * deriv F t‖         (⨆ t  Icc a b, ‖F t‖) * (g a - g b) + (⨆ t  Icc a b, ‖F t‖) * (g b + g a) := by      have h := norm_add_le ((∫ t in Icc a b, (g t : ℂ) * deriv F t) -        (g b * F b - g a * F a)) (g b * F b - g a * F a)      simpa using h.trans (add_le_add hbd₁ hbd₂)    exact hbd₃.trans (by      rw [abs_of_nonneg (hsign a <| left_mem_Icc.mpr hab.le)]      nlinarith [show 0  ⨆ t  Icc a b, ‖F t‖ from iSup_nonneg fun _  iSup_nonneg fun _  norm_nonneg _])  | inr hsign =>    have hbd₁ : ‖(∫ t in Icc a b, (g t : ℂ) * deriv F t) - (g b * F b - g a * F a)‖         (⨆ t  Icc a b, ‖F t‖) * (g b - g a) := by      apply_rules [lemma_IBP_bound_monotone]      intro x hx y hy hxy; have := hganti hx hy hxy; simp_all [abs_of_nonpos]    have hbd₂ : ‖g b * F b - g a * F a‖  (⨆ t  Icc a b, ‖F t‖) * (|g b| + |g a|) := by      have hFle :  t  Icc a b, ‖F t‖  ⨆ t  Icc a b, ‖F t‖ := fun t ht  by        apply le_csSup        · obtain M, hM := IsCompact.exists_bound_of_continuousOn isCompact_Icc hF.continuousOn.norm          use max M 1          rintro x t, rfl; by_cases ht : t  Icc a b <;> simp_all        · exact t, by simp_all      refine (norm_sub_le ..).trans ?_      simp only [Set.mem_Icc, and_imp, norm_mul, norm_real, norm_eq_abs] at *      nlinarith [abs_nonneg (g b), abs_nonneg (g a),        hFle b (by linarith) (by linarith), hFle a (by linarith) (by linarith)]    have hbd₃ : ‖∫ t in Icc a b, (g t : ℂ) * deriv F t‖         (⨆ t  Icc a b, ‖F t‖) * (g b - g a) + (⨆ t  Icc a b, ‖F t‖) * (|g b| + |g a|) := by      have h := norm_add_le ((∫ t in Icc a b, (g t : ℂ) * deriv F t) - (g b * F b - g a * F a)) (g b * F b - g a * F a)      simpa using h.trans (add_le_add hbd₁ hbd₂)    convert hbd₃ using 1    rw [abs_of_nonpos (hsign b <| right_mem_Icc.mpr hab.le), abs_of_nonpos (hsign a <| left_mem_Icc.mpr hab.le)]    ring