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

ball_covering_finite

Carleson.TwoSidedCarleson.WeakCalderonZygmund · Carleson/TwoSidedCarleson/WeakCalderonZygmund.lean:360 to 425

Mathematical statement

Exact Lean statement

lemma ball_covering_finite (hO : IsOpen O ∧ O ≠ univ) {U : Set X} {r' : X → ℝ} (fU : U.Finite)
    (pdU : U.PairwiseDisjoint fun c ↦ ball c (r' c)) (U₃ : ⋃ c ∈ U, ball c (3 * r' c) = O)
    (U₇ : ∀ c ∈ U, ¬Disjoint (ball c (7 * r' c)) Oᶜ)
    (Ubi : ∀ x ∈ O, {c ∈ U | x ∈ ball c (3 * r' c)}.encard ≤ (2 ^ (6 * a) : ℕ)) :
    ∃ (c : ℕ → X) (r : ℕ → ℝ), (univ.PairwiseDisjoint fun i ↦ ball (c i) (r i)) ∧
      ⋃ i, ball (c i) (3 * r i) = O ∧ (∀ i, 0 < r i → ¬Disjoint (ball (c i) (7 * r i)) Oᶜ) ∧
      ∀ x ∈ O, {i | x ∈ ball (c i) (3 * r i)}.encard ≤ (2 ^ (6 * a) : ℕ)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma ball_covering_finite (hO : IsOpen O  O  univ) {U : Set X} {r' : X  } (fU : U.Finite)    (pdU : U.PairwiseDisjoint fun c  ball c (r' c)) (U₃ : ⋃ c  U, ball c (3 * r' c) = O)    (U₇ :  c  U, ¬Disjoint (ball c (7 * r' c)) Oᶜ)    (Ubi :  x  O, {c  U | x  ball c (3 * r' c)}.encard  (2 ^ (6 * a) : )) :     (c :   X) (r :   ), (univ.PairwiseDisjoint fun i  ball (c i) (r i))       ⋃ i, ball (c i) (3 * r i) = O  ( i, 0 < r i  ¬Disjoint (ball (c i) (7 * r i)) Oᶜ)        x  O, {i | x  ball (c i) (3 * r i)}.encard  (2 ^ (6 * a) : ) := by  lift U to Finset X using fU  obtain p, -⟩ := (ne_univ_iff_exists_notMem _).mp hO.2  let e := U.equivFin  let c (i : ) : X := if hi : i < U.card then (e.symm _, hi).1 else p  let r (i : ) :  := if hi : i < U.card then r' (c i) else 0  refine c, r, fun i mi j mj hn  ?_, ?_, fun i hi  ?_, fun x mx  ?_  · change Disjoint (ball _ _) (ball _ _)    by_cases hi : i < U.card; swap    · simp_rw [r, hi, dite_false, ball_zero, empty_disjoint]    have hic : c i  U := by simp [c, hi]    by_cases hj : j < U.card; swap    · simp_rw [r, hj, dite_false, ball_zero, disjoint_empty]    have hjc : c j  U := by simp [c, hj]    simp_rw [r, hi, hj, dite_true]; apply pdU hic hjc    simp_rw [c, hi, hj, dite_true]; contrapose! hn    rwa [SetCoe.ext_iff, e.symm.apply_eq_iff_eq, Fin.mk.injEq] at hn  · rw [ U₃]; apply subset_antisymm    · refine iUnion_subset fun i  ?_      unfold r; split_ifs with hi      · convert subset_iUnion₂ (c i) _        · rfl        · simp_rw [c, hi, dite_true, Subtype.coe_prop]      · simp    · refine iUnion₂_subset fun x mx  ?_      let i := e x, mx; convert subset_iUnion _ i.1      simp_rw [r, c, i.2, dite_true, i, Fin.eta, Equiv.symm_apply_apply]  · unfold r at hi ; split_ifs with hi'    · simp_rw [Finset.mem_coe] at U₇      have mi : c i  U := by simp_rw [c, hi', dite_true]; exact Finset.coe_mem _      exact U₇ _ mi    · simp_rw [hi', dite_false, lt_self_iff_false] at hi  · calc      _ = {i | ¬i < U.card  x  ball (c i) (3 * r i)}.encard +          {i | i < U.card  x  ball (c i) (3 * r i)}.encard := by        have : {i | x  ball (c i) (3 * r i)} =            {i | ¬ i < U.card  x  ball (c i) (3 * r i)} ∪                {i | i < U.card  x  ball (c i) (3 * r i)} := by          ext i; refine fun hx  ?_, fun h  ?_          · by_cases hi : i < U.card            exacts [Or.inr hi, hx, Or.inl hi, hx]          · rcases h with _, hx | _, hx <;> exact hx        rw [ encard_union_eq]        · congr        · exact disjoint_left.mpr fun i mi₁ mi₂  mi₁.1 mi₂.1      _ = 0 + {u  SetLike.coe U | x  ball u (3 * r' u)}.encard := by        congr        · simp_rw [encard_eq_zero, eq_empty_iff_forall_notMem, mem_setOf_eq, not_and]; intro i hi          simp [r, hi]        · set A := {i | i < U.card  x  ball (c i) (3 * r i)}          set B := {u  SetLike.coe U | x  ball u (3 * r' u)}          let f (i : A) : B := e.symm i.1, i.2.1, by            refine Subtype.coe_prop _, ?_            have := i.2.2; simp_rw [r, c, i.2.1, dite_true] at this; exact this          let g (u : B) : A := e u.1, u.2.1, by            simp_rw [A, r, c, mem_setOf_eq, Fin.is_lt, dite_true, Fin.eta, Equiv.symm_apply_apply,              u.2.2, true_and]          let eqv : A ≃ B := f, g, fun i  by simp [f, g], fun u  by simp [f, g]          exact encard_congr eqv      _  _ := by rw [zero_add]; exact Ubi x mx