fpvandoorn/carleson
Source indexedlemma Β· leanprover/lean4:v4.32.0
exists_k_n_of_mem_πpos
Carleson.Discrete.ForestComplement Β· Carleson/Discrete/ForestComplement.lean:103 to 135
Mathematical statement
Exact Lean statement
lemma exists_k_n_of_mem_πpos (h : p β πpos (X := X)) : β k n, p β β k n β§ k β€ n
Complete declaration
Lean source
Full Lean sourceLean 4
lemma exists_k_n_of_mem_πpos (h : p β πpos (X := X)) : β k n, p β β k n β§ k β€ n := by obtain β¨k, mpβ© := exists_k_of_mem_πpos h; use k have dens'_pos : 0 < dens' k {p} := dens'_pos_of_mem_πpos h mp have dens'_le : dens' k {p} β€ 2 ^ (-k : β€) := dens'_le_of_mem_πpos h have dens'_lt_top : dens' k {p} < β€ := dens'_le.trans_lt (ENNReal.zpow_lt_top (by simp) (by simp) _) have dens'_toReal_pos : 0 < (dens' k {p}).toReal := ENNReal.toReal_pos dens'_pos.ne' dens'_lt_top.ne -- 2 ^ (4 * a - n) < dens' k {p} β€ 2 ^ (4 * a - n + 1) -- 4 * a - n < log_2 dens' k {p} β€ 4 * a - n + 1 -- -n < log_2 dens' k {p} - 4 * a β€ -n + 1 -- n - 1 β€ 4 * a - log_2 dens' k {p} < n -- n β€ 4 * a - log_2 dens' k {p} + 1 < n + 1 -- n = 4 * a + β-log_2 dens' k {p}β + 1 let v : β := -Real.logb 2 (dens' k {p}).toReal have klv : k β€ v := by rw [le_neg, Real.logb_le_iff_le_rpow one_lt_two dens'_toReal_pos, show (2 : β) = (2 : ββ₯0β).toReal by rfl, ENNReal.toReal_rpow, ENNReal.toReal_le_toReal dens'_lt_top.ne (by simp)] exact_mod_cast dens'_le have klq : k β€ βvββ := Nat.le_floor klv let n : β := 4 * a + βvββ + 1; use n; refine β¨β¨mp, ?_β©, by liaβ© rw [show 4 * (a : β€) - (4 * a + βvββ + 1 : β) = (-βvββ - 1 : β€) by lia, sub_add_cancel, mem_Ioc, β ENNReal.ofReal_toReal dens'_lt_top.ne, β ENNReal.rpow_intCast, β ENNReal.rpow_intCast, show (2 : ββ₯0β) = ENNReal.ofReal (2 : β) by norm_cast, ENNReal.ofReal_rpow_of_pos zero_lt_two, ENNReal.ofReal_rpow_of_pos zero_lt_two, ENNReal.ofReal_lt_ofReal_iff dens'_toReal_pos, ENNReal.ofReal_le_ofReal_iff (by positivity), β Real.logb_le_iff_le_rpow one_lt_two dens'_toReal_pos, β Real.lt_logb_iff_rpow_lt one_lt_two dens'_toReal_pos, Int.cast_sub, Int.cast_neg, Int.cast_natCast, Int.cast_one, neg_sub_left, neg_lt, le_neg] constructor Β· rw [add_comm]; exact_mod_cast Nat.lt_succ_floor _ Β· exact Nat.floor_le ((Nat.cast_nonneg' k).trans klv)