fpvandoorn/carleson
Source indexedlemma ยท leanprover/lean4:v4.32.0
iUnion_L0'
Carleson.Discrete.ForestComplement ยท Carleson/Discrete/ForestComplement.lean:445 to 517
Source documentation
Main part of Lemma 5.5.2.
Exact Lean statement
lemma iUnion_L0' : โ (l < n), ๐โ' (X := X) k n l = ๐โ k n
Complete declaration
Lean source
Full Lean sourceLean 4
lemma iUnion_L0' : โ (l < n), ๐โ' (X := X) k n l = ๐โ k n := by classical refine iUnion_lt_minLayer_iff_bounded_series.mpr fun p โฆ ?_ suffices ยฌโ s : LTSeries (๐โ (X := X) k n), s.length = n by rcases lt_or_ge p.length n with c | c ยท exact c ยท exact absurd โจp.take โจn, by liaโฉ, by rw [RelSeries.take_length]โฉ this by_contra h; obtain โจs, hsโฉ := h; let sl := s.last; have dsl := sl.2.1.2.1 simp_rw [dens', lt_iSup_iff, mem_singleton_iff, exists_prop, exists_eq_left] at dsl obtain โจl, hl, p', mp', sp', qp'โฉ := dsl obtain โจb, mb, qbโฉ := exists_๐_with_le_quotient hl qp' have ๐p'b : ๐ p' = ๐ b := by rw [๐, Finset.mem_filter] at mb; exact mb.2.1.symm replace qb := ENNReal.mul_lt_of_lt_div qb have mba : b โ (aux๐ k n).toFinset := by simp_rw [mem_toFinset, aux๐, mem_setOf, qb, and_true]; rw [TilesAt, mem_preimage] at mp' โข exact ๐p'b โธ mp' obtain โจm, lm, maxmโฉ := (aux๐ k n).toFinset.exists_le_maximal mba replace maxm : m โ ๐ k n := by simpa only [mem_toFinset] using! maxm -- We will now show a contradiction. As a member of `๐โ k n` the _first_ element `sโ` of the -- `LTSeries s` satisfies `๐
k n sโ = โ
`. But we will show that `m โ ๐
k n sโ`, -- i.e. `smul 100 sโ โค smul 1 m`. let sโ := s.head; apply absurd sโ.2.2; rw [โ ne_eq, โ nonempty_iff_ne_empty]; use m, maxm constructor ยท have l1 : ๐ sโ.1 โค ๐ sl.1 := s.head_le_last.1 have l2 : ๐ sl.1 โค ๐ b := ๐p'b โธ sp'.1 exact (l1.trans l2).trans lm.1 change ball_(m) (๐ฌ m) 1 โ ball_(sโ.1) (๐ฌ sโ.1) 100; intro (ฮธ : ฮ X) mฮธ; rw [mem_ball] at mฮธ have aux : dist_(sl.1) (๐ฌ sl.1) ฮธ < 2 * l + 3 := calc _ โค dist_(sl.1) (๐ฌ sl.1) (๐ฌ p') + dist_(sl.1) (๐ฌ p') ฮธ := dist_triangle .. _ < l + dist_(sl.1) (๐ฌ p') ฮธ := by apply add_lt_add_left have : ๐ฌ p' โ ball_(p') (๐ฌ p') l := by convert! mem_ball_self (zero_lt_two.trans_le hl) exact mem_ball'.mp (sp'.2 this) _ โค l + dist_(p') (๐ฌ p') ฮธ := add_le_add_right (Grid.dist_mono sp'.1) _ _ โค l + dist_(p') (๐ฌ p') (๐ฌ b) + dist_(p') (๐ฌ b) ฮธ := by rw [add_assoc]; apply add_le_add_right; exact dist_triangle .. _ โค l + (l + 1) + dist_(b) (๐ฌ b) ฮธ := by gcongr ยท rw [๐, Finset.mem_filter] at mb obtain โจ(x : ฮ X), xโ, xโโฉ := not_disjoint_iff.mp mb.2.2 calc _ โค dist_(p') x (๐ฌ p') + dist_(p') x (๐ฌ b) := dist_triangle_left .. _ โค _ := by apply add_le_add xโ.le change dist_{๐ p'} x (๐ฌ b) โค 1; rw [๐p'b] exact (_root_.subset_cball xโ).le ยท change dist_{๐ p'} (๐ฌ b) ฮธ โค dist_{๐ b} (๐ฌ b) ฮธ; rw [๐p'b] _ โค l + (l + 1) + (dist_(b) (๐ฌ m) (๐ฌ b) + dist_(b) (๐ฌ m) ฮธ) := add_le_add_right (dist_triangle_left ..) _ _ โค l + (l + 1) + (1 + dist_(m) (๐ฌ m) ฮธ) := by gcongr ยท exact (dist_๐ฌ_lt_one_of_le lm).le ยท exact Grid.dist_mono lm.1 _ < l + (l + 1) + (1 + 1) := by gcongr; exact mem_ball'.mp mฮธ _ = _ := by ring calc _ โค dist_(sโ.1) (๐ฌ sl.1) ฮธ + dist_(sโ.1) (๐ฌ sl.1) (๐ฌ sโ.1) := dist_triangle_left .. _ < 1 + dist_(sโ.1) (๐ฌ sl.1) ฮธ := by rw [add_comm]; exact add_lt_add_left (dist_๐ฌ_lt_one_of_le s.head_le_last) _ _ โค 1 + C2_1_2 a ^ n * dist_(sl.1) (๐ฌ sl.1) ฮธ := add_le_add_right (dist_LTSeries hs) _ _ < 1 + C2_1_2 a ^ n * (2 * l + 3) := by gcongr; rw [C2_1_2]; positivity _ โค 1 + (1 / 256) ^ n * (2 * 2 ^ n + 3) := by gcongr ยท rw [C2_1_2]; positivity ยท exact C2_1_2_le_inv_256 X ยท exact_mod_cast (l_upper_bound hl qp').le _ = 1 + 2 * (2 / 256) ^ n + (1 / 256) ^ n * 3 := by simp [div_pow]; ring _ โค 1 + 2 * (2 / 256) ^ 0 + (1 / 256) ^ 0 * 3 := by gcongr 1 + 2 * ?_ + ?_ * 3 <;> exact pow_le_pow_of_le_one (by norm_num) (by norm_num) (by lia) _ < _ := by norm_num