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
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)