← Session 29 — ii′-5e-v: circle bound (far-tail + series bounds)
thinking (8538 chars)
Clean compile in 27s. Now let me write 3a. I'll append §5 with the threshold lemma and the zero-free circle lemma.
Threshold lemma:
```lean
theorem gapCircle_threshold {k : ℕ} (hk : 4000 ≤ k) :
416 * C0hat (4 * (k : ℝ) + 9 / 2) ≤ 4 * (k : ℝ) + 5 / 2
```
Proof plan:
- hk4 : (16000:ℝ) ≤ 4k
- x := 4k + 9/2, so x ≥ 16004.5; x+2 = 4k+13/2 ≥ 16006.5
- L0 := log(16006.5): 9 ≤ L0 ≤ 10
- ≤ 10: 16006.5 ≤ e^10: e^10 > 2.718281828^10 = 22026.46 (norm_num) via exp_one_gt_d9
- ≥ 9: e^9 ≤ 16006.5: e^9 < 2.7182818286^9 = 8103.09 (norm_num) via exp_one_lt_d9
- logL0 := log L0 ≤ 2.4: L0 ≤ 10 ⟹ log L0 ≤ log 10; 10 ≤ e^{2.4}: e^{2.4} = e^2·e^{0.4} ≥ 7.389·1.4 = 10.34
- e^2 > 2.718281828^2 = 7.38905 (norm_num)
- e^{0.4} ≥ 1.4 (Real.add_one_le_exp: 1+0.4 ≤ e^{0.4})
- e^{2.4} = e^{2+0.4} = e^2·e^{0.4} (Real.exp_add)
- increments: L := log(x+2) = L0 + log((x+2)/16006.5), log((x+2)/16006.5) ≤ (x+2)/16006.5 − 1 = (x−16004.5)/16006.5 (Real.log_le_sub_one_of_pos)
- log L ≤ logL0 + (L − L0)/L0 ≤ 2.4 + (L−L0)/9 (log_le_sub_one_of_pos on L/L0, L0 ≥ 9)
- C0hat x = 0.433·L + 0.886·log L + 2.9 ≤ 0.433(10+Δ) + 0.886(2.4+Δ/9) + 2.9 where Δ := (x−16004.5)/16006.5 = (4k−16000)/16006.5
- 416·that ≤ 416·(9.3564 + 0.5315Δ) = 3892.26 + 221.1Δ
- Δ ≤ (4k−16000)/16000 = k/4000 − 1
- 3892.26 + 221.1(k/4000 − 1) = 3671.16 + 0.055275k ≤ 4k+2.5 for k ≥ 4000.
Numerical details to verify by hand before coding (banked gotcha: check norm_num digit bounds by hand!):
- 2.718281828^10: compute. e ≈ 2.718281828459. 2.718281828^2 = 7.389046158... let me compute: 2.718281828^2 = 2.718281828·2.718281828. 2.71828^2 = 7.38905... yes ≈ 7.3890461. ^4 = 7.3890461^2 = 54.598003... 7.3890461^2: 7.389^2 = 54.597... yes ≈ 54.59803. ^8 = 54.59803^2 = 2980.958... 54.598^2 = 2980.94... compute: 54.59803^2 = 2980.9580. ^10 = ^8·^2 = 2980.9580·7.3890461 = 22025.5... 2980.958·7.389 ≈ 22026.0. e^10 = 22026.4658. So 2.718281828^10 ≈ 22026.0 ≥ 16006.5 ✓ HUGE slack. norm_num should verify 2.718281828^10 ≥ 16006.5 easily — actually norm_num with decimal powers: (2.718281828 : ℝ)^10 — norm_num can do this but might be slow; alternatively chain: e^10 ≥ e^9·2.7 hmm. Simpler: use (2.7:ℝ)^10 ≤ e^10: 2.7^10 = ? 2.7^2 = 7.29, 2.7^4 = 53.1441, 2.7^8 = 2824.295..., 2.7^10 = 2.7^8·2.7^2 = 2824.295·7.29 = 20589.1 ≥ 16006.5 ✓. Even simpler for norm_num. And e > 2.7 via exp_one_gt_d9 (e > 2.718281828 > 2.7). pow_le_pow_left₀ (by norm_num : (0:ℝ) ≤ 2.7) (h : 2.7 ≤ e) 10.
- 2.7182818286^9 vs 16006.5 for the ≥ 9 bound: e^9 ≤ 2.7182818286^9 (e < 2.7182818286, exp_one_lt_d9). 2.7182818286^9 ≈ 8103.1 ≤ 16006.5 ✓. Via 2.72: e < 2.72: e^9 < 2.72^9: 2.72^2 = 7.3984, 2.72^4 = 54.7363, 2.72^8 = 2996.06, 2.72^9 = 2.72^8·2.72 = 8149.3 ≤ 16006.5 ✓. norm_num (2.72:ℝ)^9 ≤ 16006.5 — fine.
- e^2 > 2.7^2 = 7.29. e^{2.4} = e^2 · e^{0.4} ≥ 7.29·1.4 = 10.206 ≥ 10 ✓.
So log 10 ≤ 2.4: 10 ≤ 7.29·1.4 = 10.206 ≤ e^2·e^{0.4} = e^{2.4}.
Wait: e^{2.4} = e^{2+0.4} = e^2·e^{0.4} via Real.exp_add (2+0.4 = 2.4 ✓ ring_nf should handle).
- log(x+2) − log(16006.5) ≤ (x − 16004.5)/16006.5:
Real.log_le_sub_one_of_pos : 0 < x → log x ≤ x − 1. Apply to (x+2)/16006.5 > 0: log((x+2)/16006.5) ≤ (x+2)/16006.5 − 1. And log(x+2) = log(16006.5·((x+2)/16006.5)) = log 16006.5 + log((x+2)/16006.5) via Real.log_mul (16006.5 ≠ 0) ((x+2)/16006.5 ≠ 0).
- log L − log L0 ≤ (L − L0)/9: log(L/L0) ≤ L/L0 − 1 = (L−L0)/L0 ≤ (L−L0)/9 (L0 ≥ 9, L ≥ L0 > 0, L−L0 ≥ 0). L ≥ L0 since x+2 ≥ 16006.5 (log monotone). div_le_div_of_nonneg_left? (L−L0)/L0 ≤ (L−L0)/9 ⟸ L0 ≥ 9, L−L0 ≥ 0: div_le_div (le_refl) (h9 : 9 ≤ L0) (by norm_num : (0:ℝ) < 9) (by positivity? ...) hmm signature: div_le_div (hab : a ≤ b) (hac : c ≤ a)? Let me recall: div_le_div (h₁ : a ≤ b) (h₂ : c ≤ a) (hc : 0 < c) (hd : 0 < d)? The ordered-field div_le_div : a ≤ b → 0 < c ≤ d... For a/c ≤ a/d with a ≥ 0, 0 < c ≤ d: `div_le_div_of_nonneg_left (ha : 0 ≤ a) (hc : 0 < c) (hcd : c ≤ d) : a / d ≤ a / c`. Yes that's the one: gives a/d ≤ a/c. So (L−L0)/L0 ≤ (L−L0)/9 is `div_le_div_of_nonneg_left (hLnn : 0 ≤ L−L0) (by norm_num : (0:ℝ)<9) (h9 : 9 ≤ L0)`. ✓
Then C0hat x ≤ 0.433(10+Δ) + 0.886(2.4+Δ/9) + 2.9. Let me compute the constant: 0.433·10 = 4.33; 0.886·2.4 = 2.1264; +2.9 → 9.3564. Δ-coeff: 0.433 + 0.886/9 = 0.433 + 0.0984444 = 0.5314444.
416·9.3564 = 3892.2624. 416·0.5314444 = 221.08089.
Δ = (4k−16000)/16006.5. Bound: Δ ≤ (4k−16000)/16000 (16006.5 ≥ 16000, num ≥ 0).
221.08089·Δ ≤ 221.08089·(4k−16000)/16000 = 221.08089·4k/16000 − 221.08089 = 0.0552702k·... 221.08089·4/16000 = 884.32356/16000 = 0.055270.
So 416·C0hat ≤ 3892.2624 − 221.08089 + 0.055270k = 3671.1815 + 0.055270k.
Want ≤ 4k+2.5: ⟺ 3668.68 ≤ 3.94473k ⟸ 3.94473·4000 = 15778.9 ≥ 3668.68 ✓.
In Lean: final linarith with hk4 : (16000:ℝ) ≤ 4k and the chain. I'll structure the arithmetic as a `have hmain : 416 * C0hat x ≤ 3672 + 0.06 * (4*(k:ℝ))` hmm — cleaner: bound in steps with explicit rational numbers. Actually let me simplify constants to make linarith robust:
C0hat x ≤ 9.3564 + 0.532·Δ (round 0.5314444 UP to 0.532).
416·C0hat ≤ 416·9.3564 + 416·0.532·Δ = 3892.2624 + 221.312·Δ.
Δ ≤ (4k−16000)/16000: 221.312·(4k−16000)/16000 = 221.312·(4k)/16000 − 221.312 = 0.055328·(4k)... 221.312·4/16000 = 885.248/16000 = 0.055328. In terms of y := 4k: ≤ 3892.2624 − 221.312 + 0.055328y = 3670.9504 + 0.055328y.
Want 3670.9504 + 0.055328y ≤ y+2.5 ⟺ 3668.45 ≤ 0.944672y ⟸ y ≥ 16000: 0.944672·16000 = 15114.75 ≥ 3668.45 ✓✓ massive slack.
All linear — linarith handles given the pieces as haves. But linarith with decimal coefficients (0.055328 etc.) — fine, they're rationals.
Plan the haves:
```
have hk4 : (16000:ℝ) ≤ 4*(k:ℝ) := by exact_mod_cast hk (hk : 4000 ≤ k in ℕ; 4k ≥ 16000: push_cast; nlinarith? Actually: (4*(k:ℝ)) ≥ 4*4000 = 16000: mul_le_mul_of_nonneg_left (exact_mod_cast hk) (by norm_num))
have hx2 : (16006.5:ℝ) ≤ 4*(k:ℝ) + 13/2 := by linarith
-- exp facts
have he10 : (16006.5:ℝ) ≤ Real.exp 10: 16006.5 ≤ 2.7^10 ≤ e^10.
2.7^10: rw [show (10:ℝ) = 10] hmm Real.exp 10: exp(10) = (exp 1)^10? Real.exp_nat_mul : exp (n * x) = (exp x) ^ n with n : ℕ. exp (10*1) = (exp 1)^10. (10:ℝ) = ((10:ℕ):ℝ)·1... messy. Existing pattern from dyadic_tail_constant: h1 : Real.exp 5 = (Real.exp 1) ^ 5 := by rw [← Real.exp_nat_mul]; norm_num. So exp 10 = (exp 1)^10 via rw [← Real.exp_nat_mul]; norm_num. Then (exp 1)^10 ≥ 2.7^10 (pow_le_pow_left₀ (Real.exp_pos 1).le exp_one_gt_d9.le... exp_one_gt_d9 : 2.718281828 < e, so 2.7 ≤ e: linarith). 2.7^10 ≥ 16006.5 by norm_num. ✓
have hL0up : Real.log (16006.5) ≤ 10 := by rw [show (10:ℝ) = Real.log (Real.exp 10) by rw [Real.log_exp]]; exact Real.log_le_log (by norm_num) he10
have he9 : Real.exp 9 ≤ (16006.5:ℝ): e^9 ≤ 2.72^9 ≤ 16006.5: exp 9 = (exp 1)^9 ≤ 2.72^9 (pow_le_pow_left₀ (exp_pos).le exp_one_lt_d9.le hmm exp_one_lt_d9 : e < 2.7182818286, so e ≤ 2.72 ✓); 2.72^9 ≤ 16006.5 norm_num.
have hL0lo : (9:ℝ) ≤ Real.log 16006.5 := by rw [show (9:ℝ) = Real.log (Real.exp 9) by rw [Real.log_exp]]; exact Real.log_le_log (Real.exp_pos _) he9
have hlog10 : Real.log 10 ≤ (2.4:ℝ): 10 ≤ e^{2.4}: 10 ≤ 7.29·1.4 = 10.206 ≤ e^2·e^{0.4}:
he2 : (2.7:ℝ)^2 ≤ Real.exp 2: exp 2 = (exp 1)^2 ≥ 2.7^2.
he04 : (1.4:ℝ) ≤ Real.exp 0.4 := by have := Real.add_one_le_exp (0.4:ℝ); linarith (add_one_le_exp : x+1 ≤ exp x)
he24 : Real.exp 2.4 = Real.exp 2 * Real.exp 0.4 := by rw [← Real.exp_add]; norm_num
then 10 ≤ 2.7^2·1.4 = 10.206 ≤ exp2·exp0.4 = exp 2.4. mul_le_mul he2 he04 (by norm_num : 0 ≤ 1.4) ((Real.exp_pos 2).le)
hlog10: rw [show (2.4:ℝ) = Real.log (Real.exp 2.4) by rw [Real.log_exp]]; Real.log_le_log (by norm_num) ...
have hLL0 : Real.log (Real.log 16006.5) ≤ 2.4 := (Real.log_le_log (by ...: 0 < 16006.5... log(16006.5) could be ≤ 0? log_le_log needs 0 < 16006.5 for the outer? Real.log_le_log (hx : 0 < x) (h : x ≤ y) : log x ≤ log y. Here x = log 16006.5 ≥ 9 > 0: Real.log_le_log (by linarith [hL0lo]) (hL0up : log 16006.5 ≤ 10)) then trans hlog10.
```
Then the increments and assembly. Let me write it.
Also the zero-free circle lemma. Let me write both now, then compile.
One concern: `Real.log_le_sub_one_of_pos : 0 < x → Real.log x ≤ x - 1`. Verify name: I believe it's `Real.log_le_sub_one_of_pos`. In recent Mathlib: `Real.log_le_sub_one_of_pos (hx : 0 < x) : log x ≤ x - 1`. Yes (D-068 design mentions it).
For the norm-form: 416 * C0hat(...) where C0hat unfolds to 0.433*log+0.886*loglog+2.9. I'll `unfold C0hat` or `rw [C0hat]`/`show`. C0hat is a def; `simp only [C0hat]` or `unfold C0hat` works (LiBasePoints uses `unfold C0hat`).
Now writing the code. I'll append §5 to LiCircleBound.lean.
Clean baseline (27s). Now writing chunk 3a: the threshold lemma + the zero-free circle lemma, appended as §5.
tool: Edit
input
{
"replace_all": false,
"file_path": "D:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiCircleBound.lean",
"old_string": "end NguyenRH1\n\nend",
"new_string": "/-! ## 5. The threshold lemma and the zero-free circle (5e-v-b chunk 3a)\n\nThe \u03b3-gap circle radius R \u2208 [4k+5/2, 4k+3] with k \u2265 4000 satisfies\n416\u00b7\u0108\u2080(4k+9/2) \u2264 4k+5/2 \u2264 R (`gapCircle_threshold`) \u2014 explicit\nlinear/rational arithmetic from the two exp facts 2.7\u00b9\u2070 \u2265 16006.5 and\n2.72\u2079 \u2264 16006.5 plus log x \u2264 x\u22121. Consequences: 16\u00b7\u0108\u2080 < R (the circle\ncarries NO nontrivial zero, `not_isNontrivialZero_on_gapCircle`) and\n13/R \u2264 1/(32\u00b7\u0108\u2080) (the critical-arc clearance, used in the shell bounds\nof the next chunk). -/\n\n/-- **The threshold lemma**: for k \u2265 4000, 416\u00b7\u0108\u2080(4k+9/2) \u2264 4k+5/2.\nBase bound \u0108\u2080(16004.5) \u2264 9.3564 (log 16006.5 \u2264 10 via 2.7\u00b9\u2070 \u2265 16006.5;\nlog log \u2264 log 10 \u2264 2.4 via e^{2.4} \u2265 10.2); increment\n\u0108\u2080(x) \u2212 \u0108\u2080(16004.5) \u2264 0.532\u00b7(x\u221216004.5)/16006.5 via log(a/b) \u2264 a/b \u2212 1\n(twice; log 16006.5 \u2265 9 via 2.72\u2079 \u2264 16006.5). -/\ntheorem gapCircle_threshold {k : \u2115} (hk : 4000 \u2264 k) :\n 416 * C0hat (4 * (k : \u211d) + 9 / 2) \u2264 4 * (k : \u211d) + 5 / 2 := by\n have hk4 : (16000 : \u211d) \u2264 4 * (k : \u211d) := by\n have hkR : (4000 : \u211d) \u2264 (k : \u211d) := by exact_mod_cast hk\n linarith\n -- the exp facts\n have he10 : (16006.5 : \u211d) \u2264 Real.exp 10 := by\n have h1 : Real.exp 10 = (Real.exp 1) ^ 10 := by\n rw [\u2190 Real.exp_nat_mul]; norm_num\n have h2 : (2.7 : \u211d) \u2264 Real.exp 1 := by\n have h := Real.exp_one_gt_d9; linarith\n have h3 : (2.7 : \u211d) ^ 10 \u2264 (Real.exp 1) ^ 10 :=\n pow_le_pow_left\u2080 (by norm_num) h2 10\n have h4 : (16006.5 : \u211d) \u2264 (2.7 : \u211d) ^ 10 := by norm_num\n linarith [h1, h3, h4]\n have hL0up : Real.log (16006.5) \u2264 10 := by\n rw [show (10 : \u211d) = Real.log (Real.exp 10) by rw [Real.log_exp]]\n exact Real.log_le_log (by norm_num) he10\n have he9 : Real.exp 9 \u2264 (16006.5 : \u211d) := by\n have h1 : Real.exp 9 = (Real.exp 1) ^ 9 := by\n rw [\u2190 Real.exp_nat_mul]; norm_num\n have h2 : Real.exp 1 \u2264 (2.72 : \u211d) := by\n have h := Real.exp_one_lt_d9.le; linarith\n have h3 : (Real.exp 1) ^ 9 \u2264 (2.72 : \u211d) ^ 9 :=\n pow_le_pow_left\u2080 (Real.exp_pos 1).le h2 9\n have h4 : (2.72 : \u211d) ^ 9 \u2264 16006.5 := by norm_num\n linarith [h1, h3, h4]\n have hL0lo : (9 : \u211d) \u2264 Real.log (16006.5) := by\n rw [show (9 : \u211d) = Real.log (Real.exp 9) by rw [Real.log_exp]]\n exact Real.log_le_log (Real.exp_pos _) he9\n have he2 : (2.7 : \u211d) ^ 2 \u2264 Real.exp 2 := by\n have h1 : Real.exp 2 = (Real.exp 1) ^ 2 := by\n rw [\u2190 Real.exp_nat_mul]; norm_num\n have h2 : (2.7 : \u211d) \u2264 Real.exp 1 := by\n have h := Real.exp_one_gt_d9; linarith\n have h3 : (2.7 : \u211d) ^ 2 \u2264 (Real.exp 1) ^ 2 :=\n pow_le_pow_left\u2080 (by norm_num) h2 2\n linarith [h1, h3]\n have he04 : (1.4 : \u211d) \u2264 Real.exp 0.4 := by\n have h := Real.add_one_le_exp (0.4 : \u211d)\n linarith\n have he24 : (10 : \u211d) \u2264 Real.exp 2.4 := by\n have h1 : Real.exp 2.4 = Real.exp 2 * Real.exp 0.4 := by\n rw [\u2190 Real.exp_add]; norm_num\n have h2 : (10 : \u211d) \u2264 (2.7 : \u211d) ^ 2 * 1.4 := by norm_num\n have h3 : (2.7 : \u211d) ^ 2 * 1.4 \u2264 Real.exp 2 * Real.exp 0.4 :=\n mul_le_mul he2 he04 (by norm_num) (Real.exp_pos 2).le\n linarith [h1, h3]\n have hlog10 : Real.log 10 \u2264 (2.4 : \u211d) := by\n rw [show (2.4 : \u211d) = Real.log (Real.exp 2.4) by rw [Real.log_exp]]\n exact Real.log_le_log (by norm_num) he24\n have hLL0 : Real.log (Real.log (16006.5)) \u2264 2.4 :=\n (Real.log_le_log (by linarith [hL0lo]) hL0up).trans hlog10\n -- the increments, with x = 4k+9/2, x+2 = 4k+13/2 \u2265 16006.5\n set y : \u211d := 4 * (k : \u211d) with hy\n have hx2 : (16006.5 : \u211d) \u2264 y + 13 / 2 := by linarith\n have h\u0394def : (y + 13 / 2) / 16006.5 - 1 = (y - 16000) / 16006.5 := by\n field_simp\n have hinc1 : Real.log (y + 13 / 2) \u2264 10 + (y - 16000) / 16006.5 := by\n have hpos : (0 : \u211d) < (y + 13 / 2) / 16006.5 := by positivity\n have h1 := Real.log_le_sub_one_of_pos hpos\n have h2 : Real.log (y + 13 / 2)\n = Real.log (16006.5) + Real.log ((y + 13 / 2) / 16006.5) := by\n rw [\u2190 Real.log_mul (by norm_num : (16006.5 : \u211d) \u2260 0)\n (by positivity : (y + 13 / 2) / 16006.5 \u2260 0)]\n congr 1\n field_simp\n rw [h2, h\u0394def] at *\n linarith [h1, hL0up]\n have hLge : Real.log (16006.5) \u2264 Real.log (y + 13 / 2) :=\n Real.log_le_log (by norm_num) hx2\n have hinc2 : Real.log (Real.log (y + 13 / 2))\n \u2264 2.4 + (Real.log (y + 13 / 2) - Real.log (16006.5)) / 9 := by\n have hpos : (0 : \u211d) < Real.log (y + 13 / 2) / Real.log (16006.5) :=\n div_pos (by linarith [hL0lo, hLge]) (by linarith [hL0lo])\n have h1 := Real.log_le_sub_one_of_pos hpos\n have h2 : Real.log (Real.log (y + 13 / 2))\n = Real.log (Real.log (16006.5))\n + Real.log (Real.log (y + 13 / 2) / Real.log (16006.5)) := by\n rw [\u2190 Real.log_mul (by linarith [hL0lo] : Real.log (16006.5) \u2260 0)\n (by positivity : Real.log (y + 13 / 2) / Real.log (16006.5) \u2260 0)]\n congr 1\n field_simp\n have h3 : Real.log (y + 13 / 2) / Real.log (16006.5) - 1\n \u2264 (Real.log (y + 13 / 2) - Real.log (16006.5)) / 9 := by\n have h4 : Real.log (y + 13 / 2) / Real.log (16006.5) - 1\n = (Real.log (y + 13 / 2) - Real.log (16006.5))\n / Real.log (16006.5) := by\n field_simp\n rw [h4]\n exact div_le_div_of_nonneg_left (by linarith [hLge]) (by norm_num)\n hL0lo\n linarith [h1, h2, h3, hLL0]\n -- assemble: \u0108\u2080(4k+9/2) \u2264 9.3564 + 0.532\u00b7(y\u221216000)/16006.5\n unfold C0hat\n have h\u0394nn : (0 : \u211d) \u2264 (y - 16000) / 16006.5 := by positivity\n have h\u0394le : (y - 16000) / 16006.5 \u2264 (y - 16000) / 16000 :=\n div_le_div_of_nonneg_left (by linarith) (by norm_num) (by norm_num)\n have hC : 0.433 * Real.log (y + 9 / 2 + 2)\n + 0.886 * Real.log (Real.log (y + 9 / 2 + 2)) + 2.9\n \u2264 9.3564 + 0.532 * ((y - 16000) / 16006.5) := by\n have harg : y + 9 / 2 + 2 = y + 13 / 2 := by ring\n rw [harg]\n have h1 : Real.log (y + 13 / 2) - Real.log (16006.5)\n \u2264 (y - 16000) / 16006.5 := by linarith [hinc1, hL0up]\n linarith [hinc1, hinc2, h1]\n have hC2 : 416 * (0.433 * Real.log (y + 9 / 2 + 2)\n + 0.886 * Real.log (Real.log (y + 9 / 2 + 2)) + 2.9)\n \u2264 416 * (9.3564 + 0.532 * ((y - 16000) / 16006.5)) :=\n mul_le_mul_of_nonneg_left hC (by norm_num)\n have hfin : 416 * (9.3564 + 0.532 * ((y - 16000) / 16006.5))\n \u2264 y + 5 / 2 := by\n have h1 : 416 * (9.3564 + 0.532 * ((y - 16000) / 16006.5))\n \u2264 416 * (9.3564 + 0.532 * ((y - 16000) / 16000)) := by\n apply mul_le_mul_of_nonneg_left _ (by norm_num)\n exact add_le_add_left (mul_le_mul_of_nonneg_left h\u0394le (by norm_num)) _\n have h2 : 416 * (9.3564 + 0.532 * ((y - 16000) / 16000))\n = 3670.9504 + 0.055328 * y := by\n field_simp\n ring\n rw [h2] at h1\n linarith [hk4]\n calc 416 * (0.433 * Real.log (y + 9 / 2 + 2)\n + 0.886 * Real.log (Real.log (y + 9 / 2 + 2)) + 2.9)\n \u2264 416 * (9.3564 + 0.532 * ((y - 16000) / 16006.5)) := hC2\n _ \u2264 y + 5 / 2 := hfin\n\n/-- |im \u03c1| \u2265 \u2016\u03c1\u2016 \u2212 1 for a nontrivial zero (\u2016\u03c1\u2016 \u2264 |re| + |im| \u2264 1 + |im|). -/\nlemma abs_im_ge_norm_sub_one (\u03c1 : {\u03c1 : \u2102 // IsNontrivialZero \u03c1}) :\n \u2016(\u03c1 : \u2102)\u2016 - 1 \u2264 |(\u03c1 : \u2102).im| := by\n have hnorm : \u2016(\u03c1 : \u2102)\u2016 \u2264 |(\u03c1 : \u2102).re| + |(\u03c1 : \u2102).im| :=\n Complex.norm_le_abs_re_add_abs_im _\n have hre : |(\u03c1 : \u2102).re| \u2264 1 := by\n rw [abs_le]\n exact \u27e8by linarith [\u03c1.2.2.1], by linarith [\u03c1.2.2.2]\u27e9\n linarith\n\n/-- **The gap circle is zero-free**: for k \u2265 4000 and R with the\ngap-circle properties, no point s with \u2016s\u2016 = R is a nontrivial zero.\n(A zero on the circle would have ordinate \u00b1\u221a(R\u00b2\u2212re\u00b2) within 1/R of R,\nbelow the \u03b3-gap clearance 1/(16\u00b7\u0108\u2080) since 16\u00b7\u0108\u2080 < R by the threshold.) -/\ntheorem not_isNontrivialZero_on_gapCircle {k : \u2115} (hk : 4000 \u2264 k)\n {R : \u211d} (hRlo : 4 * (k : \u211d) + 5 / 2 \u2264 R)\n (hgap : \u2200 \u03c1 : \u2102, IsNontrivialZero \u03c1 \u2192\n (1 / (16 * C0hat (4 * (k : \u211d) + 9 / 2))) \u2264 |\u03c1.im - R| \u2228\n 1 \u2264 |\u03c1.im - R|)\n {s : \u2102} (hs : \u2016s\u2016 = R) : \u00ac IsNontrivialZero s := by\n intro hz\n have hth := gapCircle_threshold hk\n have h\u01082 : (2 : \u211d) \u2264 C0hat (4 * (k : \u211d) + 9 / 2) := two_le_C0hat (by\n have hkR : (1 : \u211d) \u2264 (k : \u211d) := by exact_mod_cast (by omega : 1 \u2264 k)\n linarith)\n have hR1 : (1 : \u211d) < R := by\n have hkR : (1 : \u211d) \u2264 (k : \u211d) := by exact_mod_cast (by omega : 1 \u2264 k)\n linarith [hRlo]\n -- 16\u00b7\u0108\u2080 < R\n have h16 : 16 * C0hat (4 * (k : \u211d) + 9 / 2) < R := by\n have h1 : 16 * C0hat (4 * (k : \u211d) + 9 / 2)\n < 416 * C0hat (4 * (k : \u211d) + 9 / 2) := by\n have hpos : (0 : \u211d) < C0hat (4 * (k : \u211d) + 9 / 2) := by linarith [h\u01082]\n nlinarith [hpos]\n linarith [hth, hRlo, h1]\n -- the ordinate t = |im s| and its distance to R\n have hnormSq : \u2016s\u2016 ^ 2 = s.re ^ 2 + s.im ^ 2 := by\n rw [\u2190 Complex.normSq_eq_norm_sq, Complex.normSq_apply]\n have hre2 : s.re ^ 2 \u2264 1 := by\n have h0 := hz.2.1\n have h1 := hz.2.2\n nlinarith [sq_nonneg s.re]\n have ht_le : |s.im| \u2264 R := by\n have h := abs_im_le_norm s\n rw [hs] at h\n exact h\n have ht2 : |s.im| ^ 2 = R ^ 2 - s.re ^ 2 := by\n have h1 : s.im ^ 2 = R ^ 2 - s.re ^ 2 := by\n have h2 : s.re ^ 2 + s.im ^ 2 = R ^ 2 := by\n rw [\u2190 hnormSq, hs]\n linarith\n rw [sq_abs]\n linarith [h1]\n -- R \u2212 |im s| = re\u00b2/(R+|im s|) \u2264 1/R\n have hRt : R - |s.im| = s.re ^ 2 / (R + |s.im|) := by\n have hne : R + |s.im| \u2260 0 := by positivity\n field_simp\n have h1 : (R - |s.im|) * (R + |s.im|) = R ^ 2 - |s.im| ^ 2 := by ring\n rw [h1, ht2]\n ring\n have hRt_le : R - |s.im| \u2264 1 / R := by\n rw [hRt]\n have h1 : s.re ^ 2 / (R + |s.im|) \u2264 s.re ^ 2 / R := by\n apply div_le_div_of_nonneg_left (sq_nonneg _) (by linarith [hR1])\n have h2 : (0 : \u211d) \u2264 |s.im| := abs_nonneg _\n linarith\n have h3 : s.re ^ 2 / R \u2264 1 / R := by\n apply div_le_div_of_nonneg_right _ (by linarith [hR1])\n linarith [hre2]\n exact h1.trans h3\n -- the witness zero with positive ordinate\n have hkR0 : (0 : \u211d) < R := by linarith [hR1]\n set \u03c1' : \u2102 := if 0 \u2264 s.im then s else (starRingEnd \u2102) s with h\u03c1'\n have h\u03c1'z : IsNontrivialZero \u03c1' := by\n rw [h\u03c1']\n by_cases him : 0 \u2264 s.im\n \u00b7 rw [if_pos him]; exact hz\n \u00b7 rw [if_neg him]; exact isNontrivialZero_conj hz\n have h\u03c1'im : \u03c1'.im = |s.im| := by\n rw [h\u03c1']\n by_cases him : 0 \u2264 s.im\n \u00b7 rw [if_pos him]; exact abs_of_nonneg him\n \u00b7 rw [if_neg him, Complex.conj_im]\n exact abs_of_neg (lt_of_not_ge him)\n -- |im \u03c1' \u2212 R| = R \u2212 |im s| \u2264 1/R < min 1 (1/(16\u0108\u2080)): contradiction\n have hgap' := hgap \u03c1' h\u03c1'z\n rw [h\u03c1'im] at hgap'\n have hdist : |(|s.im| : \u211d) - R| = R - |s.im| :=\n abs_of_nonpos (by linarith [ht_le])\n rw [hdist] at hgap'\n have hsmall : R - |s.im| < 1 / (16 * C0hat (4 * (k : \u211d) + 9 / 2)) := by\n have h1 : 1 / R < 1 / (16 * C0hat (4 * (k : \u211d) + 9 / 2)) := by\n apply one_div_lt_one_div_of_lt\n \u00b7 have hpos : (0 : \u211d) < 16 * C0hat (4 * (k : \u211d) + 9 / 2) := by\n linarith [h\u01082]\n exact hpos\n \u00b7 exact h16\n linarith [hRt_le, h1]\n have hsmall1 : R - |s.im| < 1 := by\n have h1 : 1 / R < 1 := by\n apply one_div_lt_one_of_lt_one\n \u00b7 exact hR1\n \u00b7 exact hR1\n linarith [hRt_le, h1]\n rcases hgap' with h | h\n \u00b7 linarith [h, hsmall]\n \u00b7 linarith [h, hsmall1]\n\nend NguyenRH1\n\nend"
}
raw content_json (database row)
[{"type":"thinking","thinking":"Clean compile in 27s. Now let me write 3a. I'll append §5 with the threshold lemma and the zero-free circle lemma.\n\nThreshold lemma:\n```lean\ntheorem gapCircle_threshold {k : ℕ} (hk : 4000 ≤ k) :\n 416 * C0hat (4 * (k : ℝ) + 9 / 2) ≤ 4 * (k : ℝ) + 5 / 2\n```\n\nProof plan:\n- hk4 : (16000:ℝ) ≤ 4k\n- x := 4k + 9/2, so x ≥ 16004.5; x+2 = 4k+13/2 ≥ 16006.5\n- L0 := log(16006.5): 9 ≤ L0 ≤ 10\n - ≤ 10: 16006.5 ≤ e^10: e^10 > 2.718281828^10 = 22026.46 (norm_num) via exp_one_gt_d9\n - ≥ 9: e^9 ≤ 16006.5: e^9 < 2.7182818286^9 = 8103.09 (norm_num) via exp_one_lt_d9\n- logL0 := log L0 ≤ 2.4: L0 ≤ 10 ⟹ log L0 ≤ log 10; 10 ≤ e^{2.4}: e^{2.4} = e^2·e^{0.4} ≥ 7.389·1.4 = 10.34\n - e^2 > 2.718281828^2 = 7.38905 (norm_num)\n - e^{0.4} ≥ 1.4 (Real.add_one_le_exp: 1+0.4 ≤ e^{0.4})\n - e^{2.4} = e^{2+0.4} = e^2·e^{0.4} (Real.exp_add)\n- increments: L := log(x+2) = L0 + log((x+2)/16006.5), log((x+2)/16006.5) ≤ (x+2)/16006.5 − 1 = (x−16004.5)/16006.5 (Real.log_le_sub_one_of_pos)\n- log L ≤ logL0 + (L − L0)/L0 ≤ 2.4 + (L−L0)/9 (log_le_sub_one_of_pos on L/L0, L0 ≥ 9)\n- C0hat x = 0.433·L + 0.886·log L + 2.9 ≤ 0.433(10+Δ) + 0.886(2.4+Δ/9) + 2.9 where Δ := (x−16004.5)/16006.5 = (4k−16000)/16006.5\n- 416·that ≤ 416·(9.3564 + 0.5315Δ) = 3892.26 + 221.1Δ\n- Δ ≤ (4k−16000)/16000 = k/4000 − 1\n- 3892.26 + 221.1(k/4000 − 1) = 3671.16 + 0.055275k ≤ 4k+2.5 for k ≥ 4000.\n\nNumerical details to verify by hand before coding (banked gotcha: check norm_num digit bounds by hand!):\n- 2.718281828^10: compute. e ≈ 2.718281828459. 2.718281828^2 = 7.389046158... let me compute: 2.718281828^2 = 2.718281828·2.718281828. 2.71828^2 = 7.38905... yes ≈ 7.3890461. ^4 = 7.3890461^2 = 54.598003... 7.3890461^2: 7.389^2 = 54.597... yes ≈ 54.59803. ^8 = 54.59803^2 = 2980.958... 54.598^2 = 2980.94... compute: 54.59803^2 = 2980.9580. ^10 = ^8·^2 = 2980.9580·7.3890461 = 22025.5... 2980.958·7.389 ≈ 22026.0. e^10 = 22026.4658. So 2.718281828^10 ≈ 22026.0 ≥ 16006.5 ✓ HUGE slack. norm_num should verify 2.718281828^10 ≥ 16006.5 easily — actually norm_num with decimal powers: (2.718281828 : ℝ)^10 — norm_num can do this but might be slow; alternatively chain: e^10 ≥ e^9·2.7 hmm. Simpler: use (2.7:ℝ)^10 ≤ e^10: 2.7^10 = ? 2.7^2 = 7.29, 2.7^4 = 53.1441, 2.7^8 = 2824.295..., 2.7^10 = 2.7^8·2.7^2 = 2824.295·7.29 = 20589.1 ≥ 16006.5 ✓. Even simpler for norm_num. And e > 2.7 via exp_one_gt_d9 (e > 2.718281828 > 2.7). pow_le_pow_left₀ (by norm_num : (0:ℝ) ≤ 2.7) (h : 2.7 ≤ e) 10. \n- 2.7182818286^9 vs 16006.5 for the ≥ 9 bound: e^9 ≤ 2.7182818286^9 (e < 2.7182818286, exp_one_lt_d9). 2.7182818286^9 ≈ 8103.1 ≤ 16006.5 ✓. Via 2.72: e < 2.72: e^9 < 2.72^9: 2.72^2 = 7.3984, 2.72^4 = 54.7363, 2.72^8 = 2996.06, 2.72^9 = 2.72^8·2.72 = 8149.3 ≤ 16006.5 ✓. norm_num (2.72:ℝ)^9 ≤ 16006.5 — fine.\n- e^2 > 2.7^2 = 7.29. e^{2.4} = e^2 · e^{0.4} ≥ 7.29·1.4 = 10.206 ≥ 10 ✓.\n\nSo log 10 ≤ 2.4: 10 ≤ 7.29·1.4 = 10.206 ≤ e^2·e^{0.4} = e^{2.4}.\n\nWait: e^{2.4} = e^{2+0.4} = e^2·e^{0.4} via Real.exp_add (2+0.4 = 2.4 ✓ ring_nf should handle).\n\n- log(x+2) − log(16006.5) ≤ (x − 16004.5)/16006.5:\n Real.log_le_sub_one_of_pos : 0 < x → log x ≤ x − 1. Apply to (x+2)/16006.5 > 0: log((x+2)/16006.5) ≤ (x+2)/16006.5 − 1. And log(x+2) = log(16006.5·((x+2)/16006.5)) = log 16006.5 + log((x+2)/16006.5) via Real.log_mul (16006.5 ≠ 0) ((x+2)/16006.5 ≠ 0).\n- log L − log L0 ≤ (L − L0)/9: log(L/L0) ≤ L/L0 − 1 = (L−L0)/L0 ≤ (L−L0)/9 (L0 ≥ 9, L ≥ L0 > 0, L−L0 ≥ 0). L ≥ L0 since x+2 ≥ 16006.5 (log monotone). div_le_div_of_nonneg_left? (L−L0)/L0 ≤ (L−L0)/9 ⟸ L0 ≥ 9, L−L0 ≥ 0: div_le_div (le_refl) (h9 : 9 ≤ L0) (by norm_num : (0:ℝ) < 9) (by positivity? ...) hmm signature: div_le_div (hab : a ≤ b) (hac : c ≤ a)? Let me recall: div_le_div (h₁ : a ≤ b) (h₂ : c ≤ a) (hc : 0 < c) (hd : 0 < d)? The ordered-field div_le_div : a ≤ b → 0 < c ≤ d... For a/c ≤ a/d with a ≥ 0, 0 < c ≤ d: `div_le_div_of_nonneg_left (ha : 0 ≤ a) (hc : 0 < c) (hcd : c ≤ d) : a / d ≤ a / c`. Yes that's the one: gives a/d ≤ a/c. So (L−L0)/L0 ≤ (L−L0)/9 is `div_le_div_of_nonneg_left (hLnn : 0 ≤ L−L0) (by norm_num : (0:ℝ)<9) (h9 : 9 ≤ L0)`. ✓\n\nThen C0hat x ≤ 0.433(10+Δ) + 0.886(2.4+Δ/9) + 2.9. Let me compute the constant: 0.433·10 = 4.33; 0.886·2.4 = 2.1264; +2.9 → 9.3564. Δ-coeff: 0.433 + 0.886/9 = 0.433 + 0.0984444 = 0.5314444. \n416·9.3564 = 3892.2624. 416·0.5314444 = 221.08089. \nΔ = (4k−16000)/16006.5. Bound: Δ ≤ (4k−16000)/16000 (16006.5 ≥ 16000, num ≥ 0).\n221.08089·Δ ≤ 221.08089·(4k−16000)/16000 = 221.08089·4k/16000 − 221.08089 = 0.0552702k·... 221.08089·4/16000 = 884.32356/16000 = 0.055270. \nSo 416·C0hat ≤ 3892.2624 − 221.08089 + 0.055270k = 3671.1815 + 0.055270k.\nWant ≤ 4k+2.5: ⟺ 3668.68 ≤ 3.94473k ⟸ 3.94473·4000 = 15778.9 ≥ 3668.68 ✓.\n\nIn Lean: final linarith with hk4 : (16000:ℝ) ≤ 4k and the chain. I'll structure the arithmetic as a `have hmain : 416 * C0hat x ≤ 3672 + 0.06 * (4*(k:ℝ))` hmm — cleaner: bound in steps with explicit rational numbers. Actually let me simplify constants to make linarith robust:\n\nC0hat x ≤ 9.3564 + 0.532·Δ (round 0.5314444 UP to 0.532).\n416·C0hat ≤ 416·9.3564 + 416·0.532·Δ = 3892.2624 + 221.312·Δ.\nΔ ≤ (4k−16000)/16000: 221.312·(4k−16000)/16000 = 221.312·(4k)/16000 − 221.312 = 0.055328·(4k)... 221.312·4/16000 = 885.248/16000 = 0.055328. In terms of y := 4k: ≤ 3892.2624 − 221.312 + 0.055328y = 3670.9504 + 0.055328y.\nWant 3670.9504 + 0.055328y ≤ y+2.5 ⟺ 3668.45 ≤ 0.944672y ⟸ y ≥ 16000: 0.944672·16000 = 15114.75 ≥ 3668.45 ✓✓ massive slack.\n\nAll linear — linarith handles given the pieces as haves. But linarith with decimal coefficients (0.055328 etc.) — fine, they're rationals.\n\nPlan the haves:\n```\nhave hk4 : (16000:ℝ) ≤ 4*(k:ℝ) := by exact_mod_cast hk (hk : 4000 ≤ k in ℕ; 4k ≥ 16000: push_cast; nlinarith? Actually: (4*(k:ℝ)) ≥ 4*4000 = 16000: mul_le_mul_of_nonneg_left (exact_mod_cast hk) (by norm_num))\nhave hx2 : (16006.5:ℝ) ≤ 4*(k:ℝ) + 13/2 := by linarith\n-- exp facts\nhave he10 : (16006.5:ℝ) ≤ Real.exp 10: 16006.5 ≤ 2.7^10 ≤ e^10.\n 2.7^10: rw [show (10:ℝ) = 10] hmm Real.exp 10: exp(10) = (exp 1)^10? Real.exp_nat_mul : exp (n * x) = (exp x) ^ n with n : ℕ. exp (10*1) = (exp 1)^10. (10:ℝ) = ((10:ℕ):ℝ)·1... messy. Existing pattern from dyadic_tail_constant: h1 : Real.exp 5 = (Real.exp 1) ^ 5 := by rw [← Real.exp_nat_mul]; norm_num. So exp 10 = (exp 1)^10 via rw [← Real.exp_nat_mul]; norm_num. Then (exp 1)^10 ≥ 2.7^10 (pow_le_pow_left₀ (Real.exp_pos 1).le exp_one_gt_d9.le... exp_one_gt_d9 : 2.718281828 < e, so 2.7 ≤ e: linarith). 2.7^10 ≥ 16006.5 by norm_num. ✓\nhave hL0up : Real.log (16006.5) ≤ 10 := by rw [show (10:ℝ) = Real.log (Real.exp 10) by rw [Real.log_exp]]; exact Real.log_le_log (by norm_num) he10\nhave he9 : Real.exp 9 ≤ (16006.5:ℝ): e^9 ≤ 2.72^9 ≤ 16006.5: exp 9 = (exp 1)^9 ≤ 2.72^9 (pow_le_pow_left₀ (exp_pos).le exp_one_lt_d9.le hmm exp_one_lt_d9 : e < 2.7182818286, so e ≤ 2.72 ✓); 2.72^9 ≤ 16006.5 norm_num.\nhave hL0lo : (9:ℝ) ≤ Real.log 16006.5 := by rw [show (9:ℝ) = Real.log (Real.exp 9) by rw [Real.log_exp]]; exact Real.log_le_log (Real.exp_pos _) he9\nhave hlog10 : Real.log 10 ≤ (2.4:ℝ): 10 ≤ e^{2.4}: 10 ≤ 7.29·1.4 = 10.206 ≤ e^2·e^{0.4}: \n he2 : (2.7:ℝ)^2 ≤ Real.exp 2: exp 2 = (exp 1)^2 ≥ 2.7^2.\n he04 : (1.4:ℝ) ≤ Real.exp 0.4 := by have := Real.add_one_le_exp (0.4:ℝ); linarith (add_one_le_exp : x+1 ≤ exp x)\n he24 : Real.exp 2.4 = Real.exp 2 * Real.exp 0.4 := by rw [← Real.exp_add]; norm_num\n then 10 ≤ 2.7^2·1.4 = 10.206 ≤ exp2·exp0.4 = exp 2.4. mul_le_mul he2 he04 (by norm_num : 0 ≤ 1.4) ((Real.exp_pos 2).le)\n hlog10: rw [show (2.4:ℝ) = Real.log (Real.exp 2.4) by rw [Real.log_exp]]; Real.log_le_log (by norm_num) ...\nhave hLL0 : Real.log (Real.log 16006.5) ≤ 2.4 := (Real.log_le_log (by ...: 0 < 16006.5... log(16006.5) could be ≤ 0? log_le_log needs 0 < 16006.5 for the outer? Real.log_le_log (hx : 0 < x) (h : x ≤ y) : log x ≤ log y. Here x = log 16006.5 ≥ 9 > 0: Real.log_le_log (by linarith [hL0lo]) (hL0up : log 16006.5 ≤ 10)) then trans hlog10.\n```\n\nThen the increments and assembly. Let me write it.\n\nAlso the zero-free circle lemma. Let me write both now, then compile.\n\nOne concern: `Real.log_le_sub_one_of_pos : 0 < x → Real.log x ≤ x - 1`. Verify name: I believe it's `Real.log_le_sub_one_of_pos`. In recent Mathlib: `Real.log_le_sub_one_of_pos (hx : 0 < x) : log x ≤ x - 1`. Yes (D-068 design mentions it). \n\nFor the norm-form: 416 * C0hat(...) where C0hat unfolds to 0.433*log+0.886*loglog+2.9. I'll `unfold C0hat` or `rw [C0hat]`/`show`. C0hat is a def; `simp only [C0hat]` or `unfold C0hat` works (LiBasePoints uses `unfold C0hat`).\n\nNow writing the code. I'll append §5 to LiCircleBound.lean.","signature":""},{"type":"text","text":"Clean baseline (27s). Now writing chunk 3a: the threshold lemma + the zero-free circle lemma, appended as §5."},{"type":"tool_use","id":"Edit_12","name":"Edit","input":{"replace_all":false,"file_path":"D:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiCircleBound.lean","old_string":"end NguyenRH1\n\nend","new_string":"/-! ## 5. The threshold lemma and the zero-free circle (5e-v-b chunk 3a)\n\nThe γ-gap circle radius R ∈ [4k+5/2, 4k+3] with k ≥ 4000 satisfies\n416·Ĉ₀(4k+9/2) ≤ 4k+5/2 ≤ R (`gapCircle_threshold`) — explicit\nlinear/rational arithmetic from the two exp facts 2.7¹⁰ ≥ 16006.5 and\n2.72⁹ ≤ 16006.5 plus log x ≤ x−1. Consequences: 16·Ĉ₀ < R (the circle\ncarries NO nontrivial zero, `not_isNontrivialZero_on_gapCircle`) and\n13/R ≤ 1/(32·Ĉ₀) (the critical-arc clearance, used in the shell bounds\nof the next chunk). -/\n\n/-- **The threshold lemma**: for k ≥ 4000, 416·Ĉ₀(4k+9/2) ≤ 4k+5/2.\nBase bound Ĉ₀(16004.5) ≤ 9.3564 (log 16006.5 ≤ 10 via 2.7¹⁰ ≥ 16006.5;\nlog log ≤ log 10 ≤ 2.4 via e^{2.4} ≥ 10.2); increment\nĈ₀(x) − Ĉ₀(16004.5) ≤ 0.532·(x−16004.5)/16006.5 via log(a/b) ≤ a/b − 1\n(twice; log 16006.5 ≥ 9 via 2.72⁹ ≤ 16006.5). -/\ntheorem gapCircle_threshold {k : ℕ} (hk : 4000 ≤ k) :\n 416 * C0hat (4 * (k : ℝ) + 9 / 2) ≤ 4 * (k : ℝ) + 5 / 2 := by\n have hk4 : (16000 : ℝ) ≤ 4 * (k : ℝ) := by\n have hkR : (4000 : ℝ) ≤ (k : ℝ) := by exact_mod_cast hk\n linarith\n -- the exp facts\n have he10 : (16006.5 : ℝ) ≤ Real.exp 10 := by\n have h1 : Real.exp 10 = (Real.exp 1) ^ 10 := by\n rw [← Real.exp_nat_mul]; norm_num\n have h2 : (2.7 : ℝ) ≤ Real.exp 1 := by\n have h := Real.exp_one_gt_d9; linarith\n have h3 : (2.7 : ℝ) ^ 10 ≤ (Real.exp 1) ^ 10 :=\n pow_le_pow_left₀ (by norm_num) h2 10\n have h4 : (16006.5 : ℝ) ≤ (2.7 : ℝ) ^ 10 := by norm_num\n linarith [h1, h3, h4]\n have hL0up : Real.log (16006.5) ≤ 10 := by\n rw [show (10 : ℝ) = Real.log (Real.exp 10) by rw [Real.log_exp]]\n exact Real.log_le_log (by norm_num) he10\n have he9 : Real.exp 9 ≤ (16006.5 : ℝ) := by\n have h1 : Real.exp 9 = (Real.exp 1) ^ 9 := by\n rw [← Real.exp_nat_mul]; norm_num\n have h2 : Real.exp 1 ≤ (2.72 : ℝ) := by\n have h := Real.exp_one_lt_d9.le; linarith\n have h3 : (Real.exp 1) ^ 9 ≤ (2.72 : ℝ) ^ 9 :=\n pow_le_pow_left₀ (Real.exp_pos 1).le h2 9\n have h4 : (2.72 : ℝ) ^ 9 ≤ 16006.5 := by norm_num\n linarith [h1, h3, h4]\n have hL0lo : (9 : ℝ) ≤ Real.log (16006.5) := by\n rw [show (9 : ℝ) = Real.log (Real.exp 9) by rw [Real.log_exp]]\n exact Real.log_le_log (Real.exp_pos _) he9\n have he2 : (2.7 : ℝ) ^ 2 ≤ Real.exp 2 := by\n have h1 : Real.exp 2 = (Real.exp 1) ^ 2 := by\n rw [← Real.exp_nat_mul]; norm_num\n have h2 : (2.7 : ℝ) ≤ Real.exp 1 := by\n have h := Real.exp_one_gt_d9; linarith\n have h3 : (2.7 : ℝ) ^ 2 ≤ (Real.exp 1) ^ 2 :=\n pow_le_pow_left₀ (by norm_num) h2 2\n linarith [h1, h3]\n have he04 : (1.4 : ℝ) ≤ Real.exp 0.4 := by\n have h := Real.add_one_le_exp (0.4 : ℝ)\n linarith\n have he24 : (10 : ℝ) ≤ Real.exp 2.4 := by\n have h1 : Real.exp 2.4 = Real.exp 2 * Real.exp 0.4 := by\n rw [← Real.exp_add]; norm_num\n have h2 : (10 : ℝ) ≤ (2.7 : ℝ) ^ 2 * 1.4 := by norm_num\n have h3 : (2.7 : ℝ) ^ 2 * 1.4 ≤ Real.exp 2 * Real.exp 0.4 :=\n mul_le_mul he2 he04 (by norm_num) (Real.exp_pos 2).le\n linarith [h1, h3]\n have hlog10 : Real.log 10 ≤ (2.4 : ℝ) := by\n rw [show (2.4 : ℝ) = Real.log (Real.exp 2.4) by rw [Real.log_exp]]\n exact Real.log_le_log (by norm_num) he24\n have hLL0 : Real.log (Real.log (16006.5)) ≤ 2.4 :=\n (Real.log_le_log (by linarith [hL0lo]) hL0up).trans hlog10\n -- the increments, with x = 4k+9/2, x+2 = 4k+13/2 ≥ 16006.5\n set y : ℝ := 4 * (k : ℝ) with hy\n have hx2 : (16006.5 : ℝ) ≤ y + 13 / 2 := by linarith\n have hΔdef : (y + 13 / 2) / 16006.5 - 1 = (y - 16000) / 16006.5 := by\n field_simp\n have hinc1 : Real.log (y + 13 / 2) ≤ 10 + (y - 16000) / 16006.5 := by\n have hpos : (0 : ℝ) < (y + 13 / 2) / 16006.5 := by positivity\n have h1 := Real.log_le_sub_one_of_pos hpos\n have h2 : Real.log (y + 13 / 2)\n = Real.log (16006.5) + Real.log ((y + 13 / 2) / 16006.5) := by\n rw [← Real.log_mul (by norm_num : (16006.5 : ℝ) ≠ 0)\n (by positivity : (y + 13 / 2) / 16006.5 ≠ 0)]\n congr 1\n field_simp\n rw [h2, hΔdef] at *\n linarith [h1, hL0up]\n have hLge : Real.log (16006.5) ≤ Real.log (y + 13 / 2) :=\n Real.log_le_log (by norm_num) hx2\n have hinc2 : Real.log (Real.log (y + 13 / 2))\n ≤ 2.4 + (Real.log (y + 13 / 2) - Real.log (16006.5)) / 9 := by\n have hpos : (0 : ℝ) < Real.log (y + 13 / 2) / Real.log (16006.5) :=\n div_pos (by linarith [hL0lo, hLge]) (by linarith [hL0lo])\n have h1 := Real.log_le_sub_one_of_pos hpos\n have h2 : Real.log (Real.log (y + 13 / 2))\n = Real.log (Real.log (16006.5))\n + Real.log (Real.log (y + 13 / 2) / Real.log (16006.5)) := by\n rw [← Real.log_mul (by linarith [hL0lo] : Real.log (16006.5) ≠ 0)\n (by positivity : Real.log (y + 13 / 2) / Real.log (16006.5) ≠ 0)]\n congr 1\n field_simp\n have h3 : Real.log (y + 13 / 2) / Real.log (16006.5) - 1\n ≤ (Real.log (y + 13 / 2) - Real.log (16006.5)) / 9 := by\n have h4 : Real.log (y + 13 / 2) / Real.log (16006.5) - 1\n = (Real.log (y + 13 / 2) - Real.log (16006.5))\n / Real.log (16006.5) := by\n field_simp\n rw [h4]\n exact div_le_div_of_nonneg_left (by linarith [hLge]) (by norm_num)\n hL0lo\n linarith [h1, h2, h3, hLL0]\n -- assemble: Ĉ₀(4k+9/2) ≤ 9.3564 + 0.532·(y−16000)/16006.5\n unfold C0hat\n have hΔnn : (0 : ℝ) ≤ (y - 16000) / 16006.5 := by positivity\n have hΔle : (y - 16000) / 16006.5 ≤ (y - 16000) / 16000 :=\n div_le_div_of_nonneg_left (by linarith) (by norm_num) (by norm_num)\n have hC : 0.433 * Real.log (y + 9 / 2 + 2)\n + 0.886 * Real.log (Real.log (y + 9 / 2 + 2)) + 2.9\n ≤ 9.3564 + 0.532 * ((y - 16000) / 16006.5) := by\n have harg : y + 9 / 2 + 2 = y + 13 / 2 := by ring\n rw [harg]\n have h1 : Real.log (y + 13 / 2) - Real.log (16006.5)\n ≤ (y - 16000) / 16006.5 := by linarith [hinc1, hL0up]\n linarith [hinc1, hinc2, h1]\n have hC2 : 416 * (0.433 * Real.log (y + 9 / 2 + 2)\n + 0.886 * Real.log (Real.log (y + 9 / 2 + 2)) + 2.9)\n ≤ 416 * (9.3564 + 0.532 * ((y - 16000) / 16006.5)) :=\n mul_le_mul_of_nonneg_left hC (by norm_num)\n have hfin : 416 * (9.3564 + 0.532 * ((y - 16000) / 16006.5))\n ≤ y + 5 / 2 := by\n have h1 : 416 * (9.3564 + 0.532 * ((y - 16000) / 16006.5))\n ≤ 416 * (9.3564 + 0.532 * ((y - 16000) / 16000)) := by\n apply mul_le_mul_of_nonneg_left _ (by norm_num)\n exact add_le_add_left (mul_le_mul_of_nonneg_left hΔle (by norm_num)) _\n have h2 : 416 * (9.3564 + 0.532 * ((y - 16000) / 16000))\n = 3670.9504 + 0.055328 * y := by\n field_simp\n ring\n rw [h2] at h1\n linarith [hk4]\n calc 416 * (0.433 * Real.log (y + 9 / 2 + 2)\n + 0.886 * Real.log (Real.log (y + 9 / 2 + 2)) + 2.9)\n ≤ 416 * (9.3564 + 0.532 * ((y - 16000) / 16006.5)) := hC2\n _ ≤ y + 5 / 2 := hfin\n\n/-- |im ρ| ≥ ‖ρ‖ − 1 for a nontrivial zero (‖ρ‖ ≤ |re| + |im| ≤ 1 + |im|). -/\nlemma abs_im_ge_norm_sub_one (ρ : {ρ : ℂ // IsNontrivialZero ρ}) :\n ‖(ρ : ℂ)‖ - 1 ≤ |(ρ : ℂ).im| := by\n have hnorm : ‖(ρ : ℂ)‖ ≤ |(ρ : ℂ).re| + |(ρ : ℂ).im| :=\n Complex.norm_le_abs_re_add_abs_im _\n have hre : |(ρ : ℂ).re| ≤ 1 := by\n rw [abs_le]\n exact ⟨by linarith [ρ.2.2.1], by linarith [ρ.2.2.2]⟩\n linarith\n\n/-- **The gap circle is zero-free**: for k ≥ 4000 and R with the\ngap-circle properties, no point s with ‖s‖ = R is a nontrivial zero.\n(A zero on the circle would have ordinate ±√(R²−re²) within 1/R of R,\nbelow the γ-gap clearance 1/(16·Ĉ₀) since 16·Ĉ₀ < R by the threshold.) -/\ntheorem not_isNontrivialZero_on_gapCircle {k : ℕ} (hk : 4000 ≤ k)\n {R : ℝ} (hRlo : 4 * (k : ℝ) + 5 / 2 ≤ R)\n (hgap : ∀ ρ : ℂ, IsNontrivialZero ρ →\n (1 / (16 * C0hat (4 * (k : ℝ) + 9 / 2))) ≤ |ρ.im - R| ∨\n 1 ≤ |ρ.im - R|)\n {s : ℂ} (hs : ‖s‖ = R) : ¬ IsNontrivialZero s := by\n intro hz\n have hth := gapCircle_threshold hk\n have hĈ2 : (2 : ℝ) ≤ C0hat (4 * (k : ℝ) + 9 / 2) := two_le_C0hat (by\n have hkR : (1 : ℝ) ≤ (k : ℝ) := by exact_mod_cast (by omega : 1 ≤ k)\n linarith)\n have hR1 : (1 : ℝ) < R := by\n have hkR : (1 : ℝ) ≤ (k : ℝ) := by exact_mod_cast (by omega : 1 ≤ k)\n linarith [hRlo]\n -- 16·Ĉ₀ < R\n have h16 : 16 * C0hat (4 * (k : ℝ) + 9 / 2) < R := by\n have h1 : 16 * C0hat (4 * (k : ℝ) + 9 / 2)\n < 416 * C0hat (4 * (k : ℝ) + 9 / 2) := by\n have hpos : (0 : ℝ) < C0hat (4 * (k : ℝ) + 9 / 2) := by linarith [hĈ2]\n nlinarith [hpos]\n linarith [hth, hRlo, h1]\n -- the ordinate t = |im s| and its distance to R\n have hnormSq : ‖s‖ ^ 2 = s.re ^ 2 + s.im ^ 2 := by\n rw [← Complex.normSq_eq_norm_sq, Complex.normSq_apply]\n have hre2 : s.re ^ 2 ≤ 1 := by\n have h0 := hz.2.1\n have h1 := hz.2.2\n nlinarith [sq_nonneg s.re]\n have ht_le : |s.im| ≤ R := by\n have h := abs_im_le_norm s\n rw [hs] at h\n exact h\n have ht2 : |s.im| ^ 2 = R ^ 2 - s.re ^ 2 := by\n have h1 : s.im ^ 2 = R ^ 2 - s.re ^ 2 := by\n have h2 : s.re ^ 2 + s.im ^ 2 = R ^ 2 := by\n rw [← hnormSq, hs]\n linarith\n rw [sq_abs]\n linarith [h1]\n -- R − |im s| = re²/(R+|im s|) ≤ 1/R\n have hRt : R - |s.im| = s.re ^ 2 / (R + |s.im|) := by\n have hne : R + |s.im| ≠ 0 := by positivity\n field_simp\n have h1 : (R - |s.im|) * (R + |s.im|) = R ^ 2 - |s.im| ^ 2 := by ring\n rw [h1, ht2]\n ring\n have hRt_le : R - |s.im| ≤ 1 / R := by\n rw [hRt]\n have h1 : s.re ^ 2 / (R + |s.im|) ≤ s.re ^ 2 / R := by\n apply div_le_div_of_nonneg_left (sq_nonneg _) (by linarith [hR1])\n have h2 : (0 : ℝ) ≤ |s.im| := abs_nonneg _\n linarith\n have h3 : s.re ^ 2 / R ≤ 1 / R := by\n apply div_le_div_of_nonneg_right _ (by linarith [hR1])\n linarith [hre2]\n exact h1.trans h3\n -- the witness zero with positive ordinate\n have hkR0 : (0 : ℝ) < R := by linarith [hR1]\n set ρ' : ℂ := if 0 ≤ s.im then s else (starRingEnd ℂ) s with hρ'\n have hρ'z : IsNontrivialZero ρ' := by\n rw [hρ']\n by_cases him : 0 ≤ s.im\n · rw [if_pos him]; exact hz\n · rw [if_neg him]; exact isNontrivialZero_conj hz\n have hρ'im : ρ'.im = |s.im| := by\n rw [hρ']\n by_cases him : 0 ≤ s.im\n · rw [if_pos him]; exact abs_of_nonneg him\n · rw [if_neg him, Complex.conj_im]\n exact abs_of_neg (lt_of_not_ge him)\n -- |im ρ' − R| = R − |im s| ≤ 1/R < min 1 (1/(16Ĉ₀)): contradiction\n have hgap' := hgap ρ' hρ'z\n rw [hρ'im] at hgap'\n have hdist : |(|s.im| : ℝ) - R| = R - |s.im| :=\n abs_of_nonpos (by linarith [ht_le])\n rw [hdist] at hgap'\n have hsmall : R - |s.im| < 1 / (16 * C0hat (4 * (k : ℝ) + 9 / 2)) := by\n have h1 : 1 / R < 1 / (16 * C0hat (4 * (k : ℝ) + 9 / 2)) := by\n apply one_div_lt_one_div_of_lt\n · have hpos : (0 : ℝ) < 16 * C0hat (4 * (k : ℝ) + 9 / 2) := by\n linarith [hĈ2]\n exact hpos\n · exact h16\n linarith [hRt_le, h1]\n have hsmall1 : R - |s.im| < 1 := by\n have h1 : 1 / R < 1 := by\n apply one_div_lt_one_of_lt_one\n · exact hR1\n · exact hR1\n linarith [hRt_le, h1]\n rcases hgap' with h | h\n · linarith [h, hsmall]\n · linarith [h, hsmall1]\n\nend NguyenRH1\n\nend"},"extra_content":null}]