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

equivalenceOn_urel

Carleson.Discrete.ForestUnion ยท Carleson/Discrete/ForestUnion.lean:235 to 278

Source documentation

Lemma 5.4.2.

Exact Lean statement

lemma equivalenceOn_urel : EquivalenceOn (URel (X := X) k n j) (๐”˜โ‚‚ k n j) where
  refl _ _

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma equivalenceOn_urel : EquivalenceOn (URel (X := X) k n j) (๐”˜โ‚‚ k n j) where  refl _ _ := .rfl  trans {x y z} mx my mz xy yz := by    by_cases xny : x = y; ยท rwa [xny]    have xye := URel.eq mx my xy    have hxy := URel.not_disjoint mx my xy    rw [not_disjoint_iff] at hxy    obtain โŸจ(ฯ‘ : ฮ˜ X), (ฯ‘x : ฯ‘ โˆˆ ball_{๐“˜ x} (๐’ฌ x) 100), (ฯ‘y : ฯ‘ โˆˆ ball_{๐“˜ y} (๐’ฌ y) 100)โŸฉ := hxy    have yze := URel.eq my mz yz    have hyz := URel.not_disjoint my mz yz    rw [not_disjoint_iff] at hyz    obtain โŸจ(ฮธ : ฮ˜ X), (ฮธy : ฮธ โˆˆ ball_{๐“˜ y} (๐’ฌ y) 100), (ฮธz : ฮธ โˆˆ ball_{๐“˜ z} (๐’ฌ z) 100)โŸฉ := hyz    simp_rw [URel, xny, false_or] at xy; obtain โŸจp, mp, spโŸฉ := xy    suffices ball_(z) (๐’ฌ z) 1 โІ ball_(x) (๐’ฌ x) 500 by      right; use p, mp; obtain โŸจ_, np, slโŸฉ := mp      have w : ball_(x) (๐’ฌ x) 500 โІ ball_(p) (๐’ฌ p) 4 := (wiggle_order_500 sl np).2      exact โŸจ(yze โ–ธ xye โ–ธ sl.1 : ๐“˜ p โ‰ค ๐“˜ z), (this.trans w).trans (ball_subset_ball (by norm_num))โŸฉ    intro (q : ฮ˜ X) (mq : q โˆˆ ball_{๐“˜ z} (๐’ฌ z) 1)    calc      _ โ‰ค dist_(x) q ฯ‘ + dist_(x) ฯ‘ (๐’ฌ x) := dist_triangle ..      _ < dist_(x) q ฯ‘ + 100 := by        change dist_(x) ฯ‘ (๐’ฌ x) < 100 at ฯ‘x        gcongr      _ โ‰ค dist_(x) q (๐’ฌ y) + dist_(x) ฯ‘ (๐’ฌ y) + 100 := by        gcongr        exact dist_triangle_right ..      _ < dist_(x) q (๐’ฌ y) + 100 + 100 := by        have : dist_(x) ฯ‘ (๐’ฌ y) < 100 := by rwa [โ† xye] at ฯ‘y        gcongr      _ โ‰ค dist_(x) q ฮธ + dist_(x) ฮธ (๐’ฌ y) + 100 + 100 := by gcongr; exact dist_triangle ..      _ < dist_(x) q ฮธ + 100 + 100 + 100 := by        have : dist_(x) ฮธ (๐’ฌ y) < 100 := by rwa [โ† xye] at ฮธy        gcongr      _ โ‰ค dist_(x) q (๐’ฌ z) + dist_(x) ฮธ (๐’ฌ z) + 100 + 100 + 100 := by        gcongr; exact dist_triangle_right ..      _ < 1 + 100 + 100 + 100 + 100 := by        have : dist_(x) ฮธ (๐’ฌ z) < 100 := by rwa [โ† yze, โ† xye] at ฮธz        gcongr        have hc : ๐”  x = ๐”  z := (congr_arg c xye).trans (congr_arg c yze)        have hs : ๐”ฐ x = ๐”ฐ z := (congr_arg s xye).trans (congr_arg s yze)        rw [hc, hs]        exact mq      _ < _ := by norm_num  symm {x y} mx my xy := urel_of_not_disjoint my (URel.eq mx my xy) (URel.not_disjoint mx my xy)