Skip to main content
fpvandoorn/carleson
Source indexedlemma · leanprover/lean4:v4.32.0

transitive_boundary'

Carleson.TileExistence · Carleson/TileExistence.lean:809 to 883

Mathematical statement

Exact Lean statement

lemma transitive_boundary' {k1 k2 k3 : ℤ} (hk1 : -S ≤ k1) (hk2 : -S ≤ k2) (hk3 : -S ≤ k3)
  (hk1_2 : k1 < k2) (hk2_3 : k2 ≤ k3) (y1 : Yk X k1) (y2 : Yk X k2) (y3 : Yk X k3)
    (x : X) (hx : x ∈ I3 hk1 y1 ∩ I3 hk2 y2 ∩ I3 hk3 y3) :
    clProp(hk1,y1|hk3,y3) → (clProp(hk1,y1|hk2,y2) ∧ clProp(hk2,y2|hk3,y3))

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma transitive_boundary' {k1 k2 k3 : } (hk1 : -S  k1) (hk2 : -S  k2) (hk3 : -S  k3)  (hk1_2 : k1 < k2) (hk2_3 : k2  k3) (y1 : Yk X k1) (y2 : Yk X k2) (y3 : Yk X k3)    (x : X) (hx : x  I3 hk1 y1 ∩ I3 hk2 y2 ∩ I3 hk3 y3) :    clProp(hk1,y1|hk3,y3)  (clProp(hk1,y1|hk2,y2)  clProp(hk2,y2|hk3,y3)) := by  rintro _, hx'  have hi3_1_2 : I3 hk1 y1  I3 hk2 y2 := by    apply dyadic_property hk1 hk1_2.le hk2 y2 y1    rw [not_disjoint_iff]    exact x, hx.left.left, hx.left.right  have hi3_2_3 : I3 hk2 y2  I3 hk3 y3 := by    apply dyadic_property hk2 hk2_3 hk3 y3 y2    rw [not_disjoint_iff]    exact x, hx.left.right, hx.right  have hx_4k2 : x  ball (y2 : X) (4 * D ^ k2) := I3_prop_3_2 hk2 y2 hx.left.right  have hx_4k2' : x  ball (y1 : X) (4 * D ^ k1) := I3_prop_3_2 hk1 y1 hx.left.left  have hd_nzero : (D : 0∞)  0 := by    apply LT.lt.ne'    rw [ ENNReal.ofReal_natCast, ENNReal.ofReal_pos]    exact realD_pos a  have hdp_nzero :  (z:),(D ^ z :0∞)  0 := by    intro z    exact (ENNReal.zpow_pos hd_nzero (by finiteness) _).ne'  have hdp_finit42 : (D ^ 42 : 0∞) := by finiteness  refine ⟨⟨hi3_1_2, ?_, hi3_2_3, ?_⟩⟩  · apply lt_of_le_of_lt (Metric.infEDist_anti _) hx'    rw [compl_subset_compl]    exact hi3_2_3  · rw [ eball_ofReal, Metric.mem_eball] at hx_4k2 hx_4k2'    rw [edist_comm] at hx_4k2'    rw [ Real.rpow_intCast] at hx_4k2 hx_4k2'    rw [ENNReal.ofReal_mul (by norm_num),  ENNReal.ofReal_rpow_of_pos (realD_pos a),      ENNReal.ofReal_ofNat,ENNReal.ofReal_natCast,ENNReal.rpow_intCast] at hx_4k2 hx_4k2'    calc      Metric.infEDist (y2 : X) (I3 hk3 y3)ᶜ         edist (y2 : X) (y1 : X) + Metric.infEDist (y1 : X) (I3 hk3 y3)ᶜ :=          Metric.infEDist_le_edist_add_infEDist      _ = Metric.infEDist (y1 : X) (I3 hk3 y3)ᶜ + edist (y1 : X) (y2 : X) := by        rw [add_comm,edist_comm]      _  Metric.infEDist (y1 : X) (I3 hk3 y3)ᶜ +          (edist (y1:X) x + edist x y2) := by        rw [ENNReal.add_le_add_iff_left hx'.ne_top]        exact edist_triangle (↑y1) x ↑y2      _ < Metric.infEDist (y1 : X) (I3 hk3 y3)ᶜ + edist (y1 : X) x + 4 * D ^ k2 := by        rw [ add_assoc, ENNReal.add_lt_add_iff_left (by finiteness)]        exact hx_4k2      _ < 6 * D ^ k1 + 4 * D ^ k1 + 4 * D ^ k2 := by        rw [ENNReal.add_lt_add_iff_right]        · apply ENNReal.add_lt_add hx' hx_4k2'        · finiteness      _  2 * D ^ k2 + 4 * D ^ k2 := by        rw [ right_distrib 6 4 (D ^ k1 : 0∞)]        have hz : (6 + 4 : 0∞) = 2 * 5 := by norm_num        rw [hz, ENNReal.add_le_add_iff_right, mul_assoc]        · gcongr          calc            (5 * D ^ k1 : 0∞)               D * D ^ k1 := by                gcongr                rw [ ENNReal.ofReal_ofNat, ENNReal.ofReal_natCast,                  ENNReal.ofReal_le_ofReal_iff <| realD_nonneg a]                exact five_le_realD X            _  D ^ k2 := by              nth_rw 1 [ zpow_one (D : 0∞)]              simp_rw [ ENNReal.rpow_intCast]              rw [ ENNReal.rpow_add _ _ hd_nzero (by finiteness), Int.cast_add]              apply ENNReal.rpow_le_rpow_of_exponent_le              · rw [ ENNReal.ofReal_one, ENNReal.ofReal_natCast]                rw [ENNReal.ofReal_le_ofReal_iff <| realD_nonneg a]                exact one_le_realD a              simp only [Int.cast_le]              linarith        · finiteness      _ = 6 * D ^ k2 := by        rw [ right_distrib]        norm_num