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

RS_prime.ioiIntegrable_inv_log_pow

PrimeNumberTheoremAnd.IEANTN.RosserSchoenfeld.RosserSchoenfeldPrime · PrimeNumberTheoremAnd/IEANTN/RosserSchoenfeld/RosserSchoenfeldPrime.lean:634 to 659

Mathematical statement

Exact Lean statement

theorem ioiIntegrable_inv_log_pow {n : ℕ} (hn : 1 < n) {x : ℝ} (hx : 1 < x) :
    IntegrableOn (fun t ↦ 1 / (t * Real.log t ^ n)) (Set.Ioi x) volume

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
theorem ioiIntegrable_inv_log_pow {n : } (hn : 1 < n) {x : } (hx : 1 < x) :    IntegrableOn (fun t  1 / (t * Real.log t ^ n)) (Set.Ioi x) volume := by  refine integrableOn_Ioi_of_intervalIntegral_norm_tendsto (log x ^ (1 - (n : )) / (n - 1)) x    (fun k => ?_) tendsto_natCast_atTop_atTop ?_  · simpa using intervalIntegrable_inv_log_pow 1 n hx k  · have : 0 < (n : ) - 1 := by linarith [(one_lt_cast (α := )).2 hn]    refine Tendsto.congr' (f₁ := fun i :  => (log i : ) ^ (1 - (n : )) / (1 - (n : )) -      (log x) ^ (1 - (n : )) / (1 - (n : ))) ?_ ?_    · have := tendsto_def.1 tendsto_natCast_atTop_atTop (Set.Ici x) (Ici_mem_atTop x)      filter_upwards [this] with i hi      refine (intervalIntegral.integral_eq_sub_of_hasDerivAt        (f := fun r => log r ^ (1 - (n : )) / (1 - (n : ))) (fun z hz => ?_) ?_).symm      · simp_all only [preimage_Ici, Set.mem_Ici, ceil_le, Set.uIcc_of_le, Set.mem_Icc]        have := Real.log_pos (by linarith)        rw [norm_of_nonneg <| one_div_nonneg.2 (mul_nonneg (by grind) (pow_nonneg this.le n))]        refine (((hasDerivAt_log (by grind)).rpow_const (by grind)).div_const _).congr_deriv ?_        have : 1 - (n : )  0 := by linarith        simp [field]      · apply IntervalIntegrable.norm        simpa using (intervalIntegrable_iff_integrableOn_Ioc_of_le hi).2          (intervalIntegrable_inv_log_pow 1 n hx i)    · suffices h : Tendsto (fun i :   Real.log i ^ (1 - (n : )) / (1 - n)) atTop (𝓝 0) from by        have : (log x ^ (1 - (n : )) / (n - 1)) = 0 - (log x ^ (1 - (n : )) / (1 - n)) := by grind        exact this ▸ h.sub_const (log x ^ (1 - (n : )) / (1 - n))      simpa using (((tendsto_rpow_neg_atTop this).comp tendsto_log_atTop).comp        tendsto_natCast_atTop_atTop).div_const (1 - (n : ))