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

chain_property_set_has_bound

Carleson.TileExistence · Carleson/TileExistence.lean:123 to 170

Mathematical statement

Exact Lean statement

lemma chain_property_set_has_bound (k : ℤ) :
    ∀ c ⊆ property_set X k, IsChain (· ⊆ ·) c →
      ∃ ub ∈ property_set X k, ∀ s ∈ c, s ⊆ ub

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma chain_property_set_has_bound (k : ) :     c  property_set X k, IsChain (·  ·) c        ub  property_set X k,  s  c, s  ub := by  intro c hc hchain  use (⋃ s  c,s) ∪ (if k = S then {o} else ∅)  by_cases h : c =  · simpa [h] using property_set_nonempty X k  have h :  z, z  c := by    rw [Set.ext_iff] at h    push Not at h    simpa using h  have : (⋃ s  c,s) ∪ (if k = S then ({o} : Set X) else ∅) = (⋃ s  c,s) := by    ext x    constructor    · rintro (l | r)      · exact l      simp only [mem_ite_empty_right, mem_singleton_iff] at r      obtain z, hz := h      rw [r.right]      push _  _      use z, hz      specialize hc hz      dsimp only [property_set] at hc      rw [mem_setOf_eq] at hc      exact hc.right.right r.left    · exact fun hex  Or.intro_left (x  if k = ↑S then {o} else ∅) hex  simp_rw [this]  dsimp only [property_set] at hc   simp only [mem_setOf_eq, iUnion_subset_iff]  constructor  · constructor    · intro i hi      specialize hc hi      rw [mem_setOf_eq] at hc      exact hc.left    constructor    · intro x hx y hy      push _  _ at hx hy      obtain sx, hsx, hsx' := hx      obtain sy, hsy, hsy' := hy      obtain hxy | hyx := hchain.total hsx hsy      · exact (hc hsy).right.left (hxy hsx') hsy'      · exact (hc hsx).right.left hsx' (hyx hsy')    · obtain x,hx := h      intro hk      push _  _      exact x, hx, (hc hx).right.right hk  · exact fun s a  subset_iUnion₂_of_subset s a fun ⦃a⦄ a  a