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

Ramanujan.a_mono

PrimeNumberTheoremAnd.IEANTN.Ramanujan.Ramanujan · PrimeNumberTheoremAnd/IEANTN/Ramanujan/Ramanujan.lean:931 to 973

Mathematical statement

Exact Lean statement

@[blueprint
  "a-mono"
  (title := "Monotonicity of a(x)")
  (statement := /-- The function $a(x)$ is nonincreasing for $x \geq x_a$. -/)
  (proof := /-- Follows from Lemma \ref{admissible-bound-monotone}. -/)
  (latexEnv := "lemma")
  (discussion := 995)]
theorem a_mono : AntitoneOn a (Set.Ici xₐ)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
@[blueprint  "a-mono"  (title := "Monotonicity of a(x)")  (statement := /-- The function $a(x)$ is nonincreasing for $x \geq x_a$. -/)  (proof := /-- Follows from Lemma \ref{admissible-bound-monotone}. -/)  (latexEnv := "lemma")  (discussion := 995)]theorem a_mono : AntitoneOn a (Set.Ici xₐ) := by  intro x hx y hy hxy  simp only [Set.mem_Ici] at hx hy  have hxa3 : xₐ  exp 3000 := by    unfold xₐ    exact exp_le_exp.mpr (by norm_num)  have hx3 := le_trans hxa3 hx; have hy3 := le_trans hxa3 hy  have neg :  z  exp 3000,  lo hi : , hi  exp 3000  ¬(z  Set.Ico lo hi) :=    fun z hz _ _ hhi h  absurd (Set.mem_Ico.mp h).2 (not_lt.mpr (le_trans hhi hz))  have h599 : (599 : )  exp 3000 := by linarith [add_one_le_exp (3000 : )]  have h58 := exp_le_exp.mpr (show (58 : )  3000 by norm_num)  have h1169 := exp_le_exp.mpr (show (1169 : )  3000 by norm_num)  have h2000 := exp_le_exp.mpr (show (2000 : )  3000 by norm_num)  have ha_eq :  z  exp 3000, a z = admissible_bound (379.7 * 5.573412 ^ 5) 6.52 1.89 5.573412 z := by    intro z hz    have hlog : 0 < log z := log_pos (by linarith [add_one_le_exp (3000 : )])    have hdiv : 0 < log z / 5.573412 := by positivity    unfold a admissible_bound    simp only [neg z hz _ _ h599, neg z hz _ _ h58, neg z hz _ _ h1169,      neg z hz _ _ h2000, neg z hz _ _ le_rfl, ite_false, sqrt_eq_rpow]    have h_pow : (log z) ^ (5 : ) = 5.573412 ^ (5 : ) * (log z / 5.573412) ^ (5 : ) := by      rw [show log z = 5.573412 * (log z / 5.573412) from by field_simp]; ring    have h_rpow : (log z / 5.573412) ^ (5 : ) * (log z / 5.573412) ^ (1.52 : ) =        (log z / 5.573412) ^ (6.52 : ) := by      rw [ rpow_natCast (log z / 5.573412) 5,  rpow_add hdiv]; push_cast; norm_num    rw [h_pow]    conv_lhs =>      rw [show  (a b c d e : ), a * b * (c * d * e) = c * a * (b * d) * e from by intros; ring]    rw [h_rpow]  change a y  a x  rw [ha_eq x hx3, ha_eq y hy3]  exact admissible_bound.mono _ _ _ _ (by positivity) (by positivity) (by positivity) (by positivity)    (Set.mem_Ici.mpr (le_trans (show exp (5.573412 * (2 * 6.52 / 1.89) ^ 2)  xₐ from by      unfold xₐ; exact exp_le_exp.mpr (by norm_num)) hx))    (Set.mem_Ici.mpr (le_trans (show exp (5.573412 * (2 * 6.52 / 1.89) ^ 2)  xₐ from by      unfold xₐ; exact exp_le_exp.mpr (by norm_num)) hy)) hxy