Carleson Blueprint

1.5. Proof of discrete Carleson🔗

Let a grid structure (\mathcal{D}, c, s) and a tile structure (\fP, \scI, \fc, \fcc) for this grid structure be given. In [??], we decompose the set \fP of tiles into subsets. Each subset will be controlled by one of three methods. The guiding principle of the decomposition is to be able to apply the forest estimate of Theorem 1.7 to the final subsets defined in defc5. This application is done in [??]. The miscellaneous subsets along the construction of the forests will either be thrown into exceptional sets, which are defined and controlled in [??], or will be controlled by the antichain estimate of Theorem 1.6, which is done in [??]. [??] contains some auxiliary lemmas needed for the proofs in Subsections [??]-[??].

1.5.1. Organisation of the tiles🔗

In the following definitions, k, n, and j will be nonnegative integers. Define \mathcal{C}(G,k) to be the set of I\in \mathcal{D} such that there exists a J\in \mathcal{D} with I\subset J and {\mu(G \cap J)} > 2^{-k-1}{\mu(J)}, but there does not exist a J\in \mathcal{D} with I\subset J and {\mu(G \cap J)} > 2^{-k}{\mu(J)}. Let \fP(k)=\{\fp\in \fP \ : \ \scI(\fp)\in \mathcal{C}(G,k)\} Define {\mathfrak{M}}(k,n) to be the set of \fp \in \fP(k) such that \mu({E_1}(\fp)) > 2^{-n} \mu(\scI(\fp)) and there does not exist \fp'\in \fP(k) with \fp'\neq \fp and \fp\le \fp' such that \mu({E_1}(\fp')) > 2^{-n} \mu(\scI(\fp')). Define for a collection \fP'\subset \fP(k) \dens_k' (\fP'):= \sup_{\fp'\in \fP'}\sup_{\lambda \geq 2} \lambda^{-a} \sup_{\fp \in \fP(k): \lambda \fp' \lesssim \lambda \fp} \frac{\mu({E}_2(\lambda, \fp))}{\mu(\scI(\fp))}. Sorting by density, we define \fC(k,n):=\{\fp\in \fP(k) \ : \ 2^{4a}2^{-n}< \dens_k'(\{\fp\}) \le 2^{4a}2^{-n+1}\}. Following Fefferman, we define for \fp \in \fC(k,n) \mathfrak{B}(\fp) := \{ \mathfrak{m} \in \mathfrak{M}(k,n) \ : \ 100 \fp \lesssim \mathfrak{m}\} and \fC_1(k,n,j) := \{\fp \in \fC(k,n) \ : \ 2^{j} \leq |\mathfrak{B}(\fp)| < 2^{j+1}\}, and \fL_0(k,n) := \{\fp \in \fC(k,n) \ : \ |\mathfrak{B}(\fp)| <1\}. Together with the following removal of minimal layers, the splitting into \fC_1(k,n,j) will lead to a separation of trees. Define recursively for 0\le l\le Z(n+1) \fL_1(k,n,j,l) to be the set of minimal elements with respect to \le in \fC_1(k,n,j)\setminus \bigcup_{0\le l'<l} \fL_1(k,n,j,l'). Define \fC_2(k,n,j):= \fC_1(k,n,j)\setminus \bigcup_{0\le l'\le Z(n+1)} \fL_1(k,n,j,l'). The remaining tile organization will be relative to prospective tree tops, which we define now. Define \fU_1(k,n,j) to be the set of all \fu \in \fC_1(k,n,j) such that for all \fp \in \fC_1(k,n,j) with \scI(\fu) strictly contained in \scI(\fp) we have B_{\fu}(\fcc(\fu), 100) \cap B_{\fp}(\fcc(\fp),100) = \emptyset. We first remove the pairs that are outside the immediate reach of any of the prospective tree tops. Define \fL_2(k,n,j) to be the set of all \fp\in \fC_2(k,n,j) such that there does not exist \fu\in \fU_1(k,n,j) with \scI(\fp)\neq \scI(\fu) and 2\fp\lesssim \fu. Define \fC_3(k,n,j):=\fC_2(k,n,j) \setminus \fL_2(k,n,j). We next remove the maximal layers. Define recursively for 0 \le l \le Z(n+1) \fL_3(k,n,j,l) to be the set of all maximal elements with respect to \le in \fC_3(k,n,j) \setminus \bigcup_{0 \le l' < l} \fL_3(k,n,j,l'). Define \fC_4(k,n,j):=\fC_3(k,n,j) \setminus \bigcup_{0 \le l \le Z(n+1)} \fL_3(k,n,j,l).

Finally, we remove the boundary pairs relative to the prospective tree tops. Define \mathcal{L}(\fu) to be the set of all I \in \mathcal{D} with I \subset \scI(\fu) and s(I) = \ps(\fu) - Z(n+1) - 1 and B(c(I), 8 D^{s(I)})\not \subset \scI(\fu). Define \fL_4(k,n,j) to be the set of all \fp\in \fC_4(k,n,j) such that there exists \fu\in \fU_1(k,n,j) with \scI(\fp) \subset \bigcup \mathcal{L}(\fu), and define \fC_5(k,n,j):=\fC_4(k,n,j) \setminus \fL_4(k,n,j).

We define three exceptional sets. The first exceptional set G_1 takes into account the ratio of the measures of F and G. Define \fP_{F,G} to be the set of all \fp\in \fP with \dens_2(\{\fp\})> 2^{2a+5}\frac{\mu(F)}{\mu(G)}. Define G_1:=\bigcup_{\fp\in \fP_{F,G} }\scI(\fp). For an integer \lambda\ge 0, define A(\lambda,k,n) to be the set of all x\in X such that \sum_{\fp \in \mathfrak{M}(k,n)}\mathbf{1}_{\scI(\fp)}(x)>\lambda 2^{n+1} and define G_2:= \bigcup_{k\ge 0}\bigcup_{k\le n} A(2n+6,k,n). Define G_3 := \bigcup_{k\ge 0}\, \bigcup_{n \geq k}\, \bigcup_{0\le j\le 2n+3} \bigcup_{\fp \in \fL_4 (k,n,j)} \scI(\fp). Define G'=G_1\cup G_2 \cup G_3. The following bound of the measure of G' will be proven in [??].

Lemma1.32
L∃∀Nused by 1

Uses Lemma 1.35, Lemma 1.40, and Lemma 1.44. We have \mu(G')\le 2^{-1}\mu(G).

Lean code for Lemma1.321 theorem
  • complete
    theorem exceptional_set.{u_1}exceptional_set.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      MeasureTheory.volume G' ≤ 2 ^ (-1) * MeasureTheory.volume GLemma 5.1.1  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)] :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  G'G'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set XThe set `G'`, defined below (5.1.28).  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (-1) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    theorem exceptional_set.{u_1}exceptional_set.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      MeasureTheory.volume G' ≤ 2 ^ (-1) * MeasureTheory.volume GLemma 5.1.1  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)] :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  G'G'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set XThe set `G'`, defined below (5.1.28).  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (-1) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    Lemma 5.1.1 

In [??], we identify each set \fC_5(k,n,j) outside G' as a forest and use Proposition Theorem 1.7 to prove the following lemma.

Lemma1.33
L∃∀Nused by 1

Uses Theorem 1.7, Lemma 1.56, Lemma 1.59, Lemma 1.60, Lemma 1.61, Lemma 1.62, Lemma 1.63, and Lemma 1.64. Let \fP_1 =\bigcup_{k\ge 0}\bigcup_{n\ge k} \bigcup_{0\le j\le 2n+3}\fC_5(k,n,j) For all f:X\to \C with |f|\le \mathbf{1}_F we have \int_{G \setminus G'} \left|\sum_{\fp \in \fP_1} T_{\fp} f \right|\, \mathrm{d}\mu \le \frac{2^{441a^3}}{(q-1)^4} \mu(G)^{1 - \frac{1}{q}} \mu(F)^{\frac{1}{q}}.

Lean code for Lemma1.331 theorem
  • complete
    theorem forest_union.{u_1}forest_union.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {f : X → ℂ}
      (hf : ∀ (x : X), ‖f x‖ ≤ F.indicator 1 x) (h'f : Measurable f) :
      ∫⁻ (x : X) in G \ G', ‖carlesonSum 𝔓₁ f x‖ₑ ≤
        ↑(C5_1_2 a (nnq X)) * MeasureTheory.volume G ^ (1 - q⁻¹) * MeasureTheory.volume F ^ q⁻¹Lemma 5.1.2 in the blueprint: the integral of the Carleson sum over the set which can
    naturally be decomposed as a union of forests can be controlled, thanks to the estimate for
    a single forest.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } (hf∀ (x : X), ‖f x‖ ≤ F.indicator 1 x :  (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. FSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX)
      (h'fMeasurable f : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  fX → ℂ) :
      ∫⁻MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  (xX : XType u_1) inMeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  GSet X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. G'G'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set XThe set `G'`, defined below (5.1.28). ,MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  𝔓₁𝔓₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The set `𝔓₁`, defined in (5.1.30).  fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (C5_1_2C5_1_2 (a : ℕ) (q : NNReal) : NNRealThe constant used in Lemma 5.1.2.
    Has value `2 ^ (441 * a ^ 3) / (q - 1) ^ 4` in the blueprint.  a (nnqnnq.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : NNReal`q` as an element of `ℝ≥0`.  XType u_1)) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).1 -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). q⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  FSet X ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. q⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.
    theorem forest_union.{u_1}forest_union.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {f : X → ℂ}
      (hf : ∀ (x : X), ‖f x‖ ≤ F.indicator 1 x) (h'f : Measurable f) :
      ∫⁻ (x : X) in G \ G', ‖carlesonSum 𝔓₁ f x‖ₑ ≤
        ↑(C5_1_2 a (nnq X)) * MeasureTheory.volume G ^ (1 - q⁻¹) * MeasureTheory.volume F ^ q⁻¹Lemma 5.1.2 in the blueprint: the integral of the Carleson sum over the set which can
    naturally be decomposed as a union of forests can be controlled, thanks to the estimate for
    a single forest.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hf∀ (x : X), ‖f x‖ ≤ F.indicator 1 x :
         (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. FSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX)
      (h'fMeasurable f : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  fX → ℂ) :
      ∫⁻MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  (xX : XType u_1) inMeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  GSet X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. G'G'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set XThe set `G'`, defined below (5.1.28). ,MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`. 
          ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  𝔓₁𝔓₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The set `𝔓₁`, defined in (5.1.30).  fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (C5_1_2C5_1_2 (a : ℕ) (q : NNReal) : NNRealThe constant used in Lemma 5.1.2.
    Has value `2 ^ (441 * a ^ 3) / (q - 1) ^ 4` in the blueprint.  a (nnqnnq.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : NNReal`q` as an element of `ℝ≥0`.  XType u_1)) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
              (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).1 -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). q⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  FSet X ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. q⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.
    Lemma 5.1.2 in the blueprint: the integral of the Carleson sum over the set which can
    naturally be decomposed as a union of forests can be controlled, thanks to the estimate for
    a single forest. 

In [??], we decompose the complement of the set of tiles in Lemma Lemma 1.33 and apply the antichain estimate of Theorem 1.6 to prove the following lemma.

Lemma1.34
L∃∀Nused by 1

Uses Theorem 1.6, Lemma 1.65, Lemma 1.66, Lemma 1.67, Lemma 1.68, and Lemma 1.56. Let \fP_2 =\fP\setminus \fP_1. For all f:X\to \C with |f|\le \mathbf{1}_F we have \int_{G \setminus G'} \left|\sum_{\fp \in \fP_2} T_{\fp} f\right| \, \mathrm{d}\mu \le \frac{2^{120a^3}}{(q-1)^5} \mu(G)^{1 - \frac{1}{q}} \mu(F)^{\frac{1}{q}}.

Lean code for Lemma1.341 theorem
  • complete
    theorem forest_complement.{u_1}forest_complement.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {f : X → ℂ}
      (hf : ∀ (x : X), ‖f x‖ ≤ F.indicator 1 x) (h'f : Measurable f) :
      ∫⁻ (x : X) in G \ G', ‖carlesonSum 𝔓₁ᶜ f x‖ₑ ≤
        ↑(C5_1_3 a (nnq X)) * MeasureTheory.volume G ^ (1 - q⁻¹) * MeasureTheory.volume F ^ q⁻¹Lemma 5.1.3, proving the bound on the integral of the Carleson sum over all leftover tiles
    which do not fit in a forest. It follows from a careful grouping of these tiles into finitely
    many antichains.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } (hf∀ (x : X), ‖f x‖ ≤ F.indicator 1 x :  (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. FSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX)
      (h'fMeasurable f : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  fX → ℂ) :
      ∫⁻MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  (xX : XType u_1) inMeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  GSet X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. G'G'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set XThe set `G'`, defined below (5.1.28). ,MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  𝔓₁𝔓₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The set `𝔓₁`, defined in (5.1.30). Compl.compl.{u_1} {α : Type u_1} [self : Compl α] : α → αSet / lattice complement 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `ᶜ` in identifiers is `compl`. fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (C5_1_3C5_1_3 (a : ℕ) (q : NNReal) : NNRealThe constant used in Lemma 5.1.3.
    Has value `2 ^ (120 * a ^ 3) / (q - 1) ^ 5` in the blueprint.  a (nnqnnq.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : NNReal`q` as an element of `ℝ≥0`.  XType u_1)) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).1 -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). q⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  FSet X ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. q⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.
    theorem forest_complement.{u_1}forest_complement.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {f : X → ℂ}
      (hf : ∀ (x : X), ‖f x‖ ≤ F.indicator 1 x) (h'f : Measurable f) :
      ∫⁻ (x : X) in G \ G', ‖carlesonSum 𝔓₁ᶜ f x‖ₑ ≤
        ↑(C5_1_3 a (nnq X)) * MeasureTheory.volume G ^ (1 - q⁻¹) * MeasureTheory.volume F ^ q⁻¹Lemma 5.1.3, proving the bound on the integral of the Carleson sum over all leftover tiles
    which do not fit in a forest. It follows from a careful grouping of these tiles into finitely
    many antichains.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hf∀ (x : X), ‖f x‖ ≤ F.indicator 1 x :
         (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. FSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX)
      (h'fMeasurable f : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  fX → ℂ) :
      ∫⁻MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  (xX : XType u_1) inMeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  GSet X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. G'G'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set XThe set `G'`, defined below (5.1.28). ,MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`. 
          ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  𝔓₁𝔓₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The set `𝔓₁`, defined in (5.1.30). Compl.compl.{u_1} {α : Type u_1} [self : Compl α] : α → αSet / lattice complement 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `ᶜ` in identifiers is `compl`. fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (C5_1_3C5_1_3 (a : ℕ) (q : NNReal) : NNRealThe constant used in Lemma 5.1.3.
    Has value `2 ^ (120 * a ^ 3) / (q - 1) ^ 5` in the blueprint.  a (nnqnnq.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : NNReal`q` as an element of `ℝ≥0`.  XType u_1)) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
              (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).1 -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). q⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  FSet X ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. q⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.
    Lemma 5.1.3, proving the bound on the integral of the Carleson sum over all leftover tiles
    which do not fit in a forest. It follows from a careful grouping of these tiles into finitely
    many antichains. 

Proof of Theorem 1.5. Theorem 1.5 follows by applying the triangle inequality to disclesssim according to the splitting in Lemma 1.33 and Lemma 1.34 and using both lemmas as well as the bound on the set G' given by Lemma 1.32.

1.5.2. Proof of the Exceptional Sets Lemma🔗

We prove separate bounds for G_1, G_2, and G_3 in Lemmas Lemma 1.35, Lemma 1.40, and Lemma 1.44. Adding up these bounds proves Lemma 1.32. The bound for G_1 follows from the Vitali covering lemma, Theorem 1.9.

Lemma1.35
L∃∀Nused by 1

Uses Theorem 1.9. We have \mu(G_1)\le 2^{-5}\mu(G).

Lean code for Lemma1.351 theorem
  • complete
    theorem first_exception.{u_1}first_exception.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      MeasureTheory.volume G₁ ≤ 2 ^ (-4) * MeasureTheory.volume G {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)] :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  G₁G₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set XThe exceptional set `G₁`, defined in (5.1.25).  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (-4) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    theorem first_exception.{u_1}first_exception.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      MeasureTheory.volume G₁ ≤ 2 ^ (-4) * MeasureTheory.volume G {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)] :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  G₁G₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set XThe exceptional set `G₁`, defined in (5.1.25).  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (-4) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X

Proof. Let K = 2^{2a+5}\frac{\mu(F)}{\mu(G)}. For each \fp\in \fP_{F,G} pick a r(\fp)>4D^{\ps(\fp)} with {\mu(F\cap B(\pc(\fp),r(\fp)))}\ge K{\mu(B(\pc(\fp),r(\fp)))}. This ball exists by definition of \fP_{F,G} and dens_2. By applying Theorem 1.9 to the collection of balls \mathcal{B} = \{B(\pc(\fp),r(\fp)) \ : \ \fp \in \fP_{F,G}\} and the function u = \mathbf{1}_F, we obtain \mu(\bigcup \mathcal{B}) \le 2^{2a} K^{-1} \mu(F). We conclude with eq-vol-sp-cube and r(\fp)>4D^{\ps(\fp)} \mu(G_1)= \mu(\bigcup_{\fp\in \fP_{F,G}} \scI(\fp)) \le \mu(\bigcup \mathcal{B})\le 2^{2a} K^{-1} \mu (F) = 2^{-5}\mu(G).

We turn to the bound of G_2, which relies on the Dyadic Covering Lemma 1.36 and the John-Nirenberg Lemma 1.39 below.

Lemma1.36
L∃∀Nused by 1

For each k\ge 0, the union of all dyadic cubes in \mathcal{C}(G,k) has measure at most 2^{k+1} \mu(G).

Lean code for Lemma1.361 theorem
  • complete
    theorem dense_cover.{u_1}dense_cover.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k : ℕ) :
      MeasureTheory.volume (⋃ i ∈ 𝓒 k, ↑i) ≤ 2 ^ (k + 1) * MeasureTheory.volume GLemma 5.2.2  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      (k : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (⋃ iGrid X  𝓒𝓒.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k : ℕ) :
      Set (Grid X)The partition `𝓒(G, k)` of `Grid X` by volume, given in (5.1.1) and (5.1.2).
    Note: the `G` is fixed with properties in `ProofData`.  k, iGrid X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.k +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    theorem dense_cover.{u_1}dense_cover.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k : ℕ) :
      MeasureTheory.volume (⋃ i ∈ 𝓒 k, ↑i) ≤ 2 ^ (k + 1) * MeasureTheory.volume GLemma 5.2.2  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      (k : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (⋃ iGrid X  𝓒𝓒.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k : ℕ) :
      Set (Grid X)The partition `𝓒(G, k)` of `Grid X` by volume, given in (5.1.1) and (5.1.2).
    Note: the `G` is fixed with properties in `ProofData`.  k, iGrid X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.k +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    Lemma 5.2.2 

Proof. The union of dyadic cubes in \mathcal{C}(G,k) is contained in the union of elements of the set \mathcal{M}(k) of all dyadic cubes J with {\mu(G \cap J)} > 2^{-k-1}{\mu(J)}. The union of elements in the set \mathcal{M}(k) is contained in the union of elements in the set \mathcal{M}^*(k) of maximal elements in \mathcal{M}(k) with respect to set inclusion. Hence \mu (\bigcup \mathcal{C}(G,k))\le \mu (\bigcup \mathcal{M}^*(k))\le \sum_{J\in \mathcal{M}^*(k)}\mu(J). Using the definition of \mathcal{M}(k) and then the pairwise disjointedness of elements in \mathcal{M}^*(k), we estimate this by \le 2^{k+1}\sum_{J\in \mathcal{M}^*(k)}\mu(J\cap G) \le 2^{k+1}\mu(G). This proves the lemma.

Lemma1.37
L∃∀Nused by 1

If \fp, \fp' \in {\mathfrak{M}}(k,n) and {E_1}(\fp)\cap {E_1}(\fp')\neq \emptyset then \fp=\fp'.

Lean code for Lemma1.371 theorem
  • complete
    theorem pairwiseDisjoint_E1.{u_1}pairwiseDisjoint_E1.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n : ℕ} :
      (𝔐 k n).PairwiseDisjoint E₁Lemma 5.2.3  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (𝔐𝔐.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n : ℕ) :
      Set (𝔓 X)The definition `𝔐(k, n)` given in (5.1.4) and (5.1.5).  k n).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely.  E₁E₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set X
    theorem pairwiseDisjoint_E1.{u_1}pairwiseDisjoint_E1.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n : ℕ} :
      (𝔐 k n).PairwiseDisjoint E₁Lemma 5.2.3  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (𝔐𝔐.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n : ℕ) :
      Set (𝔓 X)The definition `𝔐(k, n)` given in (5.1.4) and (5.1.5).  k n).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely.  E₁E₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set X
    Lemma 5.2.3 

Proof. Let \fp,\fp' be as in the lemma. By definition of E_1, we have E_1(\fp)\subset \scI(\fp) and analogously for \fp', we conclude from eintersect that \scI(\fp)\cap \scI(\fp')\neq \emptyset. Let without loss of generality \scI(\fp) be maximal in \{\scI(\fp),\scI(\fp')\}, then \scI(\fp')\subset \scI(\fp). By eintersect, we conclude by definition of E_1 that \fc(\fp)\cap \fc(\fp')\neq \emptyset. By eq-freq-dyadic we conclude \fc(\fp)\subset \fc(\fp'). It follows that \fp'\le \fp. By maximality mnkmax of \fp', we have \fp'=\fp. This proves the lemma.

Lemma1.38
L∃∀Nused by 1

For each x\in A(\lambda,k,n), there is a dyadic cube I that contains x and is a subset of A(\lambda,k,n).

Lean code for Lemma1.381 theorem
  • complete
    theorem dyadic_union.{u_1}dyadic_union.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n l : ℕ} {x : X}
      (hx : x ∈ setA l k n) : ∃ i, x ∈ i ∧ ↑i ⊆ setA l k nLemma 5.2.4  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n l : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {xX : XType u_1} (hxx ∈ setA l k n : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. setAsetA.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l k n : ℕ) : Set XThe set `A(λ, k, n)`, defined in (5.1.26).  l k n) :
       iGrid X, xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. iGrid X And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`. iGrid X HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. setAsetA.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l k n : ℕ) : Set XThe set `A(λ, k, n)`, defined in (5.1.26).  l k n
    theorem dyadic_union.{u_1}dyadic_union.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n l : ℕ} {x : X}
      (hx : x ∈ setA l k n) : ∃ i, x ∈ i ∧ ↑i ⊆ setA l k nLemma 5.2.4  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n l : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {xX : XType u_1}
      (hxx ∈ setA l k n : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. setAsetA.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l k n : ℕ) : Set XThe set `A(λ, k, n)`, defined in (5.1.26).  l k n) :
       iGrid X, xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. iGrid X And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`. iGrid X HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. setAsetA.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l k n : ℕ) : Set XThe set `A(λ, k, n)`, defined in (5.1.26).  l k n
    Lemma 5.2.4 

Proof. Fix k,n,\lambda,x as in the lemma such that x\in A(\lambda,k,n). Let \mathcal{M} be the set of dyadic cubes \scI(\fp) with \fp in \mathfrak{M}(k,n) and x\in \scI(\fp). By definition of A(\lambda,k,n), the cardinality of \mathcal{M} is at least 1+\lambda 2^{n+1}. Let I be a cube of smallest scale in \mathcal{M}. Then I is contained in all cubes of \mathcal{M}. It follows that I\subset A(\lambda,k,n).

Lemma1.39
L∃∀N
Used by 2
Hover a use site to preview it.
Preview
Lemma 1.40
Loading preview
Hover a use site to preview it.

Uses Lemma 1.36, Lemma 1.37, and Lemma 1.38. For all integers k,n,\lambda\ge 0, we have \mu(A(\lambda,k,n)) \le 2^{k+1-\lambda}\mu(G).

Lean code for Lemma1.391 theorem
  • complete
    theorem john_nirenberg.{u_1}john_nirenberg.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n l : ℕ} :
      MeasureTheory.volume (setA l k n) ≤ 2 ^ (↑k + 1 - ↑l) * MeasureTheory.volume GLemma 5.2.5  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n l : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (setAsetA.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l k n : ℕ) : Set XThe set `A(λ, k, n)`, defined in (5.1.26).  l k n) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).k +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1 -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). l)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    theorem john_nirenberg.{u_1}john_nirenberg.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n l : ℕ} :
      MeasureTheory.volume (setA l k n) ≤ 2 ^ (↑k + 1 - ↑l) * MeasureTheory.volume GLemma 5.2.5  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n l : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (setAsetA.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l k n : ℕ) : Set XThe set `A(λ, k, n)`, defined in (5.1.26).  l k n) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).k +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1 -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). l)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    Lemma 5.2.5 

Proof. Fix k,n as in the lemma and suppress notation to write A(\lambda) for A(\lambda,k,n). We prove the lemma by induction on \lambda. For \lambda=0, we use that A(\lambda) by definition of \mathfrak{M}(k,n) is contained in the union of elements in \mathcal{C}(G,k). Lemma 1.36 then completes the base of the induction. Now assume that the statement of Lemma 1.39 is proven for some integer \lambda\ge 0. The set A(\lambda+1) is contained in the set A(\lambda). Let \mathcal{M} be the set of dyadic cubes which are a subset of A(\lambda). By Lemma 1.38, the union of \mathcal{M} is A(\lambda). Let \mathcal{M}^* be the set of maximal dyadic cubes in \mathcal{M}. Let x\in A(\lambda+1) and L\in \mathcal{M}^* such that x\in L. Then by the dyadic property dyadicproperty \sum_{\fp \in {\mathfrak{M}}(k,n)} \mathbf{1}_{\scI(\fp)}(x) = \sum_{\fp \in {\mathfrak{M}}(k,n):\scI(\fp) \subset L} \mathbf{1}_{\scI(\fp)}(x) + \sum_{\fp \in {\mathfrak{M}}(k,n):L \subsetneq \scI(\fp)} \mathbf{1}_{\scI(\fp)}(x). We now show \sum_{\fp \in {\mathfrak{M}}(k,n):\scI(\fp) \subset L} \mathbf{1}_{\scI(\fp)}(x)\ge 2^{n+1}. The left-hand side of the previous display is strictly greater than (\lambda+1)2^{n+1}. If L is the top cube the second sum is zero and the claim follows immediately. Otherwise consider the inclusion-minimal cube \hat{L} with L\subsetneq\hat{L}; all tiles in the second sum satisfy \hat{L}\subset\fp, so the second sum is constant for all x\in\hat{L}. By maximality of L, the second sum is at most \lambda 2^{n+1} somewhere on \hat{L}, thus on all of \hat{L} and consequently also at x. Rearranging the inequality yields the claim. By Lemma 1.37, we have \sum_{\fp \in {\mathfrak{M}}(k,n):\scI(\fp) \subset L} \mu({E_1}(\fp)) \leq \mu(L). Multiplying by 2^n and applying ebardense, we obtain \sum_{\fp \in {\mathfrak{M}}(k,n):\scI(\fp) \subset L} \mu(\scI(\fp)) \leq 2^n \mu(L). We then have with the previous two estimates 2^{n+1}\mu(A(\lambda+1)\cap L) = \int_{A(\lambda+1)\cap L} 2^{n+1} d\mu \le \int \sum_{\fp \in {\mathfrak{M}}(k,n):\scI(\fp) \subset L} \mathbf{1}_{\scI(\fp)} d\mu \le 2^n \mu(L). Hence 2\mu(A(\lambda+1))=2\sum_{L\in \mathcal{M}^*} \mu(A(\lambda+1)\cap L)\le \sum_{L\in \mathcal{M}^*}\mu( L)= \mu(A(\lambda)). Using the induction hypothesis, this proves alambdameasure for \lambda+1 and completes the proof of the lemma.

Lemma1.40
L∃∀Nused by 1

Uses Lemma 1.39. We have \mu(G_2)\le 2^{-2} \mu(G).

Lean code for Lemma1.401 theorem
  • complete
    theorem second_exception.{u_1}second_exception.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      MeasureTheory.volume G₂ ≤ 2 ^ (-2) * MeasureTheory.volume GLemma 5.2.6  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)] :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  G₂G₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set XThe set `G₂`, defined in (5.1.27).  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (-2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    theorem second_exception.{u_1}second_exception.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      MeasureTheory.volume G₂ ≤ 2 ^ (-2) * MeasureTheory.volume GLemma 5.2.6  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)] :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  G₂G₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set XThe set `G₂`, defined in (5.1.27).  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (-2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    Lemma 5.2.6 

Proof. We use Lemma 1.39 and sum twice a geometric series to obtain \sum_{0\le k}\sum_{k\le n} \mu(A(2n+6,k,n))\le \sum_{0\le k}\sum_{k\le n} 2^{k-5-2n}\mu(G) \le \sum_{0\le k} 2^{-k-3}\mu(G)\le 2^{-2}\mu(G). This proves the lemma.

We turn to the set G_3.

Lemma1.41
L∃∀Nused by 1

Uses Lemma 1.39. We have \sum_{\mathfrak{m} \in \mathfrak{M}(k,n)} \mu(\scI(\mathfrak{m}))\le 2^{n+k+3}\mu(G).

Lean code for Lemma1.411 theorem
  • complete
    theorem top_tiles.{u_1}top_tiles.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n : ℕ} :
      ∑ m with m ∈ 𝔐 k n, MeasureTheory.volume ↑(𝓘 m) ≤ 2 ^ (n + k + 3) * MeasureTheory.volume GLemma 5.2.7  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :
       m𝔓 X with m𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔐𝔐.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n : ℕ) :
      Set (𝔓 X)The definition `𝔐(k, n)` given in (5.1.4) and (5.1.5).  k n, MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X m𝔓 X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.n +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. k +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 3)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    theorem top_tiles.{u_1}top_tiles.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n : ℕ} :
      ∑ m with m ∈ 𝔐 k n, MeasureTheory.volume ↑(𝓘 m) ≤ 2 ^ (n + k + 3) * MeasureTheory.volume GLemma 5.2.7  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :
       m𝔓 X with m𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔐𝔐.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n : ℕ) :
      Set (𝔓 X)The definition `𝔐(k, n)` given in (5.1.4) and (5.1.5).  k n,
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X m𝔓 X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.n +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. k +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 3)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    Lemma 5.2.7 

Proof. We write the left-hand side of eq-musum \int \sum_{\mathfrak{m} \in \mathfrak{M}(k,n)} \mathbf{1}_{\scI(\mathfrak{m})}(x) \, d\mu(x) \le 2^{n+1} \sum_{\lambda=0}^{|\mathfrak{M}|}\mu(A(\lambda, k,n)). Using Lemma 1.39 and then summing a geometric series, we estimate this by \le 2^{n+1}\sum_{\lambda=0}^{|\mathfrak{M}|} 2^{k+1-\lambda}\mu(G) \le 2^{n+1}2^{k+2}\mu(G). This proves the lemma.

Lemma1.42
L∃∀Nused by 1

Let k,n,j\ge 0. We have for every x\in X \sum_{\fu\in \fU_1(k,n,j)} \mathbf{1}_{\scI(\fu)}(x) \le 2^{-j} 2^{9a} \sum_{\mathfrak{m}\in \mathfrak{M}(k,n)} \mathbf{1}_{\scI(\mathfrak{m})}(x).

Lean code for Lemma1.421 theorem
  • complete
    theorem tree_count.{u_1}tree_count.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {x : X} : ↑(stackSize (𝔘₁ k n j) x) ≤ 2 ^ (9 * ↑a - ↑j) * ↑(stackSize (𝔐 k n) x)Lemma 5.2.8  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {xX : XType u_1} :
      (stackSizestackSize.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (C : Set (𝔓 X))
      (x : X) : ℕThe number of tiles `p` in `s` whose underlying cube `𝓘 p` contains `x`.  (𝔘₁𝔘₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔘₁(k, n, j)` of `ℭ₁(k, n, j)`, given in (5.1.14).  k n j) xX) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).9 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). j)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (stackSizestackSize.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (C : Set (𝔓 X))
      (x : X) : ℕThe number of tiles `p` in `s` whose underlying cube `𝓘 p` contains `x`.  (𝔐𝔐.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n : ℕ) :
      Set (𝔓 X)The definition `𝔐(k, n)` given in (5.1.4) and (5.1.5).  k n) xX)
    theorem tree_count.{u_1}tree_count.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {x : X} : ↑(stackSize (𝔘₁ k n j) x) ≤ 2 ^ (9 * ↑a - ↑j) * ↑(stackSize (𝔐 k n) x)Lemma 5.2.8  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {xX : XType u_1} :
      (stackSizestackSize.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (C : Set (𝔓 X))
      (x : X) : ℕThe number of tiles `p` in `s` whose underlying cube `𝓘 p` contains `x`.  (𝔘₁𝔘₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔘₁(k, n, j)` of `ℭ₁(k, n, j)`, given in (5.1.14).  k n j) xX) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).9 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). j)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (stackSizestackSize.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (C : Set (𝔓 X))
      (x : X) : ℕThe number of tiles `p` in `s` whose underlying cube `𝓘 p` contains `x`.  (𝔐𝔐.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n : ℕ) :
      Set (𝔓 X)The definition `𝔐(k, n)` given in (5.1.4) and (5.1.5).  k n) xX)
    Lemma 5.2.8 

Proof. Let x\in X. For each \fu\in \fU_1(k,n,j) with x\in \scI(\fu), as \fu \in \fC_1(k,n,j), there are at least 2^{j} elements \mathfrak{m}\in \mathfrak{M}(k,n) with 100\fu \lesssim \mathfrak{m} and in particular x\in \scI(\mathfrak{m}). Hence \mathbf{1}_{\scI(\fu)}(x) \le 2^{-j}\sum_{\mathfrak{m} \in \mathfrak{M}(k,n): 100\fu\lesssim \mathfrak{m}} \mathbf{1}_{\scI(\mathfrak{m})}(x). Conversely, for each \mathfrak{m}\in \mathfrak{M}(k,n) with x\in \scI(\mathfrak{m}), let \fU(\mathfrak{m}) be the set of \fu\in \fU_1(k,n,j) with x\in \scI(\fu) and 100\fu \lesssim \mathfrak{m}. Summing the previous bound over \fu and counting the pairs (\fu,\mathfrak{m}) with 100\fu \lesssim \mathfrak{m} differently gives \sum_{\fu\in \fU_1(k,n,j)} \mathbf{1}_{\scI(\fu)}(x) \le 2^{-j}\sum_{\mathfrak{m} \in \mathfrak{M}(k,n)} \sum_{\fu \in \fU(\mathfrak{m})} \mathbf{1}_{\scI(\mathfrak{m})}(x). We estimate the number of elements in \fU(\mathfrak{m}). Let \fu \in \fU(\mathfrak{m}). Then by definition of \fU(\mathfrak{m}) d_{\fu}(\fcc(\fu),\fcc(\mathfrak{m}))\le 100. If \fu' is a further element in \fU(\mathfrak{m}) with \fu\neq \fu', then \fcc(\mathfrak{m}) \in B_{\fu}(\fcc(\fu),100)\cap B_{\fu'}(\fcc(\fu'),100). By the last display and definition of \fU_1(k,n,j), none of \scI(\fu), \scI(\fu') is strictly contained in the other. As both contain x, we have \scI(\fu)=\scI(\fu'). We then have d_{\fu}=d_{\fu'}. By eq-freq-comp-ball, the balls B_{\fu}(\fcc(\fu),0.2) and B_{\fu}(\fcc(\fu'),0.2) are contained respectively in \fc(\fu) and \fc(\fu') and thus are disjoint by eq-dis-freq-cover. By dby2 and the triangle inequality, both balls are contained in B_{\fu}(\fcc(\mathfrak{m}), 100.2). By thirddb applied nine times, there is a collection of at most 2^{9a} balls of radius 0.2 with respect to the metric d_{\fu} which cover the ball B_{\fu}(\fcc(\mathfrak{m}),100.2). Let B' be a ball in this cover. As the center of B' can be in at most one of the disjoint balls B_{\fu}(\fcc(\fu),0.2) and B_{\fu}(\fcc(\fu'),0.2), the ball B' can contain at most one of the points \fcc(\fu), \fcc(\fu'). Hence the image of \fU(\mathfrak{m}) under \fcc has at most 2^{9a} elements; since \fcc is injective on \fU(\mathfrak{m}), the same is true of \fU(\mathfrak{m}). Inserting this into usumbymsum proves the lemma.

Lemma1.43
L∃∀Nused by 1

Let \mathcal{L}(\fu) be as defined in eq-L-def. We have for each \fu\in \fU_1(k,n,l), \mu(\bigcup_{I\in \mathcal{L}(\fu)} I) \le D^{1-\kappa Z(n+1)} \mu(\scI(\mathfrak{u})).

Lean code for Lemma1.431 theorem
  • complete
    theorem boundary_exception.{u_1}boundary_exception.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {u : 𝔓 X} :
      MeasureTheory.volume (⋃ i ∈ 𝓛 n u, ↑i) ≤ ↑(C5_2_9 X n) * MeasureTheory.volume ↑(𝓘 u)Lemma 5.2.9  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (⋃ iGrid X  𝓛𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (n : ℕ) (u : 𝔓 X) :
      Set (Grid X)The subset `𝓛(u)` of `Grid X`, given near (5.1.20).
    Note: It seems to also depend on `n`.  n u𝔓 X, iGrid X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (C5_2_9C5_2_9.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (n : ℕ) : NNRealThe constant in Lemma 5.2.9, with value `D ^ (1 - κ * Z * (n + 1))`  XType u_1 n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u𝔓 X)
    theorem boundary_exception.{u_1}boundary_exception.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {u : 𝔓 X} :
      MeasureTheory.volume (⋃ i ∈ 𝓛 n u, ↑i) ≤ ↑(C5_2_9 X n) * MeasureTheory.volume ↑(𝓘 u)Lemma 5.2.9  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (⋃ iGrid X  𝓛𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (n : ℕ) (u : 𝔓 X) :
      Set (Grid X)The subset `𝓛(u)` of `Grid X`, given near (5.1.20).
    Note: It seems to also depend on `n`.  n u𝔓 X, iGrid X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (C5_2_9C5_2_9.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (n : ℕ) : NNRealThe constant in Lemma 5.2.9, with value `D ^ (1 - κ * Z * (n + 1))`  XType u_1 n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u𝔓 X)
    Lemma 5.2.9 

Proof. Let \fu\in \fU_1(k,n,l). Let I \in \mathcal{L}(\fu). Then we have s(I) = \ps(\fu) - Z(n+1) - 1 and I \subset \scI(\fu) and B(c(I), 8D^{s(I)}) \not \subset \scI(\fu). By eq-vol-sp-cube, the set I is contained in B(c(I), 4D^{s(I)}). By the triangle inequality, the set I is contained in X(\fu):=\{x \in \scI(\fu) \, : \, \rho(x, X \setminus \scI(\fu)) \leq 12 D^{\ps(\fu) - Z(n+1)-1}\}. By the small boundary property eq-small-boundary, noting that 12D^{\ps(\fu) - Z(n+1) - 1} = 12D^{s(I)} > D^{-S}, we have \mu(X(\fu)) \le 2\cdot(12 D^{-Z(n+1)-1})^\kappa \mu(\scI(\mathfrak{u})). Using \kappa<1 and D \ge 12, this proves the lemma.

Lemma1.44
L∃∀Nused by 1

Uses Lemma 1.42, Lemma 1.43, and Lemma 1.41. We have \mu(G_3)\le 2^{-4} \mu(G).

Lean code for Lemma1.441 theorem
  • complete
    theorem third_exception.{u_1}third_exception.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      MeasureTheory.volume G₃ ≤ 2 ^ (-4) * MeasureTheory.volume GLemma 5.2.10  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)] :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  G₃G₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set XThe set `G₃`, defined in (5.1.28).  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (-4) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    theorem third_exception.{u_1}third_exception.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      MeasureTheory.volume G₃ ≤ 2 ^ (-4) * MeasureTheory.volume GLemma 5.2.10  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)] :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  G₃G₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set XThe set `G₃`, defined in (5.1.28).  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (-4) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  GSet X
    Lemma 5.2.10 

Proof. As each \fp\in \fL_4(k,n,j) is contained in \cup\mathcal{L}(\fu) for some \fu\in \fU_1(k,n,l), we have \mu(\bigcup_{\fp \in \fL_4 (k,n,j)}\scI(\fp)) \le \sum_{\fu\in \fU_1(k,n,j)} \mu(\bigcup_{I \in \mathcal{L} (\fu)}I). Using Lemma 1.43 and then Lemma 1.42, we estimate this further by \le \sum_{\fu\in \fU_1(k,n,j)} D^{1-\kappa Z(n+1)} \mu(\scI(\mathfrak{u})) \le 2^{100a^2+9a+1-j} \sum_{\mathfrak{m}\in \mathfrak{M}(k,n)} D^{-\kappa Z(n+1)} \mu(\scI(\mathfrak{m})). Using Lemma 1.41, we estimate this by \le 2^{100a^2 + 9a + 1-j} D^{-\kappa Z(n+1)} 2^{n+k+3}\mu(G). Now we estimate G_3 defined in defineg3 by \mu(G_3)\le \sum_{k\ge 0}\, \sum_{n \geq k}\, \sum_{0\le j\le 2n+3} \mu(\bigcup_{\fp \in \fL_4 (k,n,j)} \scI(\fp)) \le \sum_{k\ge 0}\, \sum_{n \geq k}\, \sum_{0\le j\le 2n+3} 2^{100a^2 + 9a + 3 + n + k -j} D^{-\kappa Z(n+1)}\mu(G). Summing geometric series, using that D^{\kappa Z}\ge 8 by defineD, definekappa and defineZ, we estimate this by \le \sum_{k\ge 0}\, \sum_{n \geq k}\, 2^{100a^2 + 9a + 4 + n + k} D^{-\kappa Z(n+1)}\mu(G) = \sum_{k\ge 0} 2^{100a^2 + 9a + 4 + 2k} D^{-\kappa Z(k+1)} \sum_{n \geq k}\, 2^{n - k} D^{-\kappa Z(n-k)}\mu(G) \le \sum_{k\ge 0} 2^{100a^2 + 9a + 5 + 2k} D^{-\kappa Z(k+1)}\mu(G) \le 2^{100a^2 + 9a + 6} D^{-\kappa Z}\mu(G). Using D = 2^{100a^2} and a \ge 4 and \kappa Z \ge 2 by defineD and definekappa proves the lemma.

Adding up the bounds in Lemmas Lemma 1.35, Lemma 1.40, and Lemma 1.44 proves Lemma 1.32.

1.5.3. Auxiliary lemmas🔗

Before proving Lemma 1.33 and Lemma 1.34, we collect some useful properties of \lesssim.

Lemma1.45
L∃∀Nused by 1

If n\fp \lesssim m\fp' and n' \ge n and m \ge m' then n'\fp \lesssim m'\fp'.

Lean code for Lemma1.451 theorem
  • theoremdefined in Carleson/TileStructure.lean
    complete
    theorem smul_mono.{u_1}smul_mono.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {p p' : 𝔓 X}
      {m m' n n' : ℝ} (hp : smul n p ≤ smul m p') (hm : m' ≤ m) (hn : n ≤ n') : smul n' p ≤ smul m' p'Lemma 5.3.1  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [PseudoMetricSpacePseudoMetricSpace.{u} (α : Type u) : Type uA pseudometric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    reflexivity `dist x x = 0`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    Note that we do not require `dist x y = 0 → x = y`. See metric spaces (`MetricSpace`) for the
    similar class with that stronger assumption.
    
    Any pseudometric space is a topological space and a uniform space (see `TopologicalSpace`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    Note that a T1 pseudometric space is just a metric space.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric. This e.g.
    ensures that we do not get a diamond when doing
    `[PseudoMetricSpace α] [PseudoMetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {m m' n n' : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } (hpsmul n p ≤ smul m p' : smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  n p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  m p'𝔓 X) (hmm' ≤ m : m' LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. m)
      (hnn ≤ n' : n LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. n') : smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  n' p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  m' p'𝔓 X
    theorem smul_mono.{u_1}smul_mono.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {p p' : 𝔓 X}
      {m m' n n' : ℝ} (hp : smul n p ≤ smul m p') (hm : m' ≤ m) (hn : n ≤ n') : smul n' p ≤ smul m' p'Lemma 5.3.1  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [PseudoMetricSpacePseudoMetricSpace.{u} (α : Type u) : Type uA pseudometric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    reflexivity `dist x x = 0`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    Note that we do not require `dist x y = 0 → x = y`. See metric spaces (`MetricSpace`) for the
    similar class with that stronger assumption.
    
    Any pseudometric space is a topological space and a uniform space (see `TopologicalSpace`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    Note that a T1 pseudometric space is just a metric space.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric. This e.g.
    ensures that we do not get a diamond when doing
    `[PseudoMetricSpace α] [PseudoMetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {m m' n n' : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      (hpsmul n p ≤ smul m p' : smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  n p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  m p'𝔓 X)
      (hmm' ≤ m : m' LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. m) (hnn ≤ n' : n LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. n') :
      smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  n' p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  m' p'𝔓 X
    Lemma 5.3.1 

Proof. This follows immediately from the definition wiggleorder of \lesssim and the two inclusions B_{\fp}(\fcc(\fp), n) \subset B_{\fp}(\fcc(\fp), n') and B_{\fp'}(\fcc(\fp'), m') \subset B_{\fp'}(\fcc(\fp'), m).

Lemma1.46
L∃∀Nused by 1

Uses Lemma 1.11. Let n, m \ge 1 and k > 0. If \fp, \fp' \in \fP with \scI(\fp) \ne \scI(\fp') and n \fp \lesssim k \fp' then (n + 2^{-95 a} m) \fp \lesssim m\fp'.

Lean code for Lemma1.461 theorem
  • theoremdefined in Carleson/TileStructure.lean
    complete
    theorem smul_C2_1_2.{u_1}smul_C2_1_2.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {p p' : 𝔓 X} (m : ℝ)
      {n k : ℝ} (hk : 0 < k) (hp : 𝓘 p ≠ 𝓘 p') (hl : smul n p ≤ smul k p') : smul (n + C2_1_2 a * m) p ≤ smul m p'Lemma 5.3.2 (generalizing `1` to `k > 0`)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [PseudoMetricSpacePseudoMetricSpace.{u} (α : Type u) : Type uA pseudometric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    reflexivity `dist x x = 0`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    Note that we do not require `dist x y = 0 → x = y`. See metric spaces (`MetricSpace`) for the
    similar class with that stronger assumption.
    
    Any pseudometric space is a topological space and a uniform space (see `TopologicalSpace`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    Note that a T1 pseudometric space is just a metric space.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric. This e.g.
    ensures that we do not get a diamond when doing
    `[PseudoMetricSpace α] [PseudoMetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (m : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. ) {n k : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } (hk0 < k : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. k) (hp𝓘 p ≠ 𝓘 p' : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X)
      (hlsmul n p ≤ smul k p' : smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  n p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  k p'𝔓 X) : smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.n +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. C2_1_2C2_1_2 (a : ℕ) : ℝThe constant appearing in Lemma 2.1.2, `2 ^ {-95a}`.  a *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. m)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  m p'𝔓 X
    theorem smul_C2_1_2.{u_1}smul_C2_1_2.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {p p' : 𝔓 X} (m : ℝ)
      {n k : ℝ} (hk : 0 < k) (hp : 𝓘 p ≠ 𝓘 p') (hl : smul n p ≤ smul k p') : smul (n + C2_1_2 a * m) p ≤ smul m p'Lemma 5.3.2 (generalizing `1` to `k > 0`)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [PseudoMetricSpacePseudoMetricSpace.{u} (α : Type u) : Type uA pseudometric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    reflexivity `dist x x = 0`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    Note that we do not require `dist x y = 0 → x = y`. See metric spaces (`MetricSpace`) for the
    similar class with that stronger assumption.
    
    Any pseudometric space is a topological space and a uniform space (see `TopologicalSpace`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    Note that a T1 pseudometric space is just a metric space.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric. This e.g.
    ensures that we do not get a diamond when doing
    `[PseudoMetricSpace α] [PseudoMetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (m : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. ) {n k : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      (hk0 < k : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. k) (hp𝓘 p ≠ 𝓘 p' : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X)
      (hlsmul n p ≤ smul k p' : smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  n p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  k p'𝔓 X) :
      smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.n +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. C2_1_2C2_1_2 (a : ℕ) : ℝThe constant appearing in Lemma 2.1.2, `2 ^ {-95a}`.  a *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. m)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  m p'𝔓 X
    Lemma 5.3.2 (generalizing `1` to `k > 0`) 

Proof. The assumption eq-wiggle1 together with the definition wiggleorder of \lesssim implies that \scI(\fp) \subsetneq \scI(\fp'). Let \mfa \in B_{\fp'}(\fcc(\fp'), m). Then we have by the triangle inequality d_{\fp}(\fcc(\fp), \mfa) \le d_{\fp}(\fcc(\fp), \fcc(\fp')) + d_{\fp}(\fcc(\fp'), \mfa). The first summand is bounded by n since \fcc(\fp') \in B_{\fp'}(\fcc(\fp'), k) \subset B_{\fp}(\fcc(\fp), n), using wiggleorder. For the second summand we use Lemma 1.11 to show that the sum is estimated by n + 2^{-95a} d_{\fp'}(\fcc(\fp'), \mfa) < n + 2^{-95a} m. Thus B_{\fp'}(\fcc(\fp'),m) \subset B_{\fp}(\fcc(\fp),n + 2^{-95a}m). Combined with \scI(\fp) \subset \scI(\fp'), this yields eq-wiggle2.

Lemma1.47
L∃∀Nused by 1

Uses Lemma 1.45 and Lemma 1.46. The following implications hold for all \fq, \fq' \in \fP: \fq \le \fq' \ \text{and} \ \lambda \ge 1.1 \implies \lambda \fq \lesssim \lambda \fq', 10\fq \lesssim \fq' \ \text{and} \ \scI(\fq) \ne \scI(\fq') \implies 100 \fq \lesssim 100 \fq', 2\fq \lesssim \fq' \ \text{and} \ \scI(\fq) \ne \scI(\fq') \implies 4 \fq \lesssim 500 \fq'.

Lean code for Lemma1.473 theorems
  • theoremdefined in Carleson/TileStructure.lean
    complete
    theorem wiggle_order_11_10.{u_1}wiggle_order_11_10.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {p p' : 𝔓 X} {n : ℝ} (hp : p ≤ p') (hn : C5_3_3 a ≤ n) : smul n p ≤ smul n p'Lemma 5.3.3, Equation (5.3.3)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [PseudoMetricSpacePseudoMetricSpace.{u} (α : Type u) : Type uA pseudometric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    reflexivity `dist x x = 0`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    Note that we do not require `dist x y = 0 → x = y`. See metric spaces (`MetricSpace`) for the
    similar class with that stronger assumption.
    
    Any pseudometric space is a topological space and a uniform space (see `TopologicalSpace`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    Note that a T1 pseudometric space is just a metric space.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric. This e.g.
    ensures that we do not get a diamond when doing
    `[PseudoMetricSpace α] [PseudoMetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {n : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } (hpp ≤ p' : p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. p'𝔓 X) (hnC5_3_3 a ≤ n : C5_3_3C5_3_3 (a : ℕ) : ℝThe constraint on `λ` in the first part of Lemma 5.3.3.  a LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. n) :
      smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  n p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  n p'𝔓 X
    theorem wiggle_order_11_10.{u_1}wiggle_order_11_10.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {p p' : 𝔓 X} {n : ℝ} (hp : p ≤ p') (hn : C5_3_3 a ≤ n) : smul n p ≤ smul n p'Lemma 5.3.3, Equation (5.3.3)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [PseudoMetricSpacePseudoMetricSpace.{u} (α : Type u) : Type uA pseudometric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    reflexivity `dist x x = 0`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    Note that we do not require `dist x y = 0 → x = y`. See metric spaces (`MetricSpace`) for the
    similar class with that stronger assumption.
    
    Any pseudometric space is a topological space and a uniform space (see `TopologicalSpace`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    Note that a T1 pseudometric space is just a metric space.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric. This e.g.
    ensures that we do not get a diamond when doing
    `[PseudoMetricSpace α] [PseudoMetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {n : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } (hpp ≤ p' : p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. p'𝔓 X)
      (hnC5_3_3 a ≤ n : C5_3_3C5_3_3 (a : ℕ) : ℝThe constraint on `λ` in the first part of Lemma 5.3.3.  a LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. n) :
      smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  n p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  n p'𝔓 X
    Lemma 5.3.3, Equation (5.3.3) 
  • theoremdefined in Carleson/TileStructure.lean
    complete
    theorem wiggle_order_100.{u_1}wiggle_order_100.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {p p' : 𝔓 X} (hp : smul 10 p ≤ smul 1 p') (hn : 𝓘 p ≠ 𝓘 p') : smul 100 p ≤ smul 100 p'Lemma 5.3.3, Equation (5.3.4)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [PseudoMetricSpacePseudoMetricSpace.{u} (α : Type u) : Type uA pseudometric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    reflexivity `dist x x = 0`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    Note that we do not require `dist x y = 0 → x = y`. See metric spaces (`MetricSpace`) for the
    similar class with that stronger assumption.
    
    Any pseudometric space is a topological space and a uniform space (see `TopologicalSpace`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    Note that a T1 pseudometric space is just a metric space.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric. This e.g.
    ensures that we do not get a diamond when doing
    `[PseudoMetricSpace α] [PseudoMetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hpsmul 10 p ≤ smul 1 p' : smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  10 p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  1 p'𝔓 X) (hn𝓘 p ≠ 𝓘 p' : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X) :
      smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  100 p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  100 p'𝔓 X
    theorem wiggle_order_100.{u_1}wiggle_order_100.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {p p' : 𝔓 X} (hp : smul 10 p ≤ smul 1 p') (hn : 𝓘 p ≠ 𝓘 p') : smul 100 p ≤ smul 100 p'Lemma 5.3.3, Equation (5.3.4)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [PseudoMetricSpacePseudoMetricSpace.{u} (α : Type u) : Type uA pseudometric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    reflexivity `dist x x = 0`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    Note that we do not require `dist x y = 0 → x = y`. See metric spaces (`MetricSpace`) for the
    similar class with that stronger assumption.
    
    Any pseudometric space is a topological space and a uniform space (see `TopologicalSpace`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    Note that a T1 pseudometric space is just a metric space.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric. This e.g.
    ensures that we do not get a diamond when doing
    `[PseudoMetricSpace α] [PseudoMetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (hpsmul 10 p ≤ smul 1 p' : smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  10 p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  1 p'𝔓 X)
      (hn𝓘 p ≠ 𝓘 p' : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X) :
      smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  100 p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  100 p'𝔓 X
    Lemma 5.3.3, Equation (5.3.4) 
  • theoremdefined in Carleson/TileStructure.lean
    complete
    theorem wiggle_order_500.{u_1}wiggle_order_500.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {p p' : 𝔓 X} (hp : smul 2 p ≤ smul 1 p') (hn : 𝓘 p ≠ 𝓘 p') : smul 4 p ≤ smul 500 p'Lemma 5.3.3, Equation (5.3.5)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [PseudoMetricSpacePseudoMetricSpace.{u} (α : Type u) : Type uA pseudometric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    reflexivity `dist x x = 0`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    Note that we do not require `dist x y = 0 → x = y`. See metric spaces (`MetricSpace`) for the
    similar class with that stronger assumption.
    
    Any pseudometric space is a topological space and a uniform space (see `TopologicalSpace`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    Note that a T1 pseudometric space is just a metric space.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric. This e.g.
    ensures that we do not get a diamond when doing
    `[PseudoMetricSpace α] [PseudoMetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hpsmul 2 p ≤ smul 1 p' : smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  2 p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  1 p'𝔓 X) (hn𝓘 p ≠ 𝓘 p' : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X) :
      smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  4 p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  500 p'𝔓 X
    theorem wiggle_order_500.{u_1}wiggle_order_500.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {p p' : 𝔓 X} (hp : smul 2 p ≤ smul 1 p') (hn : 𝓘 p ≠ 𝓘 p') : smul 4 p ≤ smul 500 p'Lemma 5.3.3, Equation (5.3.5)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [PseudoMetricSpacePseudoMetricSpace.{u} (α : Type u) : Type uA pseudometric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    reflexivity `dist x x = 0`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    Note that we do not require `dist x y = 0 → x = y`. See metric spaces (`MetricSpace`) for the
    similar class with that stronger assumption.
    
    Any pseudometric space is a topological space and a uniform space (see `TopologicalSpace`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    Note that a T1 pseudometric space is just a metric space.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric. This e.g.
    ensures that we do not get a diamond when doing
    `[PseudoMetricSpace α] [PseudoMetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hpsmul 2 p ≤ smul 1 p' : smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  2 p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  1 p'𝔓 X)
      (hn𝓘 p ≠ 𝓘 p' : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X) :
      smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  4 p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  500 p'𝔓 X
    Lemma 5.3.3, Equation (5.3.5) 

Proof. eq-sc2 and eq-sc3 are easy consequences of Lemma 1.45, Lemma 1.46 and the fact that a \ge 4. For eq-sc1, if \scI(\fq) = \scI(\fq') then we get \fq = \fq' by eq-dis-freq-cover and straightorder. If \scI(\fq) \ne \scI(\fq'), then from straightorder, wiggleorder and eq-freq-comp-ball it follows that \fq \lesssim 0.2\fq', and eq-sc1 follows from an easy calculation using Lemma 1.46.

We call a collection \mathfrak{A} of tiles convex if \fp \le \fp' \le \fp'' \ \text{and} \ \fp, \fp'' \in \mathfrak{A} \implies \fp' \in \mathfrak{A}.

Lemma1.48
L∃∀Nused by 1

For each k, the collection \fP(k) is convex.

Lean code for Lemma1.481 theorem
  • complete
    theorem ordConnected_tilesAt.{u_1}ordConnected_tilesAt.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k : ℕ} :
      (TilesAt k).OrdConnectedLemma 5.3.4  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (TilesAtTilesAt.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k : ℕ) : Set (𝔓 X)The definition `𝔓(k)` given in (5.1.3).  k).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    theorem ordConnected_tilesAt.{u_1}ordConnected_tilesAt.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k : ℕ} :
      (TilesAt k).OrdConnectedLemma 5.3.4  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (TilesAtTilesAt.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k : ℕ) : Set (𝔓 X)The definition `𝔓(k)` given in (5.1.3).  k).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    Lemma 5.3.4 

Proof. Suppose that \fp \le \fp' \le \fp'' and \fp, \fp'' \in \fP(k). By eq-defPk we have \scI(\fp), \scI(\fp'') \in \mathcal{C}(G,k), so there exists by muhj1 some J \in \mathcal{D} with \scI(\fp') \subset \scI(\fp'') \subset J and \mu(G \cap J) > 2^{-k-1} \mu(J). Thus muhj1 holds for \scI(\fp'). On the other hand, by muhj2, there exists no J \in \mathcal{D} with \scI(\fp) \subset J and \mu(G \cap J) > 2^{-k} \mu(J). Since \scI(\fp) \subset \scI(\fp'), this implies that muhj2 holds for \scI(\fp'). Hence \scI(\fp') \in \mathcal{C}(G,k), and therefore by eq-defPk \fp' \in \fP(k).

Lemma1.49
L∃∀Nused by 1

Uses Lemma 1.48. For each k,n, the collection \fC(k,n) is convex.

Lean code for Lemma1.491 theorem
  • complete
    theorem ordConnected_C.{u_1}ordConnected_C.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n : ℕ} :
      (ℭ k n).OrdConnectedLemma 5.3.5  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (ℭ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n : ℕ) :
      Set (𝔓 X)The partition `ℭ(k, n)` of `𝔓(k)` by density, given in (5.1.7).  k n).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    theorem ordConnected_C.{u_1}ordConnected_C.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n : ℕ} :
      (ℭ k n).OrdConnectedLemma 5.3.5  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (ℭ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n : ℕ) :
      Set (𝔓 X)The partition `ℭ(k, n)` of `𝔓(k)` by density, given in (5.1.7).  k n).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    Lemma 5.3.5 

Proof. Let \fp \le \fp' \le \fp'' with \fp, \fp'' \in \fC(k,n). Then, in particular, \fp, \fp'' \in \fP(k), so, by Lemma 1.48, \fp' \in \fP(k). Next, we show that if \fq \le \fq' \in \fP(k) then \dens'_k(\{\fq\}) \ge \dens_k'(\{\fq'\}). If \fp \in \fP(k) and \lambda \ge 2 with \lambda \fq' \lesssim \lambda \fp, then it follows from \fq \le \fq', eq-sc1 of Lemma 1.47 and transitivity of \lesssim that \lambda \fq \lesssim \lambda \fp. Thus the supremum in the definition eq-densdef of \dens_k'(\{\fq\}) is over a superset of the set the supremum in the definition of \dens_k'(\{\fq'\}) is taken over, which shows \dens'_k(\{\fq\}) \ge \dens_k'(\{\fq'\}). From \fp' \le \fp'', \fp'' \in \fC(k,n) and def-cnk it then follows that 2^{4a}2^{-n} < \dens_k'(\{\fp''\}) \le \dens_k'(\{\fp'\}). Similarly, it follows from \fp \le \fp', \fp \in \fC(k,n) and def-cnk that \dens_k'(\{\fp'\}) \le \dens_k'(\{\fp\}) \le 2^{4a}2^{-n+1}. Thus \fp' \in \fC(k,n).

Lemma1.50
L∃∀Nused by 1

Uses Lemma 1.49. For each k,n,j, the collection \fC_1(k,n,j) is convex.

Lean code for Lemma1.501 theorem
  • complete
    theorem ordConnected_C1.{u_1}ordConnected_C1.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      (ℭ₁ k n j).OrdConnectedLemma 5.3.6  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (ℭ₁ℭ₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `ℭ₁(k, n, j)` of `ℭ(k, n)`, given in (5.1.9).
    Together with `𝔏₀(k, n)` this forms a partition.  k n j).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    theorem ordConnected_C1.{u_1}ordConnected_C1.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      (ℭ₁ k n j).OrdConnectedLemma 5.3.6  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (ℭ₁ℭ₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `ℭ₁(k, n, j)` of `ℭ(k, n)`, given in (5.1.9).
    Together with `𝔏₀(k, n)` this forms a partition.  k n j).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    Lemma 5.3.6 

Proof. Let \fp\le\fp'\le\fp'' with \fp, \fp'' \in \fC_1(k,n,j). By Lemma 1.49 and the inclusion \fC_1(k,n,j) \subset \fC(k,n), which holds by definition defcnkj, we have \fp' \in \fC(k,n). By eq-sc1 and transitivity of \lesssim we have that \fq \le \fq' and 100 \fq' \lesssim \mathfrak{m} imply 100 \fq \lesssim \mathfrak{m}. So, by defbfp, \mathfrak{B}(\fp'') \subset \mathfrak{B}(\fp') \subset \mathfrak{B}(\fp). Consequently, by defcnkj 2^j \le |\mathfrak{B}(\fp'')|\le |\mathfrak{B}(\fp')| \le |\mathfrak{B}(\fp)| < 2^{j+1}, thus \fp' \in \fC_1(k,n,j).

Lemma1.51
L∃∀Nused by 1

Uses Lemma 1.50. For each k,n,j, the collection \fC_2(k,n,j) is convex.

Lean code for Lemma1.511 theorem
  • complete
    theorem ordConnected_C2.{u_1}ordConnected_C2.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      (ℭ₂ k n j).OrdConnectedLemma 5.3.7  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (ℭ₂ℭ₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `ℭ₂(k, n, j)` of `ℭ₁(k, n, j)`, given in (5.1.13).  k n j).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    theorem ordConnected_C2.{u_1}ordConnected_C2.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      (ℭ₂ k n j).OrdConnectedLemma 5.3.7  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (ℭ₂ℭ₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `ℭ₂(k, n, j)` of `ℭ₁(k, n, j)`, given in (5.1.13).  k n j).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    Lemma 5.3.7 

Proof. Let \fp \le \fp' \le \fp'' with \fp, \fp'' \in \fC_2(k,n,j). By eq-C2-def, we have \fC_2(k,n,j) \subset \fC_1(k,n,j). Combined with Lemma 1.50, it follows that \fp' \in \fC_1(k,n,j). If \fp=\fp' the statement is trivially true, otherwise suppose that \fp' \notin \fC_2(k,n,j). By eq-C2-def, this implies that there exists 0 \le l' \le Z(n+1) with \fp' \in \fL_1(k,n,j,l'). By the definition eq-L1-def of \fL_1(k,n,j,l'), this implies that \fp' is minimal with respect to \le in \fC_1(k,n,j) \setminus \bigcup_{l < l'} \fL_1(k,n,j,l). Since \fp\le\fp' and \fp\in\fC_2(k,n,j), \fp=\fp', a contradiction.

Lemma1.52
L∃∀Nused by 1

Uses Lemma 1.51. For each k,n,j, the collection \fC_3(k,n,j) is convex.

Lean code for Lemma1.521 theorem
  • complete
    theorem ordConnected_C3.{u_1}ordConnected_C3.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      (ℭ₃ k n j).OrdConnectedLemma 5.3.8  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (ℭ₃ℭ₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `ℭ₃(k, n, j)` of `ℭ₂(k, n, j)`, given in (5.1.16).  k n j).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    theorem ordConnected_C3.{u_1}ordConnected_C3.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      (ℭ₃ k n j).OrdConnectedLemma 5.3.8  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (ℭ₃ℭ₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `ℭ₃(k, n, j)` of `ℭ₂(k, n, j)`, given in (5.1.16).  k n j).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    Lemma 5.3.8 

Proof. Let \fp \le \fp' \le \fp'' with \fp, \fp'' \in \fC_3(k,n,j). By eq-C3-def and Lemma 1.51 it follows that \fp' \in \fC_2(k,n,j). By eq-C3-def and eq-L2-def, there exists \fu \in \fU_1(k,n,j) with 2\fp'' \lesssim \fu and \scI(\fp'') \subsetneq \scI(\fu). From \fp' \le \fp'', eq-sc1 and transitivity of \lesssim we then have 2\fp' \lesssim \fu and \scI(\fp') \subsetneq \scI(\fu), so \fp' \in \fC_3(k,n,j).

Lemma1.53
L∃∀Nused by 1

Uses Lemma 1.52. For each k,n,j, the collection \fC_4(k,n,j) is convex.

Lean code for Lemma1.531 theorem
  • complete
    theorem ordConnected_C4.{u_1}ordConnected_C4.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      (ℭ₄ k n j).OrdConnectedLemma 5.3.9  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (ℭ₄ℭ₄.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `ℭ₄(k, n, j)` of `ℭ₃(k, n, j)`, given in (5.1.19).  k n j).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    theorem ordConnected_C4.{u_1}ordConnected_C4.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      (ℭ₄ k n j).OrdConnectedLemma 5.3.9  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (ℭ₄ℭ₄.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `ℭ₄(k, n, j)` of `ℭ₃(k, n, j)`, given in (5.1.19).  k n j).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    Lemma 5.3.9 

Proof. The proof is entirely analogous to Lemma 1.51, substituting \fC_4 for \fC_2, \fC_3 for \fC_1 and \fp'\le\fp'' for \fp\le\fp'.

Lemma1.54
L∃∀Nused by 1

Uses Lemma 1.53. For each k,n,j, the collection \fC_5(k,n,j) is convex.

Lean code for Lemma1.541 theorem
  • complete
    theorem ordConnected_C5.{u_1}ordConnected_C5.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      (ℭ₅ k n j).OrdConnectedLemma 5.3.10  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (ℭ₅ℭ₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `ℭ₅(k, n, j)` of `ℭ₄(k, n, j)`, given in (5.1.23).  k n j).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    theorem ordConnected_C5.{u_1}ordConnected_C5.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      (ℭ₅ k n j).OrdConnectedLemma 5.3.10  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : (ℭ₅ℭ₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `ℭ₅(k, n, j)` of `ℭ₄(k, n, j)`, given in (5.1.23).  k n j).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    Lemma 5.3.10 

Proof. Let \fp \le \fp' \le\fp'' with \fp, \fp'' \in \fC_5(k,n,j). Then \fp, \fp'' \in \fC_4(k,n,j) by defc5, and thus by Lemma 1.53 \fp' \in \fC_4(k,n,j). It suffices to show that if \fp' \in \fL_4(k,n,j) then \fp \in \fL_4(k,n,j) by contraposition; this is true by eq-L4-def and \fp\le\fp'.

Lemma1.55
L∃∀Nused by 1

We have for every k\ge 0 and \fP'\subset \fP(k) \dens_1(\fP')\le \dens_k'(\fP').

Lean code for Lemma1.551 theorem
  • theoremdefined in Carleson/Discrete/Defs.lean
    complete
    theorem dens1_le_dens'.{u_1}dens1_le_dens'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k : ℕ}
      {P : Set (𝔓 X)} (hP : P ⊆ TilesAt k) : dens₁ P ≤ dens' k PLemma 5.3.11  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {PSet (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} (hPP ⊆ TilesAt k : PSet (𝔓 X) HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. TilesAtTilesAt.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k : ℕ) : Set (𝔓 X)The definition `𝔓(k)` given in (5.1.3).  k) : dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  PSet (𝔓 X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. dens'dens'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k : ℕ)
      (P' : Set (𝔓 X)) : ENNRealThe definition `dens'_k(𝔓')` given in (5.1.6).  k PSet (𝔓 X)
    theorem dens1_le_dens'.{u_1}dens1_le_dens'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k : ℕ}
      {P : Set (𝔓 X)} (hP : P ⊆ TilesAt k) : dens₁ P ≤ dens' k PLemma 5.3.11  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {PSet (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)}
      (hPP ⊆ TilesAt k : PSet (𝔓 X) HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. TilesAtTilesAt.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k : ℕ) : Set (𝔓 X)The definition `𝔓(k)` given in (5.1.3).  k) :
      dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  PSet (𝔓 X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. dens'dens'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k : ℕ)
      (P' : Set (𝔓 X)) : ENNRealThe definition `dens'_k(𝔓')` given in (5.1.6).  k PSet (𝔓 X)
    Lemma 5.3.11 

Proof. It suffices to show that for all \fp'\in \fP' and \lambda\ge 2 and \fp\in \fP(\fP') with \lambda \fp' \lesssim \lambda \fp we have \frac{\mu({E}_2(\lambda, \fp))}{\mu(\scI(\fp))} \le \sup_{\fp'' \in \fP(k): \lambda \fp' \lesssim \lambda \fp''} \frac{\mu({E}_2(\lambda, \fp''))}{\mu(\scI(\fp''))}. Let such \fp', \lambda, \fp be given. It suffices to show that \fp\in \fP(k), that is, it satisfies muhj1 and muhj2. We show muhj1. As \fp\in \fP(\fP'), there exists \fp''\in \fP' with \scI(\fp')\subset \scI(\fp''). By assumption on \fP', we have \fp''\in \fP(k) and there exists J\in \mathcal{D} with \scI(\fp'')\subset J and \mu(G\cap J)>2^{-k-1} \mu(J). Then also \scI(\fp')\subset J, which proves muhj1 for \fp. We show muhj2. Assume to get a contradiction that there exists J\in \mathcal{D} with \scI(\fp)\subset J and \mu(G\cap J)>2^{-k} \mu(J). As \lambda\fp'\lesssim \lambda\fp, we have \scI(\fp')\subset \scI(\fp), and therefore \scI(\fp')\subset J. This contradicts \fp'\in \fP'\subset \fP(k). This proves muhj2 for \fp.

Lemma1.56
L∃∀N
Used by 2
Hover a use site to preview it.
Preview
Lemma 1.33
Loading preview
Hover a use site to preview it.

Uses Lemma 1.55. For each set \mathfrak{A} \subset \mathfrak{C}(k,n), we have \dens_1(\mathfrak{A}) \le 2^{4a}2^{-n+1}.

Lean code for Lemma1.561 theorem
  • theoremdefined in Carleson/Discrete/Defs.lean
    complete
    theorem dens1_le.{u_1}dens1_le.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n : ℕ}
      {A : Set (𝔓 X)} (hA : A ⊆ ℭ k n) : dens₁ A ≤ 2 ^ (4 * ↑a - ↑n + 1)Lemma 5.3.12  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {ASet (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} (hAA ⊆ ℭ k n : ASet (𝔓 X) HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. ℭ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n : ℕ) :
      Set (𝔓 X)The partition `ℭ(k, n)` of `𝔓(k)` by density, given in (5.1.7).  k n) :
      dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ASet (𝔓 X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.4 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). n +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    theorem dens1_le.{u_1}dens1_le.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n : ℕ}
      {A : Set (𝔓 X)} (hA : A ⊆ ℭ k n) : dens₁ A ≤ 2 ^ (4 * ↑a - ↑n + 1)Lemma 5.3.12  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {ASet (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)}
      (hAA ⊆ ℭ k n : ASet (𝔓 X) HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. ℭ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n : ℕ) :
      Set (𝔓 X)The partition `ℭ(k, n)` of `𝔓(k)` by density, given in (5.1.7).  k n) :
      dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ASet (𝔓 X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.4 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). n +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    Lemma 5.3.12 

Proof. We have by Lemma 1.55 that \dens_1(\mathfrak{A}) \le \dens_k'(\mathfrak{A}). Since \mathfrak{A} \subset \fC(k,n), it follows from monotonicity of suprema and the definition eq-densdef that \dens_k'(\mathfrak{A}) \le \dens_k'(\fC(k,n)). By eq-densdef and def-cnk, we have \dens_k'(\fC(k,n)) = \sup_{\fp \in \fC(k,n)} \dens_k'(\{\fp\}) \le 2^{4a}2^{-n+1}.

1.5.4. Proof of the Forest Union Lemma🔗

Fix k,n,j\ge 0. Define \fC_6(k,n,j) to be the set of all tiles \fp \in \fC_5(k,n,j) such that \scI(\fp) \not\subset G'. The following chain of lemmas establishes that the set \fC_6(k,n,j) can be written as a union of a small number of n-forests.

For \fu\in \fU_1(k,n,j), define \mathfrak{T}_1(\fu):= \{\fp \in \fC_1(k,n,j) \ : \scI(\fp)\neq \scI(\fu), \ 2\fp \lesssim \fu\}. Define \fU_2(k,n,j) := \{ \fu \in \fU_1(k,n,j) \, : \, \mathfrak{T}_1(\fu) \cap \fC_6(k,n,j) \ne \emptyset\}.

Define a relation \sim on \fU_2(k,n,j) by setting \fu\sim \fu' for \fu,\fu'\in \fU_2(k,n,j) if \fu=\fu' or there exists \fp in \mathfrak{T}_1(\fu) with 10 \fp\lesssim \fu'.

Lemma1.57
L∃∀N
Used by 3
Hover a use site to preview it.

Uses Lemma 1.47. If \fu \sim \fu', then \scI(u) = \scI(u') and B_{\fu}(\fcc(\fu), 100) \cap B_{\fu'}(\fcc(\fu'), 100) \neq \emptyset.

Lean code for Lemma1.572 theorems
  • complete
    theorem URel.eq.{u_1}URel.eq.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {u u' : 𝔓 X} (hu : u ∈ 𝔘₂ k n j) (hu' : u' ∈ 𝔘₂ k n j) (huu' : URel k n j u u') : 𝓘 u = 𝓘 u'Lemma 5.4.1, part 1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {u𝔓 X u'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (huu ∈ 𝔘₂ k n j : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₂𝔘₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔘₂(k, n, j)` of `𝔘₁(k, n, j)`, given in (5.4.2).  k n j) (hu'u' ∈ 𝔘₂ k n j : u'𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₂𝔘₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔘₂(k, n, j)` of `𝔘₁(k, n, j)`, given in (5.4.2).  k n j)
      (huu'URel k n j u u' : URelURel.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u u' : 𝔓 X) : PropThe relation `∼` defined below (5.4.2). It is an equivalence relation on `𝔘₂ k n j`.  k n j u𝔓 X u'𝔓 X) : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u𝔓 X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u'𝔓 X
    theorem URel.eq.{u_1}URel.eq.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {u u' : 𝔓 X} (hu : u ∈ 𝔘₂ k n j) (hu' : u' ∈ 𝔘₂ k n j) (huu' : URel k n j u u') : 𝓘 u = 𝓘 u'Lemma 5.4.1, part 1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {u𝔓 X u'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (huu ∈ 𝔘₂ k n j : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₂𝔘₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔘₂(k, n, j)` of `𝔘₁(k, n, j)`, given in (5.4.2).  k n j)
      (hu'u' ∈ 𝔘₂ k n j : u'𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₂𝔘₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔘₂(k, n, j)` of `𝔘₁(k, n, j)`, given in (5.4.2).  k n j)
      (huu'URel k n j u u' : URelURel.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u u' : 𝔓 X) : PropThe relation `∼` defined below (5.4.2). It is an equivalence relation on `𝔘₂ k n j`.  k n j u𝔓 X u'𝔓 X) : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u𝔓 X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u'𝔓 X
    Lemma 5.4.1, part 1. 
  • complete
    theorem URel.not_disjoint.{u_1}URel.not_disjoint.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {u u' : 𝔓 X} (hu : u ∈ 𝔘₂ k n j) (hu' : u' ∈ 𝔘₂ k n j) (huu' : URel k n j u u') :
      ¬Disjoint (ball_{𝔠 u, ↑(defaultD a) ^ 𝔰 u / 4} (𝒬 u) 100) (ball_{𝔠 u', ↑(defaultD a) ^ 𝔰 u' / 4} (𝒬 u') 100)Lemma 5.4.1, part 2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {u𝔓 X u'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (huu ∈ 𝔘₂ k n j : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₂𝔘₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔘₂(k, n, j)` of `𝔘₁(k, n, j)`, given in (5.4.2).  k n j) (hu'u' ∈ 𝔘₂ k n j : u'𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₂𝔘₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔘₂(k, n, j)` of `𝔘₁(k, n, j)`, given in (5.4.2).  k n j)
      (huu'URel k n j u u' : URelURel.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u u' : 𝔓 X) : PropThe relation `∼` defined below (5.4.2). It is an equivalence relation on `𝔘₂ k n j`.  k n j u𝔓 X u'𝔓 X) :
      ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  (ball_{Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X u𝔓 X,Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ u𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X) 100)
          (ball_{Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X u'𝔓 X,Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ u'𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u'𝔓 X) 100)
    theorem URel.not_disjoint.{u_1}URel.not_disjoint.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {u u' : 𝔓 X} (hu : u ∈ 𝔘₂ k n j) (hu' : u' ∈ 𝔘₂ k n j) (huu' : URel k n j u u') :
      ¬Disjoint (ball_{𝔠 u, ↑(defaultD a) ^ 𝔰 u / 4} (𝒬 u) 100) (ball_{𝔠 u', ↑(defaultD a) ^ 𝔰 u' / 4} (𝒬 u') 100)Lemma 5.4.1, part 2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {u𝔓 X u'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (huu ∈ 𝔘₂ k n j : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₂𝔘₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔘₂(k, n, j)` of `𝔘₁(k, n, j)`, given in (5.4.2).  k n j)
      (hu'u' ∈ 𝔘₂ k n j : u'𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₂𝔘₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔘₂(k, n, j)` of `𝔘₁(k, n, j)`, given in (5.4.2).  k n j)
      (huu'URel k n j u u' : URelURel.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u u' : 𝔓 X) : PropThe relation `∼` defined below (5.4.2). It is an equivalence relation on `𝔘₂ k n j`.  k n j u𝔓 X u'𝔓 X) :
      ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments. 
          (ball_{Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X u𝔓 X,Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ u𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 
            (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X) 100)
          (ball_{Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X u'𝔓 X,Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 
              (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ u'𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 
            (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u'𝔓 X) 100)
    Lemma 5.4.1, part 2. 

Proof. Let \fu, \fu' \in \fU_2(k,n,j) with \fu \sim \fu'. If \fu = \fu' then the conclusion of the Lemma clearly holds. Else, there exists \fp \in \fC_1(k,n,j) such that \scI(\fp) \ne \scI(\fu) and 2 \fp \lesssim \fu and 10 \fp \lesssim \fu'. Using Lemma 1.45 and eq-sc2 of Lemma 1.47, we deduce that 100 \fp\lesssim 100 \fu\,, \qquad 100 \fp \lesssim 100\fu'. Now suppose that B_{\fu}(\fcc(\fu), 100) \cap B_{\fu'}(\fcc(\fu'), 100) = \emptyset. Then we have \mathfrak{B}(\fu) \cap \mathfrak{B}(\fu') = \emptyset, by the definition defbfp of \mathfrak{B} and the definition wiggleorder of \lesssim, but also \mathfrak{B}(\fu) \subset \mathfrak{B}(\fp) and \mathfrak{B}(\fu') \subset \mathfrak{B}(\fp), by defbfp, wiggleorder and the previous estimate. Hence |\mathfrak{B}(\fp)| \geq |\mathfrak{B}(\fu)| + |\mathfrak{B}(\fu')| \geq 2^{j} + 2^j = 2^{j+1}, which contradicts \fp \in \fC_1(k,n,j). Therefore we must have B_{\fu}(\fcc(\fu), 100) \cap B_{\fu'}(\fcc(\fu'), 100) \ne \emptyset.

It follows from 2\fp \lesssim \fu and 10\fp \lesssim \fu' that \scI(\fp) \subset \scI(\fu) and \scI(\fp) \subset \scI(\fu'). By dyadicproperty, it follows that \scI(\fu) and \scI(\fu') are nested. Combining this with the conclusion of the last paragraph and definition defunkj of \fU_1(k,n,j), we obtain that \scI(\fu) = \scI(\fu').

Lemma1.58
L∃∀Nused by 1

Uses Lemma 1.57. For each k,n,j, the relation \sim on \fU_2(k,n,j) is an equivalence relation.

Lean code for Lemma1.581 theorem
  • complete
    theorem equivalenceOn_urel.{u_1}equivalenceOn_urel.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      EquivalenceOn (URel k n j) (𝔘₂ k n j)Lemma 5.4.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : EquivalenceOnEquivalenceOn.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn equivalence relation on the set `s`.  (URelURel.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u u' : 𝔓 X) : PropThe relation `∼` defined below (5.4.2). It is an equivalence relation on `𝔘₂ k n j`.  k n j) (𝔘₂𝔘₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔘₂(k, n, j)` of `𝔘₁(k, n, j)`, given in (5.4.2).  k n j)
    theorem equivalenceOn_urel.{u_1}equivalenceOn_urel.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      EquivalenceOn (URel k n j) (𝔘₂ k n j)Lemma 5.4.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :
      EquivalenceOnEquivalenceOn.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn equivalence relation on the set `s`.  (URelURel.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u u' : 𝔓 X) : PropThe relation `∼` defined below (5.4.2). It is an equivalence relation on `𝔘₂ k n j`.  k n j) (𝔘₂𝔘₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔘₂(k, n, j)` of `𝔘₁(k, n, j)`, given in (5.4.2).  k n j)
    Lemma 5.4.2. 

Proof. Reflexivity holds by definition. For transitivity, suppose that \fu, \fu', \fu'' \in \fU_1(k,n,j) and \fu \sim \fu', \fu' \sim \fu''. By Lemma 1.57, it follows that \scI(\fu) =\scI(\fu') = \scI(\fu''), that there exists \mfa \in B_{\fu}(\fcc(\fu), 100) \cap B_{\fu'}(\fcc(\fu'), 100) and that there exists \mfb \in B_{\fu'}(\fcc(\fu'), 100) \cap B_{\fu''}(\fcc(\fu''), 100). If \fu = \fu', then \fu \sim \fu'' holds by assumption. Else, there exists by the definition of \sim some \fp \in \mathfrak{T}_1(\fu) with 10\fp\lesssim \fu'. Then we have 2\fp \lesssim \fu and \fp \ne \fu by definition of \mathfrak{T}_1(\fu), so 4 \fp \lesssim 500 \fu by eq-sc3. For q \in B_{\fu''}(\fcc(\fu''), 1) it follows by the triangle inequality that d_{\fu}(\fcc(\fu), q) \le d_{\fu}(\fcc(\fu), \mfa) + d_{\fu}(\mfa, \fcc(\fu')) + d_{\fu}(\fcc(\fu'), \mfb) + d_{\fu}(\mfb, \fcc(\fu'')) + d_{\fu}(\fcc(\fu''), q). Using defdp and the fact that \scI(\fu) = \scI(\fu') = \scI(\fu'') this equals d_{\fu}(\fcc(\fu), \mfa) + d_{\fu'}(\mfa, \fcc(\fu')) + d_{\fu'}(\fcc(\fu'), \mfb) + d_{\fu''}(\mfb, \fcc(\fu'')) + d_{\fu''}(\fcc(\fu''), q) < 100 + 100 + 100 + 100 + 1 < 500. Since 4\fp \lesssim 500 \fu, it follows that d_{\fp}(\fcc(\fp), q) < 4 < 10. We have shown that B_{\fu''}(\fcc(\fu''), 1) \subset B_{\fp}(\fcc(\fp), 10), combining this with \scI(\fu'') = \scI(\fu) gives \fu \sim \fu''. For symmetry, suppose that \fu \sim \fu'. By Lemma 1.57, the two tops have the same spatial cube and their 100-balls in the frequency metric intersect. If \fu = \fu', there is nothing to prove, so assume \fu \ne \fu'. Then some tile in \mathfrak{T}_1(\fu') witnesses the relation, and Lemma 1.45 together with eq-sc3 upgrades this to the comparison 10\fp \lesssim 4\fp \lesssim 500 \fu'. For any q ∈ B_{\fu}(\fcc(\fu),1), the triangle inequality and the equality of the underlying cubes give a bound d_{\fu'}(\fcc(\fu'), q) < 500. Combining this with the previous comparison and the definition of \lesssim shows that B_{\fu}(\fcc(\fu), 1) ⊆ B_{\fp}(\fcc(\fp), 10). Since 2\fp \lesssim \fu', we also have \scI(\fp) ⊆ \scI(\fu') = \scI(\fu), and hence the required comparison proving \fu' \sim \fu.

Choose a set \fU_3(k,n,j) of representatives for the equivalence classes of \sim in \fU_2(k,n,j). Define for each \fu\in \fU_3(k,n,j) \fT_2(\fu):= \bigcup_{\fu\sim \fu'}\mathfrak{T}_1(\fu')\cap \fC_6(k,n,j).

Lemma1.59
L∃∀Nused by 1

Uses Lemma 1.58. We have \fC_6(k,n,j)=\bigcup_{\fu\in \fU_3(k,n,j)}\mathfrak{T}_2(\fu).

Lean code for Lemma1.591 theorem
  • complete
    theorem C6_forest.{u_1}C6_forest.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      ℭ₆ k n j = ⋃ u ∈ 𝔘₃ k n j, 𝔗₂ k n j uLemma 5.4.3  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : ℭ₆ℭ₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `ℭ₆(k, n, j)` of `ℭ₅(k, n, j)`, given above (5.4.1).  k n j =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.  u𝔓 X  𝔘₃𝔘₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)`𝔘₃(k, n, j) ⊆ 𝔘₂ k n j` is an arbitary set of representatives of `URel` on `𝔘₂ k n j`,
    given above (5.4.5).  k n j, 𝔗₂𝔗₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u : 𝔓 X) : Set (𝔓 X)The subset `𝔗₂(u)` of `ℭ₆(k, n, j)`, given in (5.4.5).
    In lemmas, we will assume `u ∈ 𝔘₃ k n l`  k n j u𝔓 X
    theorem C6_forest.{u_1}C6_forest.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      ℭ₆ k n j = ⋃ u ∈ 𝔘₃ k n j, 𝔗₂ k n j uLemma 5.4.3  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :
      ℭ₆ℭ₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `ℭ₆(k, n, j)` of `ℭ₅(k, n, j)`, given above (5.4.1).  k n j =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.  u𝔓 X  𝔘₃𝔘₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)`𝔘₃(k, n, j) ⊆ 𝔘₂ k n j` is an arbitary set of representatives of `URel` on `𝔘₂ k n j`,
    given above (5.4.5).  k n j, 𝔗₂𝔗₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u : 𝔓 X) : Set (𝔓 X)The subset `𝔗₂(u)` of `ℭ₆(k, n, j)`, given in (5.4.5).
    In lemmas, we will assume `u ∈ 𝔘₃ k n l`  k n j u𝔓 X
    Lemma 5.4.3 

Proof. Let \fp \in \fC_6(k,n,j). By eq-C4-def and defc5, we have \fp \in \fC_3(k,n,j). By eq-L2-def and eq-C3-def, there exists \fu \in \fU_1(k,n,j) with 2\fp \lesssim \fu and \scI(\fp) \ne \scI(\fu), that is, with \fp \in \mathfrak{T}_1(\fu). Then \mathfrak{T}_1(\fu) is clearly nonempty, so \fu \in \fU_2(k,n,j). By the definition of \fU_3(k,n,j), there exists \fu' \in \fU_3(k,n,j) with \fu \sim \fu'. By definesv, we have \fp \in \mathfrak{T}_2(\fu').

Lemma1.60
L∃∀Nused by 1

Uses Lemma 1.57. For each \fu\in \fU_3(k,n,j), the set \mathfrak{T}_2(\fu) satisfies forest1.

Lean code for Lemma1.601 theorem
  • complete
    theorem forest_geometry.{u_1}forest_geometry.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {p u : 𝔓 X} (hu : u ∈ 𝔘₃ k n j) (hp : p ∈ 𝔗₂ k n j u) : smul 4 p ≤ smul 1 uLemma 5.4.4, verifying (2.0.32)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {p𝔓 X u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (huu ∈ 𝔘₃ k n j : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₃𝔘₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)`𝔘₃(k, n, j) ⊆ 𝔘₂ k n j` is an arbitary set of representatives of `URel` on `𝔘₂ k n j`,
    given above (5.4.5).  k n j) (hpp ∈ 𝔗₂ k n j u : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔗₂𝔗₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u : 𝔓 X) : Set (𝔓 X)The subset `𝔗₂(u)` of `ℭ₆(k, n, j)`, given in (5.4.5).
    In lemmas, we will assume `u ∈ 𝔘₃ k n l`  k n j u𝔓 X) :
      smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  4 p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  1 u𝔓 X
    theorem forest_geometry.{u_1}forest_geometry.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {p u : 𝔓 X} (hu : u ∈ 𝔘₃ k n j) (hp : p ∈ 𝔗₂ k n j u) : smul 4 p ≤ smul 1 uLemma 5.4.4, verifying (2.0.32)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {p𝔓 X u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (huu ∈ 𝔘₃ k n j : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₃𝔘₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)`𝔘₃(k, n, j) ⊆ 𝔘₂ k n j` is an arbitary set of representatives of `URel` on `𝔘₂ k n j`,
    given above (5.4.5).  k n j)
      (hpp ∈ 𝔗₂ k n j u : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔗₂𝔗₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u : 𝔓 X) : Set (𝔓 X)The subset `𝔗₂(u)` of `ℭ₆(k, n, j)`, given in (5.4.5).
    In lemmas, we will assume `u ∈ 𝔘₃ k n l`  k n j u𝔓 X) :
      smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  4 p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  1 u𝔓 X
    Lemma 5.4.4, verifying (2.0.32) 

Proof. Let \fp \in \mathfrak{T}_2(\fu). By definesv, there exists \fu' \sim \fu with \fp \in \mathfrak{T}_1(\fu'). Then we have 2\fp \lesssim \fu' and \scI(\fp) \ne \scI(\fu'), so by eq-sc3 4\fp \lesssim 500\fu'. Further, by Lemma 1.57, we have that \scI(\fu') = \scI(\fu) and there exists \mfa \in B_{\fu'}(\fcc(\fu'),100) \cap B_{\fu}(\fcc(\fu),100). Let \mfb \in B_{\fu}(\fcc(\fu), 1). Using the triangle inequality and the fact that \scI(\fu') =\scI(\fu), we obtain d_{\fu'}(\fcc(\fu'), \mfb) \le d_{\fu'}(\fcc(\fu'), \mfa) + d_{\fu'}(\fcc(\fu), \mfa) + d_{\fu'}(\fcc(\fu), \mfb) = d_{\fu'}(\fcc(\fu'), \mfa) + d_{\fu}(\fcc(\fu), \mfa) + d_{\fu}(\fcc(\fu), \mfb) < 100 + 100 + 1 < 500. Combining this with 4\fp \lesssim 500\fu', we obtain B_{\fu}(\fcc(\fu), 1) \subset B_{\fu'}(\fcc(\fu'), 500) \subset B_{\fp}(\fcc(\fp), 4). Together with \scI(\fp) \subset \scI(\fu') = \scI(\fu), this gives 4\fp \lesssim \fu, which is forest1.

Lemma1.61
L∃∀Nused by 1

Uses Lemma 1.54. For each \fu\in \fU_3(k,n,j), the set \mathfrak{T}_2(\fu) satisfies the convexity condition forest2.

Lean code for Lemma1.611 theorem
  • complete
    theorem forest_convex.{u_1}forest_convex.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {u : 𝔓 X} : (𝔗₂ k n j u).OrdConnectedLemma 5.4.5, verifying (2.0.33)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} : (𝔗₂𝔗₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u : 𝔓 X) : Set (𝔓 X)The subset `𝔗₂(u)` of `ℭ₆(k, n, j)`, given in (5.4.5).
    In lemmas, we will assume `u ∈ 𝔘₃ k n l`  k n j u𝔓 X).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    theorem forest_convex.{u_1}forest_convex.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {u : 𝔓 X} : (𝔗₂ k n j u).OrdConnectedLemma 5.4.5, verifying (2.0.33)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} :
      (𝔗₂𝔗₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u : 𝔓 X) : Set (𝔓 X)The subset `𝔗₂(u)` of `ℭ₆(k, n, j)`, given in (5.4.5).
    In lemmas, we will assume `u ∈ 𝔘₃ k n l`  k n j u𝔓 X).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    Lemma 5.4.5, verifying (2.0.33) 

Proof. Let \fp, \fp'' \in \mathfrak{T}_2(\fu) and \fp' \in \fP with \fp \le \fp' \le \fp''. By definesv we have \fp, \fp'' \in \fC_6(k,n,j) \subset \fC_5(k,n,j). By Lemma 1.54, we have \fp' \in \fC_5(k,n,j). Since \fp \in \fC_6(k,n,j) we have \scI(\fp) \not \subset G', so \scI(\fp') \not \subset G' and therefore also \fp' \in \fC_6(k,n,j). By definesv there exists \fu' \in \fU_2(k,n,j) with \fp'' \in \mathfrak{T}_1(\fu') and hence 2\fp'' \lesssim \fu' and \scI(\fp'') \ne \scI(\fu'). Together this implies \scI(\fp'') \subsetneq \scI(\fu'). With the inclusion \scI(\fp') \subset \scI(\fp'') from \fp' \le \fp'', it follows that \scI(\fp') \subsetneq \scI(\fu') and hence \scI(\fp') \ne \scI(\fu'). By eq-sc1 and transitivity of \lesssim we further have 2\fp' \lesssim \fu', so \fp' \in \mathfrak{T}_1(\fu'). It follows that \fp' \in \mathfrak{T}_2(\fu), which shows forest2.

Lemma1.62
L∃∀Nused by 1

Uses Lemma 1.11. For each \fu,\fu'\in \fU_3(k,n,j) with \fu\neq \fu' and each \fp \in \fT_2(\fu) with \scI(\fp)\subset \scI(\fu') we have d_{\fp}(\fcc(\fp), \fcc(\fu')) > 2^{Z(n+1)}.

Lean code for Lemma1.621 theorem
  • complete
    theorem forest_separation.{u_1}forest_separation.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {p u u' : 𝔓 X} (hu : u ∈ 𝔘₃ k n j) (hu' : u' ∈ 𝔘₃ k n j) (huu' : u ≠ u') (hp : p ∈ 𝔗₂ k n j u') (h : 𝓘 p ≤ 𝓘 u) :
      2 ^ (defaultZ a * (n + 1)) < dist_{𝔠 p, ↑(defaultD a) ^ 𝔰 p / 4} (𝒬 p) (𝒬 u)Lemma 5.4.6, verifying (2.0.36)
    Note: swapped `u` and `u'` to match (2.0.36)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {p𝔓 X u𝔓 X u'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (huu ∈ 𝔘₃ k n j : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₃𝔘₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)`𝔘₃(k, n, j) ⊆ 𝔘₂ k n j` is an arbitary set of representatives of `URel` on `𝔘₂ k n j`,
    given above (5.4.5).  k n j) (hu'u' ∈ 𝔘₃ k n j : u'𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₃𝔘₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)`𝔘₃(k, n, j) ⊆ 𝔘₂ k n j` is an arbitary set of representatives of `URel` on `𝔘₂ k n j`,
    given above (5.4.5).  k n j)
      (huu'u ≠ u' : u𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u'𝔓 X) (hpp ∈ 𝔗₂ k n j u' : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔗₂𝔗₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u : 𝔓 X) : Set (𝔓 X)The subset `𝔗₂(u)` of `ℭ₆(k, n, j)`, given in (5.4.5).
    In lemmas, we will assume `u ∈ 𝔘₃ k n l`  k n j u'𝔓 X) (h𝓘 p ≤ 𝓘 u : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u𝔓 X) :
      2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.defaultZdefaultZ (a : ℕ) : ℕThe constant `Z` from (2.0.3).  a *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.n +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`.
        dist_{Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X,Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p𝔓 X) (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X)
    theorem forest_separation.{u_1}forest_separation.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {p u u' : 𝔓 X} (hu : u ∈ 𝔘₃ k n j) (hu' : u' ∈ 𝔘₃ k n j) (huu' : u ≠ u') (hp : p ∈ 𝔗₂ k n j u') (h : 𝓘 p ≤ 𝓘 u) :
      2 ^ (defaultZ a * (n + 1)) < dist_{𝔠 p, ↑(defaultD a) ^ 𝔰 p / 4} (𝒬 p) (𝒬 u)Lemma 5.4.6, verifying (2.0.36)
    Note: swapped `u` and `u'` to match (2.0.36)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {p𝔓 X u𝔓 X u'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (huu ∈ 𝔘₃ k n j : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₃𝔘₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)`𝔘₃(k, n, j) ⊆ 𝔘₂ k n j` is an arbitary set of representatives of `URel` on `𝔘₂ k n j`,
    given above (5.4.5).  k n j)
      (hu'u' ∈ 𝔘₃ k n j : u'𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₃𝔘₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)`𝔘₃(k, n, j) ⊆ 𝔘₂ k n j` is an arbitary set of representatives of `URel` on `𝔘₂ k n j`,
    given above (5.4.5).  k n j) (huu'u ≠ u' : u𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u'𝔓 X)
      (hpp ∈ 𝔗₂ k n j u' : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔗₂𝔗₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u : 𝔓 X) : Set (𝔓 X)The subset `𝔗₂(u)` of `ℭ₆(k, n, j)`, given in (5.4.5).
    In lemmas, we will assume `u ∈ 𝔘₃ k n l`  k n j u'𝔓 X) (h𝓘 p ≤ 𝓘 u : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u𝔓 X) :
      2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.defaultZdefaultZ (a : ℕ) : ℕThe constant `Z` from (2.0.3).  a *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.n +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`.
        dist_{Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X,Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points 
          (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p𝔓 X) (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X)
    Lemma 5.4.6, verifying (2.0.36)
    Note: swapped `u` and `u'` to match (2.0.36) 

Proof. By the definition eq-C2-def of \fC_2(k,n,j), there exists a tile \fp' \in \fC_1(k,n,j) with \fp' \le \fp and \ps(\fp') \le \ps(\fp)- Z(n+1). By Lemma 1.11 we have d_{\fp}(\fcc(\fp), \fcc(\fu')) \ge 2^{95a Z(n+1)} d_{\fp'}(\fcc(\fp), \fcc(\fu')). By eq-sc1 we have 2\fp' \lesssim 2\fp, so by transitivity there exists a tile \mathfrak{v} equivalent to \fu with 2\fp' \lesssim \mathfrak{v} and with spatial cube different from that of \fp'. Since \fu and \fu' are not equivalent under \sim, it follows that 10\fp' \not\lesssim \fu', so there is a point q in B_{\fu'}(\fcc(\fu'), 1) but outside B_{\fp'}(\fcc(\fp'), 10). Using \fp' \le \fp, \scI(\fp') \subset \scI(\fp) \subset \scI(\fu'), and Lemma 1.11, one gets a lower bound for d_{\fp'}(\fcc(\fp), \fcc(\fu')) that is strictly greater than 8. Combining this with the first display and the fact that 95 a ≥ 1 gives the claimed lower bound.

Lemma1.63
L∃∀Nused by 1

Uses Lemma 1.57. For each \fu\in \fU_3(k,n,j) and each \fp \in \mathfrak{T}_2(\fu) we have B(\pc(\fp), 8 D^{\ps(\fp)}) \subset \scI(\fu).

Lean code for Lemma1.631 theorem
  • complete
    theorem forest_inner.{u_1}forest_inner.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {p u : 𝔓 X} (hu : u ∈ 𝔘₃ k n j) (hp : p ∈ 𝔗₂ k n j u) : Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p) ⊆ ↑(𝓘 u)Lemma 5.4.7, verifying (2.0.37)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {p𝔓 X u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (huu ∈ 𝔘₃ k n j : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₃𝔘₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)`𝔘₃(k, n, j) ⊆ 𝔘₂ k n j` is an arbitary set of representatives of `URel` on `𝔘₂ k n j`,
    given above (5.4.5).  k n j) (hpp ∈ 𝔗₂ k n j u : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔗₂𝔗₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u : 𝔓 X) : Set (𝔓 X)The subset `𝔗₂(u)` of `ℭ₆(k, n, j)`, given in (5.4.5).
    In lemmas, we will assume `u ∈ 𝔘₃ k n l`  k n j u𝔓 X) :
      Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u𝔓 X)
    theorem forest_inner.{u_1}forest_inner.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ}
      {p u : 𝔓 X} (hu : u ∈ 𝔘₃ k n j) (hp : p ∈ 𝔗₂ k n j u) : Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p) ⊆ ↑(𝓘 u)Lemma 5.4.7, verifying (2.0.37)  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {p𝔓 X u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (huu ∈ 𝔘₃ k n j : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔘₃𝔘₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)`𝔘₃(k, n, j) ⊆ 𝔘₂ k n j` is an arbitary set of representatives of `URel` on `𝔘₂ k n j`,
    given above (5.4.5).  k n j)
      (hpp ∈ 𝔗₂ k n j u : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔗₂𝔗₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ)
      (u : 𝔓 X) : Set (𝔓 X)The subset `𝔗₂(u)` of `ℭ₆(k, n, j)`, given in (5.4.5).
    In lemmas, we will assume `u ∈ 𝔘₃ k n l`  k n j u𝔓 X) :
      Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X)
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`.
        (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u𝔓 X)
    Lemma 5.4.7, verifying (2.0.37) 

Proof. Let \fp \in \mathfrak{T}_2(\fu). Then \fp \in \fC_4(k,n,j), hence there exists a chain \fp \le \fp_{Z(n+1)} \le \dotsb \le \fp_0 of distinct tiles in \fC_3(n,k,j). We pick such a chain and set \fq = \fp_0. Then we have from distinctness of the tiles in the chain that \ps(\fp) \le \ps(\fq) - Z(n+1). By eq-C3-def there exists \fu'' \in \fU_1(k,n,j) with 2\fq \lesssim \fu'' and \ps(\fq) < \ps(\fu''). Then we have in particular by Lemma 1.45 that 10 \fp \lesssim \fu''. Let \fu' \sim \fu be such that \fp \in \mathfrak{T}_1(\fu'). By the definition of \sim, it follows that \fu' \sim \fu''. By transitivity of \sim, we have \fu \sim \fu''. By Lemma 1.57, we have \ps(\fu'') = \ps(\fu), hence \ps(\fq) < \ps(\fu) and \ps(\fp) \le \ps(\fq) - Z(n+1) \le \ps(\fu) - Z(n+1) - 1. Thus, there exists some cube I \in \mathcal{D} with s(I) = \ps(\fu) - Z(n+1) - 1 and I \subset \scI(\fu) and \scI(\fp) \subset I. Since \fp \in \fC_5(k,n,j), we have that I \notin \mathcal{L}(\fu), so B(c(I), 8D^{s(I)}) \subset \scI(\fu). By the triangle inequality, defineD and a \ge 4, the same then holds for the subcube \scI(\fp) \subset I.

Lemma1.64
L∃∀Nused by 1

It holds for k\le n that \sum_{\fu \in \fU_3(k,n,j)} \mathbf{1}_{\scI(\fu)} \le (4n+12)2^{n}.

Lean code for Lemma1.641 theorem
  • complete
    theorem forest_stacking.{u_1}forest_stacking.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} (x : X)
      (hkn : k ≤ n) : stackSize (𝔘₃ k n j) x ≤ C5_4_8 nLemma 5.4.8, used to verify that 𝔘₄ satisfies 2.0.34.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } (xX : XType u_1) (hknk ≤ n : k LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. n) : stackSizestackSize.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (C : Set (𝔓 X))
      (x : X) : ℕThe number of tiles `p` in `s` whose underlying cube `𝓘 p` contains `x`.  (𝔘₃𝔘₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)`𝔘₃(k, n, j) ⊆ 𝔘₂ k n j` is an arbitary set of representatives of `URel` on `𝔘₂ k n j`,
    given above (5.4.5).  k n j) xX LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. C5_4_8C5_4_8 (n : ℕ) : ℕThe multiplicity appearing in Lemma 5.4.8.  n
    theorem forest_stacking.{u_1}forest_stacking.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} (x : X)
      (hkn : k ≤ n) : stackSize (𝔘₃ k n j) x ≤ C5_4_8 nLemma 5.4.8, used to verify that 𝔘₄ satisfies 2.0.34.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } (xX : XType u_1) (hknk ≤ n : k LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. n) :
      stackSizestackSize.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (C : Set (𝔓 X))
      (x : X) : ℕThe number of tiles `p` in `s` whose underlying cube `𝓘 p` contains `x`.  (𝔘₃𝔘₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)`𝔘₃(k, n, j) ⊆ 𝔘₂ k n j` is an arbitary set of representatives of `URel` on `𝔘₂ k n j`,
    given above (5.4.5).  k n j) xX LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. C5_4_8C5_4_8 (n : ℕ) : ℕThe multiplicity appearing in Lemma 5.4.8.  n
    Lemma 5.4.8, used to verify that 𝔘₄ satisfies 2.0.34. 

Proof. Suppose that a point x is contained in more than (4n + 12)2^n cubes \scI(\fu) with \fu \in \fU_3(k,n,j). Since \fU_3(k,n,j) \subset \fC_1(k,n,j) for each such \fu, there exists \mathfrak{m} \in \mathfrak{M}(k,n) such that 100\fu \lesssim \mathfrak{m}. We fix such an \mathfrak{m}(\fu) := \mathfrak{m} for each \fu, and claim that the map \fu \mapsto\mathfrak{m}(\fu) is injective. Indeed, assume for \fu\neq \fu' there is \mathfrak{m} \in \mathfrak{M}(k,n) such that 100\fu \lesssim \mathfrak{m} and 100\fu' \lesssim \mathfrak{m}. By dyadicproperty, either \scI(\fu) \subset \scI(\fu') or \scI(\fu') \subset \scI(\fu). By defunkj, B_{\fu}(\fcc(\fu),100) \cap B_{\fu'}(\fcc(\fu'), 100) = \emptyset. This contradicts \Omega(\mathfrak{m}) being contained in both sets by eq-freq-comp-ball. Thus x is contained in more than (4n + 12)2^n cubes \scI(\mathfrak{m}), \mathfrak{m} \in \mathfrak{M}(k,n). Consequently, we have by eq-Aoverlap-def that x \in A(2n + 6, k,n) \subset G_2. Let \scI(\fu) be an inclusion minimal cube among the \scI(\fu'), \fu' \in \fU_3(k,n,j) with x \in \scI(\fu). By the dyadic property dyadicproperty, we have \scI(\fu) \subset \scI(\fu') for all cubes \scI(\fu') containing x. Thus \scI(\fu) \subset \{y \ : \ \sum_{\fu \in \fU_3(k,n,j)} \mathbf{1}_{\scI(\fu)}(y) > 1 + (4n+12)2^{n}\} \subset G_2. Thus \mathfrak{T}_1(\fu) \cap \fC_6(k,n,j) = \emptyset. This contradicts \fu \in \fU_2(k,n,j).

We now turn to the proof of Lemma 1.33.

Proof of Lemma 1.33. We first fix k,n, j. By definetp and defineep, we have that \mathbf{1}_{\scI(\fp)} T_{\fp}f(x) = T_{\fp}f(x) and hence \mathbf{1}_{G \setminus G'} T_{\fp}f(x)= 0 for all \fp \in \fC_5(k,n,j) \setminus \fC_6(k,n,j). Thus it suffices to estimate the contribution of the sets \fC_6(k,n,j). By Lemma 1.64, we can decompose \fU_3(k,n,j) as a disjoint union of at most 4n + 12 collections \fU_4(k,n,j,l), 1 \le l \le 4n+12, each satisfying \sum_{\fu \in \fU_4(k,n,j,l)} \mathbf{1}_{\scI(\fu)} \le 2^n. By Lemmas Lemma 1.60, Lemma 1.61, Lemma 1.62, Lemma 1.63, and Lemma 1.56, the pairs (\fU_4(k,n,j,l), \mathfrak{T}_2|_{\fU_4(k,n,j,l)}) are n-forests for each k,n,j,l, and by Lemma 1.59, we have \fC_6(k,n,j) = \bigcup_{l = 1}^{4n + 12} \bigcup_{\fu \in \fU_4(k,n,j,l)} \mathfrak{T}_2(\fu). Since \scI(\fp) \not\subset G_1 for all \fp \in \fC_6(k,n,j), we have \fC_6(k,n,j) \cap \fP_{F,G} = \emptyset and hence \dens_2(\bigcup_{\fu \in \fU_4(k,n,j,l)} \mathfrak{T}_2(\fu)) \le 2^{2a + 5} \frac{\mu(F)}{\mu(G)}. Using the triangle inequality according to the splitting by k,n,j and l in disclesssim1 and applying Theorem 1.7 to each term, we obtain the estimate \sum_{k \ge 0}\sum_{n \ge k} (2n+3)(4n+12) 2^{440a^3}2^{-(1-\frac{1}{q})n}(2^{2a+5} \frac{\mu(F)}{\mu(G)})^{\frac{1}{q} - \frac{1}{2}} \|f\|_2 \|\mathbf{1}_{G\setminus G'}\|_2 for the left hand side of disclesssim1. Since |f| \le \mathbf{1}_F, we have \|f\|_2 \le \mu(F)^{1/2}, and we have \|\mathbf{1}_{G\setminus G'}\|_2 \le \mu(G)^{1/2}. We get a bound 2^{440a^3} \mu(F)^{\frac{1}{q}} \mu(G)^{1 -\frac{1}{q}} 2^{2a+5}\sum_{k \ge 0}\sum_{n \ge k}(2n+3)(4n+12) 2^{-(1-\frac{1}{q})n}. Interchanging the order of summation, the last factor equals 2^{2a+5} \sum_{n \ge 0} (2n+3)(4n+12) (n+1) 2^{-\frac{q-1}{q}n}. Up to an explicit constant, the sum is bounded by \sum n^3 2^{-\frac{q-1}{q}n}, which is at most some constant times 1/(q-1)^4 by comparing to an integral. Since a \ge 4, this is overall bounded by 2^{a^3}/(q-1)^4, which completes the proof of the lemma.

1.5.5. Proof of the Forest Complement Lemma🔗

Define \fP_{G \setminus G'} to be the set of all \fp \in \fP such that \mu(\scI(\fp) \cap (G \setminus G')) > 0.

Lemma1.65
L∃∀Nused by 1

We have that \fP_2 \cap \fP_{G \setminus G'} = \bigcup_{k \ge 0} \bigcup_{n \ge k} \fL_0(k,n) \cap \fP_{G \setminus G'} \cup \bigcup_{k \ge 0} \bigcup_{n \ge k}\bigcup_{0 \le j \le 2n+3} \fL_2(k,n,j) \cap \fP_{G \setminus G'} \cup \bigcup_{k \ge 0} \bigcup_{n \ge k}\bigcup_{0 \le j \le 2n+3} \bigcup_{0 \le l \le Z(n+1)} \fL_1(k,n,j,l) \cap \fP_{G \setminus G'} \cup \bigcup_{k \ge 0} \bigcup_{n \ge k}\bigcup_{0 \le j \le 2n+3} \bigcup_{0 \le l \le Z(n+1)} \fL_3(k,n,j,l)\cap \fP_{G \setminus G'}.

Lean code for Lemma1.651 theorem
  • complete
    theorem antichain_decomposition.{u_1}antichain_decomposition.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      𝔓pos ∩ 𝔓₁ᶜ = ℜ₀ ∪ ℜ₁ ∪ ℜ₂ ∪ ℜ₃Lemma 5.5.1.
    
    We will not use the lemma in this form, as to decompose the Carleson sum it is also crucial that
    the union is disjoint. This is easier to formalize by decomposing into successive terms, taking
    advantage of disjointess at each step, instead of doing everything in one go. Still, we keep this
    lemma as it corresponds to the blueprint, and the key steps of its proof will also be the key steps
    when doing the successive decompositions.
     {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)] :
      𝔓pos𝔓pos.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The set 𝔓_{G\G'} in the blueprint  Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. 𝔓₁𝔓₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The set `𝔓₁`, defined in (5.1.30). Compl.compl.{u_1} {α : Type u_1} [self : Compl α] : α → αSet / lattice complement 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `ᶜ` in identifiers is `compl`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. ℜ₀ℜ₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The union occurring in the statement of Lemma 5.5.1 containing 𝔏₀  Union.union.{u} {α : Type u} [self : Union α] : α → α → α`a ∪ b` is the union of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∪` in identifiers is `union`. ℜ₁ℜ₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The union occurring in the statement of Lemma 5.5.1 containing 𝔏₁  Union.union.{u} {α : Type u} [self : Union α] : α → α → α`a ∪ b` is the union of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∪` in identifiers is `union`. ℜ₂ℜ₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The union occurring in the statement of Lemma 5.5.1 containing 𝔏₂  Union.union.{u} {α : Type u} [self : Union α] : α → α → α`a ∪ b` is the union of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∪` in identifiers is `union`. ℜ₃ℜ₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The union occurring in the statement of Lemma 5.5.1 containing 𝔏₃ 
    theorem antichain_decomposition.{u_1}antichain_decomposition.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      𝔓pos ∩ 𝔓₁ᶜ = ℜ₀ ∪ ℜ₁ ∪ ℜ₂ ∪ ℜ₃Lemma 5.5.1.
    
    We will not use the lemma in this form, as to decompose the Carleson sum it is also crucial that
    the union is disjoint. This is easier to formalize by decomposing into successive terms, taking
    advantage of disjointess at each step, instead of doing everything in one go. Still, we keep this
    lemma as it corresponds to the blueprint, and the key steps of its proof will also be the key steps
    when doing the successive decompositions.
    
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)] :
      𝔓pos𝔓pos.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The set 𝔓_{G\G'} in the blueprint  Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. 𝔓₁𝔓₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The set `𝔓₁`, defined in (5.1.30). Compl.compl.{u_1} {α : Type u_1} [self : Compl α] : α → αSet / lattice complement 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `ᶜ` in identifiers is `compl`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. ℜ₀ℜ₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The union occurring in the statement of Lemma 5.5.1 containing 𝔏₀  Union.union.{u} {α : Type u} [self : Union α] : α → α → α`a ∪ b` is the union of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∪` in identifiers is `union`. ℜ₁ℜ₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The union occurring in the statement of Lemma 5.5.1 containing 𝔏₁  Union.union.{u} {α : Type u} [self : Union α] : α → α → α`a ∪ b` is the union of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∪` in identifiers is `union`. ℜ₂ℜ₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The union occurring in the statement of Lemma 5.5.1 containing 𝔏₂  Union.union.{u} {α : Type u} [self : Union α] : α → α → α`a ∪ b` is the union of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∪` in identifiers is `union`. ℜ₃ℜ₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] : Set (𝔓 X)The union occurring in the statement of Lemma 5.5.1 containing 𝔏₃ 
    Lemma 5.5.1.
    
    We will not use the lemma in this form, as to decompose the Carleson sum it is also crucial that
    the union is disjoint. This is easier to formalize by decomposing into successive terms, taking
    advantage of disjointess at each step, instead of doing everything in one go. Still, we keep this
    lemma as it corresponds to the blueprint, and the key steps of its proof will also be the key steps
    when doing the successive decompositions.
    

Proof. Let \fp \in \fP_2 \cap \fP_{G \setminus G'}. Clearly, for every cube J = \scI(\fp) with \fp \in \fP_{G \setminus G'} there exists some k \ge 0 such that muhj1 holds, and for no cube J \in \mathcal{D} and no k < 0 does muhj2 hold. Thus \fp \in \fP(k) for some k \ge 0. Next, since E_2(\lambda, \fp') \subset \scI(\fp')\cap G for every \lambda \ge 2 and every tile \fp' \in \fP(k) with \lambda\fp \lesssim \lambda\fp', it follows from muhj2 that \mu(E_2(\lambda, \fp')) \le 2^{-k} \mu(\scI(\fp')) for every such \fp', so \dens_k'(\{\fp\}) \le 2^{-k}. Combining this with a \ge 0, it follows from def-cnk that there exists n\ge k with \fp \in \fC(k,n). Since \fp \in \fP_{G \setminus G'}, we have in particular \scI(\fp) \not \subset A(2n + 6, k, n), so there exist at most 1 + (4n + 12)2^n < 2^{2n+4} tiles \mathfrak{m} \in \mathfrak{M}(k,n) with \fp \le \mathfrak{m}. It follows that \fp \in \fL_0(k,n) or \fp \in \fC_1(k,n,j) for some 1 \le j \le 2n + 3. In the former case we are done, in the latter case the equality to be shown follows from the definitions of the collections \fC_i and \fL_i.

Lemma1.66
L∃∀Nused by 1

Uses Lemma 1.11. We have that \fL_0(k,n) = \dot{\bigcup_{0 \le l < n}} \fL_0(k,n,l), where each \fL_0(k,n,l) is an antichain.

Lean code for Lemma1.663 theorems
  • complete
    theorem iUnion_L0'.{u_1}iUnion_L0'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n : ℕ} :
      ⋃ l, ⋃ (_ : l < n), 𝔏₀' k n l = 𝔏₀ k nMain part of Lemma 5.5.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :  l,  (_ : l <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. n), 𝔏₀'𝔏₀'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n l : ℕ) :
      Set (𝔓 X)The subset `𝔏₀(k, n, l)` of `𝔏₀(k, n)`, given in Lemma 5.5.3.
    We use the name `𝔏₀'` in Lean.  k n l =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 𝔏₀𝔏₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n : ℕ) :
      Set (𝔓 X)The subset `𝔏₀(k, n)` of `ℭ(k, n)`, given in (5.1.10).
    Not to be confused with `𝔏₀(k, n, j)` which is called `𝔏₀'` in Lean.  k n
    theorem iUnion_L0'.{u_1}iUnion_L0'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n : ℕ} :
      ⋃ l, ⋃ (_ : l < n), 𝔏₀' k n l = 𝔏₀ k nMain part of Lemma 5.5.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :
       l,  (_ : l <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. n), 𝔏₀'𝔏₀'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n l : ℕ) :
      Set (𝔓 X)The subset `𝔏₀(k, n, l)` of `𝔏₀(k, n)`, given in Lemma 5.5.3.
    We use the name `𝔏₀'` in Lean.  k n l =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 𝔏₀𝔏₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n : ℕ) :
      Set (𝔓 X)The subset `𝔏₀(k, n)` of `ℭ(k, n)`, given in (5.1.10).
    Not to be confused with `𝔏₀(k, n, j)` which is called `𝔏₀'` in Lean.  k n
    Main part of Lemma 5.5.2. 
  • complete
    theorem pairwiseDisjoint_L0'.{u_1}pairwiseDisjoint_L0'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n : ℕ} :
      Set.univ.PairwiseDisjoint (𝔏₀' k n)Part of Lemma 5.5.2  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : Set.univSet.univ.{u} {α : Type u} : Set αThe universal set on a type `α` is the set containing all elements of `α`.
    
    This is conceptually the "same as" `α` (in set theory, it is actually the same), but type theory
    makes the distinction that `α` is a type while `Set.univ` is a term of type `Set α`. `Set.univ` can
    itself be coerced to a type `↥Set.univ` which is in bijection with (but distinct from) `α`. .PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely.  (𝔏₀'𝔏₀'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n l : ℕ) :
      Set (𝔓 X)The subset `𝔏₀(k, n, l)` of `𝔏₀(k, n)`, given in Lemma 5.5.3.
    We use the name `𝔏₀'` in Lean.  k n)
    theorem pairwiseDisjoint_L0'.{u_1}pairwiseDisjoint_L0'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n : ℕ} :
      Set.univ.PairwiseDisjoint (𝔏₀' k n)Part of Lemma 5.5.2  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :
      Set.univSet.univ.{u} {α : Type u} : Set αThe universal set on a type `α` is the set containing all elements of `α`.
    
    This is conceptually the "same as" `α` (in set theory, it is actually the same), but type theory
    makes the distinction that `α` is a type while `Set.univ` is a term of type `Set α`. `Set.univ` can
    itself be coerced to a type `↥Set.univ` which is in bijection with (but distinct from) `α`. .PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely.  (𝔏₀'𝔏₀'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n l : ℕ) :
      Set (𝔓 X)The subset `𝔏₀(k, n, l)` of `𝔏₀(k, n)`, given in Lemma 5.5.3.
    We use the name `𝔏₀'` in Lean.  k n)
    Part of Lemma 5.5.2 
  • complete
    theorem antichain_L0'.{u_1}antichain_L0'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n l : ℕ} :
      IsAntichain (fun x1 x2 ↦ x1 ≤ x2) (𝔏₀' k n l)Part of Lemma 5.5.2  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n l : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) (𝔏₀'𝔏₀'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n l : ℕ) :
      Set (𝔓 X)The subset `𝔏₀(k, n, l)` of `𝔏₀(k, n)`, given in Lemma 5.5.3.
    We use the name `𝔏₀'` in Lean.  k n l)
    theorem antichain_L0'.{u_1}antichain_L0'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n l : ℕ} :
      IsAntichain (fun x1 x2 ↦ x1 ≤ x2) (𝔏₀' k n l)Part of Lemma 5.5.2  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n l : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :
      IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X)
        (𝔏₀'𝔏₀'.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n l : ℕ) :
      Set (𝔓 X)The subset `𝔏₀(k, n, l)` of `𝔏₀(k, n)`, given in Lemma 5.5.3.
    We use the name `𝔏₀'` in Lean.  k n l)
    Part of Lemma 5.5.2 

Proof. It suffices to show that \fL_0(k,n) contains no chain of length n + 1. Suppose that we had such a chain \fp_0 \le \fp_1 \le \dotsb \le \fp_{n} with \fp_i \ne \fp_{i+1} for i =0, \dotsc, n-1. By def-cnk, we have that \dens_k'(\{\fp_n\}) > 2^{-n}. Thus, by eq-densdef, there exists \fp' \in \fP(k) and \lambda \ge 2 with \lambda \fp_n \le \lambda \fp' and \frac{\mu(E_2(\lambda, \fp'))}{\mu(\scI(\fp'))} > \lambda^{a} 2^{4a} 2^{-n}. Let \mathfrak{O} be the set of all \fp'' \in \fP(k) such that \scI(\fp'') = \scI(\fp') and B_{\fp'}(\fcc(\fp'), \lambda) \cap \Omega(\fp'') \neq \emptyset. The balls B_{\fp'}(\fcc(\fp''), 0.2), \fp'' \in \mathfrak{O} are disjoint by eq-freq-comp-ball, and by the triangle inequality contained in B_{\fp'}(\fcc(\fp'), \lambda+1.2). By thirddb, this ball can be covered with at most 2^{4a}\lambda^a many d_{\fp'}-balls of radius 0.2, so |\mathfrak{O}| \le 2^{4a}\lambda^a. By definee1 and definee2 we have E_2(\lambda, \fp') \subset \bigcup_{\fp'' \in \mathfrak{O}} E_1(\fp''), thus 2^{4a}\lambda^a 2^{-n} < \sum_{\fp'' \in \mathfrak{O}} \frac{\mu(E_1(\fp''))}{\mu(\scI(\fp''))}. Hence there exists a tile \fp'' \in \mathfrak{O} with \mu(E_1(\fp'')) \ge 2^{-n} \mu(\scI(\fp')). By the definition mnkmax of \mathfrak{M}(k,n), there exists a tile \mathfrak{m} \in \mathfrak{M}(k,n) with \fp' \leq \mathfrak{m}. From the previous inequality, the inclusion E_2(\lambda, \fp') \subset \scI(\fp') and a\ge 1 we obtain 2^n \geq 2^{4a} \lambda^{a} \geq \lambda. From the triangle inequality and Lemma 1.11, it follows for all \mfa \in B_{\mathfrak{m}}(\fcc(\mathfrak{m}), 1) that d_{\fp_0}(\fcc(\fp_0), \mfa) is bounded by 100. Thus, by straightorder, 100\fp_0 \lesssim \mathfrak{m}, a contradiction to \fp_0 \notin \fC(k,n).

Lemma1.67
L∃∀Nused by 1

Uses Lemma 1.11. Each of the sets \fL_2(k,n,j) is an antichain.

Lean code for Lemma1.671 theorem
  • complete
    theorem antichain_L2.{u_1}antichain_L2.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      IsAntichain (fun x1 x2 ↦ x1 ≤ x2) (𝔏₂ k n j)Lemma 5.5.3  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) (𝔏₂𝔏₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔏₂(k, n, j)` of `ℭ₂(k, n, j)`, given in (5.1.15).  k n j)
    theorem antichain_L2.{u_1}antichain_L2.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j : ℕ} :
      IsAntichain (fun x1 x2 ↦ x1 ≤ x2) (𝔏₂ k n j)Lemma 5.5.3  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :
      IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X)
        (𝔏₂𝔏₂.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j : ℕ) :
      Set (𝔓 X)The subset `𝔏₂(k, n, j)` of `ℭ₂(k, n, j)`, given in (5.1.15).  k n j)
    Lemma 5.5.3 

Proof. Suppose that there are \fp_0, \fp_1 \in \fL_2(k,n,j) with \fp_0 \ne \fp_1 and \fp_0 \le \fp_1. By Lemma 1.45 and Lemma 1.46, it follows that 2\fp_0 \lesssim 200\fp_1. Since \fL_2(k,n,j) is finite, there exists a maximal l \ge 1 such that there exists a chain 2\fp_0 \lesssim 200 \fp_1 \lesssim \dotsb \lesssim 200 \fp_l with all \fp_i in \fC_1(k,n,j) and \fp_i \ne \fp_{i+1} for i = 0, \dotsc, l-1. If we have \fp_l \in \fU_1(k,n,j), then it follows from 2\fp_0 \lesssim 200 \fp_l \lesssim \fp_l and eq-L2-def that \fp_0 \not\in \fL_2(k,n,j), a contradiction. Thus, by the definition defunkj of \fU_1(k,n,j), there exists \fp_{l+1} \in \fC_1(k,n,j) with \scI(\fp_l) \subsetneq \scI(\fp_{l+1}) and \mfa \in B_{\fp_l}(\fcc(\fp_l), 100) \cap B_{\fp_{l+1}}(\fcc(\fp_{l+1}), 100). Using the triangle inequality and Lemma 1.11, one deduces that 200 \fp_l \lesssim 200\fp_{l+1}. This contradicts maximality of l.

Lemma1.68
L∃∀Nused by 1

Each of the sets \fL_1(k,n,j,l) and \fL_3(k,n,j,l) is an antichain.

Lean code for Lemma1.682 theorems
  • complete
    theorem antichain_L1.{u_1}antichain_L1.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j l : ℕ} :
      IsAntichain (fun x1 x2 ↦ x1 ≤ x2) (𝔏₁ k n j l)Part of Lemma 5.5.4  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j l : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) (𝔏₁𝔏₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j l : ℕ) :
      Set (𝔓 X)`𝔏₁(k, n, j, l)` consists of the minimal elements in `ℭ₁(k, n, j)` not in
    `𝔏₁(k, n, j, l')` for some `l' < l`. Defined near (5.1.11).  k n j l)
    theorem antichain_L1.{u_1}antichain_L1.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j l : ℕ} :
      IsAntichain (fun x1 x2 ↦ x1 ≤ x2) (𝔏₁ k n j l)Part of Lemma 5.5.4  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j l : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :
      IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X)
        (𝔏₁𝔏₁.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j l : ℕ) :
      Set (𝔓 X)`𝔏₁(k, n, j, l)` consists of the minimal elements in `ℭ₁(k, n, j)` not in
    `𝔏₁(k, n, j, l')` for some `l' < l`. Defined near (5.1.11).  k n j l)
    Part of Lemma 5.5.4 
  • complete
    theorem antichain_L3.{u_1}antichain_L3.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j l : ℕ} :
      IsAntichain (fun x1 x2 ↦ x1 ≤ x2) (𝔏₃ k n j l)Part of Lemma 5.5.4  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j l : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } : IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) (𝔏₃𝔏₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j l : ℕ) :
      Set (𝔓 X)`𝔏₃(k, n, j, l)` consists of the maximal elements in `ℭ₃(k, n, j)` not in
    `𝔏₃(k, n, j, l')` for some `l' < l`. Defined near (5.1.17).  k n j l)
    theorem antichain_L3.{u_1}antichain_L3.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {k n j l : ℕ} :
      IsAntichain (fun x1 x2 ↦ x1 ≤ x2) (𝔏₃ k n j l)Part of Lemma 5.5.4  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {k n j l : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } :
      IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X)
        (𝔏₃𝔏₃.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (k n j l : ℕ) :
      Set (𝔓 X)`𝔏₃(k, n, j, l)` consists of the maximal elements in `ℭ₃(k, n, j)` not in
    `𝔏₃(k, n, j, l')` for some `l' < l`. Defined near (5.1.17).  k n j l)
    Part of Lemma 5.5.4 

Proof. By its definition eq-L1-def, each set \fL_1(k,n,j,l) is a set of minimal elements in some set of tiles with respect to \le. If there were distinct \fp, \fq \in \fL_1(k,n,j,l) with \fp \le \fq, then \fq would not be minimal. Hence such \fp, \fq do not exist. Similarly, by eq-L3-def, each set \fL_3(k,n,j,l) is a set of maximal elements in some set of tiles with respect to \le. If there were distinct \fp, \fq \in \fL_3(k,n,j,l) with \fp \le \fq, then \fp would not be maximal.

We now turn to the proof of Lemma 1.34.

Proof of forest-complement. If \fp \not\in \fP_{G \setminus G'}, then \mu(\scI(\fp) \cap (G \setminus G')) = 0. By definetp and definee1, it follows that \mathbf{1}_{G \setminus G'} T_{\fp}f(x) = 0 for almost every x. We thus have, almost everywhere, \mathbf{1}_{G\setminus G'} \sum_{\fp \in \fP_2} T_{\fp}f(x) = \mathbf{1}_{G\setminus G'} \sum_{\fp \in \fP_2 \cap \fP_{G \setminus G'}} T_{\fp}f(x). Let \fL(k,n) denote any of the terms \fL_i(k,n,j,l) \cap \fP_{G \setminus G'} on the right hand side of eq-fp'-decomposition, where the indices j, l may be void. Then \fL(k,n) is an antichain, by Lemma 1.66, Lemma 1.67, and Lemma 1.68. Further, we have \dens_1(\fL(k,n)) \le 2^{4a+1 - n} by Lemma 1.56, and we have \dens_2(\fL(k,n)) \le 2^{2a+5} \frac{\mu(F)}{\mu(G)}, since \fL(k,n) \cap \fP_{F,G} \subset \fP_{G \setminus G'} \cap \fP_{F, G} = \emptyset.

Applying now the triangle inequality according to the decomposition coming from Lemma 1.65, and then applying Theorem 1.6 to each term, we obtain the estimate \sum_{k \ge 0} \sum_{n \ge k} (n + (2n+4) + 2(2n+4) (1+Z(n+1))) 2^{117a^3}(q-1)^{-1} (2^{4a+1-n})^{\frac{q-1}{8a^4}} (2^{2a+5} \frac{\mu(F)}{\mu(G)})^{\frac{1}{q} - \frac{1}{2}} \|f\|_2\|\mathbf{1}_{G\setminus G'}\|_2 for the left hand side of forestcompleft. Because |f| \le \mathbf{1}_F, we have \|f\|_2 \le \mu(F)^{1/2}, and we have \|\mathbf{1}_{G\setminus G'}\|_2 \le \mu(G)^{1/2}. Using this and defineZ, we bound 2^{118a^3} (q - 1)^{-1} \mu(F)^{\frac{1}{q}} \mu(G)^{\frac{1}{q'}} \sum_{k \ge 0} \sum_{n \ge k} n^2 2^{-n\frac{q-1}{8a^4}}. The last sum equals, by changing the order of summation, \sum_{n \ge 0} n^2(n+1) 2^{-n\frac{q-1}{8a^4}} \le \frac{2^{2a^3}}{(q-1)^4}. This completes the proof.

1.5.6. Proof of the Antichain Operator Proposition🔗

Let an antichain \mathfrak{A} and functions f, g as in Theorem 1.6 be given. We prove eq-antiprop in [??] as the geometric mean of two inequalities, each involving one of the two densities. One of these two inequalities will need a careful estimate formulated in Lemma 1.73 of the TT^* correlation between two tile operators. Lemma 1.73 will be proven in [??].

The summation of the contributions of these individual correlations will require a geometric Lemma 1.74 counting the relevant tile pairs. Lemma 1.74 will be proven in [??].

1.5.7. The density arguments🔗

We begin with the following crucial disjointedness property of the sets E(\fp) with \fp \in \mathfrak{A}.

Lemma1.69
L∃∀N
Used by 2
Hover a use site to preview it.
Preview
Lemma 1.70
Loading preview
Hover a use site to preview it.

Let \fp,\fp'\in \mathfrak{A}. If there exists an x\in X with x\in E(\fp)\cap E(\fp'), then \fp= \fp'.

Lean code for Lemma1.691 theorem
  • complete
    theorem tile_disjointness.{u_1}tile_disjointness.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔄 : Set (𝔓 X)}
      (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) {p p' : 𝔓 X} (hp : p ∈ 𝔄) (hp' : p' ∈ 𝔄) (hE : ¬Disjoint (E p) (E p')) :
      p = p'Lemma 6.1.1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 : IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X))
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hpp ∈ 𝔄 : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔄Set (𝔓 X)) (hp'p' ∈ 𝔄 : p'𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔄Set (𝔓 X))
      (hE¬Disjoint (E p) (E p') : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  (EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X) (EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p'𝔓 X)) : p𝔓 X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. p'𝔓 X
    theorem tile_disjointness.{u_1}tile_disjointness.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔄 : Set (𝔓 X)}
      (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) {p p' : 𝔓 X} (hp : p ∈ 𝔄) (hp' : p' ∈ 𝔄) (hE : ¬Disjoint (E p) (E p')) :
      p = p'Lemma 6.1.1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)}
      (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 :
        IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X))
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hpp ∈ 𝔄 : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔄Set (𝔓 X)) (hp'p' ∈ 𝔄 : p'𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔄Set (𝔓 X))
      (hE¬Disjoint (E p) (E p') : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  (EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X) (EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p'𝔓 X)) : p𝔓 X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. p'𝔓 X
    Lemma 6.1.1. 

Proof. Let \fp,\fp' and x be given. Assume without loss of generality that \ps(\fp)\le \ps(\fp'). As we have x\in E(\fp)\subset \scI(\fp) and x\in E(\fp')\subset \scI(\fp') by definition defineep, we conclude for i=1,2 that \tQ(x)\in\fc(\fp) and \tQ(x)\in\fc(\fp'). By eq-freq-dyadic we have \fc(\fp')\subset \fc(\fp). By definition straightorder, we conclude \fp\le \fp'. As \mathfrak{A} is an antichain, we conclude \fp=\fp'. This proves the lemma.

Let \mathcal{B} be the collection of balls B(\pc(\fp), 8D^{\ps(\fp)}) with \fp\in \mathfrak{A} and recall the definition of M_{\mathcal{B}} from [??].

Lemma1.70
L∃∀Nused by 1

Uses Lemma 1.69. Let x\in X. Then | \sum_{\fp \in \mathfrak{A}}T_{\fp} f(x)|\le 2^{102 a^3} M_{\mathcal{B}} f (x).

Lean code for Lemma1.701 theorem
  • complete
    theorem maximal_bound_antichain.{u_1}maximal_bound_antichain.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {𝔄 : Set (𝔓 X)} (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) {f : X → ℂ} (hfm : Measurable f) (x : X) :
      ‖carlesonSum 𝔄 f x‖ₑ ≤ ↑(C6_1_2 a) * MB MeasureTheory.volume 𝔄 𝔠 (fun 𝔭 ↦ 8 * ↑(defaultD a) ^ 𝔰 𝔭) f xLemma 6.1.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 : IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X)) {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfmMeasurable f : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  fX → ℂ) (xX : XType u_1) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  𝔄Set (𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (C6_1_2C6_1_2 (a : ℕ) : ℕConstant appearing in Lemma 6.1.2.
    Has value `2 ^ (102 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  𝔄Set (𝔓 X) 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X (fun 𝔭𝔓 X  8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ 𝔭𝔓 X) fX → ℂ xX
    theorem maximal_bound_antichain.{u_1}maximal_bound_antichain.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {𝔄 : Set (𝔓 X)} (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) {f : X → ℂ} (hfm : Measurable f) (x : X) :
      ‖carlesonSum 𝔄 f x‖ₑ ≤ ↑(C6_1_2 a) * MB MeasureTheory.volume 𝔄 𝔠 (fun 𝔭 ↦ 8 * ↑(defaultD a) ^ 𝔰 𝔭) f xLemma 6.1.2. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)}
      (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 :
        IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X))
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } (hfmMeasurable f : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  fX → ℂ)
      (xX : XType u_1) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  𝔄Set (𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (C6_1_2C6_1_2 (a : ℕ) : ℕConstant appearing in Lemma 6.1.2.
    Has value `2 ^ (102 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  𝔄Set (𝔓 X) 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X
            (fun 𝔭𝔓 X  8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ 𝔭𝔓 X)
            fX → ℂ xX
    Lemma 6.1.2. 

Proof. Fix x\in X. By Lemma 1.69, there is at most one \fp \in \mathfrak{A} such that T_{\fp} f(x) is not zero. If there is no such \fp, the estimate hlmbound follows.

Assume there is such a \fp. By definition of T_{\fp} we have x\in E(\fp)\subset \scI(\fp) and by the squeezing property eq-vol-sp-cube \rho(x, \pc(\fp))\le 4D^{\ps(\fp)}.

Let y\in X with K_{\ps(\fp)}(x,y)\neq 0. By definition defks of K_{\ps(\fp)} we have \frac{1}{4} D^{\ps(\fp)-1} \leq \rho(x,y) \leq \frac{1}{2} D^{\ps(\fp)}. The triangle inequality with eqtttt0 and supp-Ks1 implies \rho(\pc(\fp),y) < 8D^{\ps(\fp)}.

Using the kernel bound eqkernel-size and the lower bound in supp-Ks we obtain |K_{\ps(\fp)}(x,y)|\le \frac{2^{a^3}}{\mu(B(x,\frac 14 D^{{\ps(\fp)}-1}))}. Using D=2^{100a^2} and the doubling property doublingx 5 +100a^2 times estimates the last display by \frac{2^{5a+101a^3}}{\mu(B(x, 8D^{\ps(\fp)}))}, which, thanks to the closeness of the points x and \pc(\fp) shown in eqtttt0, is in turn bounded by \frac{2^{6a+101a^3}}{\mu(B(\pc(\fp), 8D^{\ps(\fp)}))}.

Using that |e(\mfa)| is bounded by 1 for every \mfa\in \Mf, we estimate with the triangle inequality and the above information | T_{\fp} f(x)| \le \frac{2^{6a+101 a^3}}{\mu(B(\pc(\fp), 8D^{\ps(\fp)}))} \int _{\mu(B(\pc(\fp), 8D^{\ps(\fp)}))} |f(y)|\, dy This together with a\ge 4 proves the lemma.

Set \tilde{q}=\frac {2q}{1+q}. Since 1< q\le 2, we have 1<\tilde{q}<q\le 2.

Lemma1.71
L∃∀Nused by 1

Uses Theorem 1.9 and Lemma 1.70. We have that \left|\int \overline{g(x)} \sum_{\fp \in \mathfrak{A}} T_{\fp} f(x)\, d\mu(x)\right|\le 2^{103a^3}({q}-1)^{-1} \dens_2(\mathfrak{A})^{\frac 1{\tilde{q}}-\frac 12} \|f\|_2\|g\|_2.

Lean code for Lemma1.711 theorem
  • complete
    theorem dens2_antichain.{u_1}dens2_antichain.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔄 : Set (𝔓 X)}
      (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) {f : X → ℂ} (hfF : ∀ (x : X), ‖f x‖ ≤ F.indicator 1 x) (hf : Measurable f)
      {g : X → ℂ} (hgG : ∀ (x : X), ‖g x‖ ≤ G.indicator 1 x) (hg : Measurable g) :
      ‖∫ (x : X), (starRingEnd ℂ) (g x) * carlesonSum 𝔄 f x‖ₑ ≤
        ↑(C6_1_3 a (nnq X)) * dens₂ 𝔄 ^ ((2 * ↑(nnq X) / (↑(nnq X) + 1))⁻¹ - 2⁻¹) *
            MeasureTheory.eLpNorm f 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volumeLemma 6.1.3 (inequality 6.1.11).  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 : IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X)) {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfF∀ (x : X), ‖f x‖ ≤ F.indicator 1 x :  (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. FSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX) (hfMeasurable f : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  fX → ℂ)
      {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } (hgG∀ (x : X), ‖g x‖ ≤ G.indicator 1 x :  (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. gX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. GSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX)
      (hgMeasurable g : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  gX → ℂ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (gX → ℂ xX) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  𝔄Set (𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (C6_1_3C6_1_3 (a : ℕ) (q : NNReal) : NNRealConstant appearing in Lemma 6.1.3.
    Has value `2 ^ (103 * a ^ 3)` in the blueprint.  a (nnqnnq.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : NNReal`q` as an element of `ℝ≥0`.  XType u_1)) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              dens₂dens₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  𝔄Set (𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).(HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (nnqnnq.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : NNReal`q` as an element of `ℝ≥0`.  XType u_1) /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.(nnqnnq.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : NNReal`q` as an element of `ℝ≥0`.  XType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). 2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem dens2_antichain.{u_1}dens2_antichain.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔄 : Set (𝔓 X)}
      (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) {f : X → ℂ} (hfF : ∀ (x : X), ‖f x‖ ≤ F.indicator 1 x) (hf : Measurable f)
      {g : X → ℂ} (hgG : ∀ (x : X), ‖g x‖ ≤ G.indicator 1 x) (hg : Measurable g) :
      ‖∫ (x : X), (starRingEnd ℂ) (g x) * carlesonSum 𝔄 f x‖ₑ ≤
        ↑(C6_1_3 a (nnq X)) * dens₂ 𝔄 ^ ((2 * ↑(nnq X) / (↑(nnq X) + 1))⁻¹ - 2⁻¹) *
            MeasureTheory.eLpNorm f 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volumeLemma 6.1.3 (inequality 6.1.11).  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)}
      (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 :
        IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X))
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfF∀ (x : X), ‖f x‖ ≤ F.indicator 1 x :
         (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. FSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX)
      (hfMeasurable f : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  fX → ℂ) {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hgG∀ (x : X), ‖g x‖ ≤ G.indicator 1 x :
         (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. gX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. GSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX)
      (hgMeasurable g : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  gX → ℂ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (gX → ℂ xX) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  𝔄Set (𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (C6_1_3C6_1_3 (a : ℕ) (q : NNReal) : NNRealConstant appearing in Lemma 6.1.3.
    Has value `2 ^ (103 * a ^ 3)` in the blueprint.  a (nnqnnq.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : NNReal`q` as an element of `ℝ≥0`.  XType u_1)) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              dens₂dens₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  𝔄Set (𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).(HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (nnqnnq.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : NNReal`q` as an element of `ℝ≥0`.  XType u_1) /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
                      (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.(nnqnnq.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : NNReal`q` as an element of `ℝ≥0`.  XType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
                  2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2
              MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Lemma 6.1.3 (inequality 6.1.11). 

Proof. We have f=\mathbf{1}_Ff. Using Holder's inequality, we obtain for each x\in B' and each B'\in \mathcal{B} using 1<\tilde{q}\le 2 \frac 1{\mu(B')}\int_{B'} |f(y)|\, d\mu(y) \le \left(\frac 1{\mu(B')}\int_{B'} |f(y)|^{\frac {2{\tilde{q}}}{3\tilde{q}-2}}\, d\mu(y)\right)^{\frac 32-\frac 1{\tilde{q}}} \left(\frac 1{\mu(B')}\int_{B'} \mathbf{1}_F(y)\, d\mu(y)\right)^{\frac 1{\tilde{q}}-\frac 12} \le \left(M_{\mathcal{B}} (|f|^{\frac {2{\tilde{q}}}{3{\tilde{q}}-2}})(x)\right)^{\frac 32-\frac 1{\tilde{q}}} \dens_2(\mathfrak{A})^{\frac 1{\tilde{q}}-\frac 12}. Taking the maximum over all B' containing x, we obtain M_{\mathcal{B}}|f|\le M_{\mathcal{B},\frac {2{\tilde{q}}}{3{\tilde{q}}-2} } |f| \dens_2(\mathfrak{A})^{\frac 1{\tilde{q}}-\frac 12}.

We have with Theorem 1.9 \left\|M_{\mathcal{B}, \frac {2{\tilde{q}}}{3{\tilde{q}}-2}} f\right\|_2\le 2^{2a}(3\tilde{q}-2)(2\tilde{q}-2)^{-1}\|f\|_2. Using 1<\tilde{q}\le 2 estimates the last display by 2^{2a+2} (\tilde{q}-1)^{-1} \|f\|_2. We obtain with Cauchy-Schwarz and then Lemma 1.70 |\int \overline{g(x)} \sum_{\fp \in \mathfrak{A}} T_{\fp} f(x)\, d\mu(x)| \le \|g\|_2 \Big\| \sum_{\fp \in \mathfrak{A}} T_{\fp} f \Big\|_2 \le 2^{102a^3}\|g\|_2 \| M_{\mathcal{B}}f \|_2. With eqttt1 and eqttt2 we can estimate the last display by \le 2^{102a^3+2a+2}(\tilde{q}-1)^{-1} \|g\|_2 \|f\|_2\dens_2(\mathfrak{A})^{\frac 1{\tilde{q}}-\frac 12} Using a\ge 4 and (\tilde q - 1)^{-1} = (q+1)/(q-1) \le 3(q-1)^{-1} proves the lemma.

Lemma1.72
L∃∀Nused by 1

Uses Theorem 1.9, Lemma 1.73, and Lemma 1.74. Set p:=4a^4. We have \left|\int \overline{g(x)} \sum_{\fp \in \mathfrak{A}} T_{\fp} f(x)\, d\mu(x)\right|\le 2^{117a^3}\dens_1(\mathfrak{A})^{\frac 1{2p}} \|f\|_2\|g\|_2.

Lean code for Lemma1.721 theorem
  • complete
    theorem dens1_antichain.{u_1}dens1_antichain.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔄 : Set (𝔓 X)}
      {f g : X → ℂ} (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) (hf : Measurable f)
      (hfF : ∀ (x : X), ‖f x‖ ≤ F.indicator 1 x) (hg : Measurable g) (hgG : ∀ (x : X), ‖g x‖ ≤ G.indicator 1 x) :
      ‖∫ (x : X), (starRingEnd ℂ) (g x) * carlesonSum 𝔄 f x‖ₑ ≤
        ↑(C6_1_4 a) * dens₁ 𝔄 ^ (8 * ↑a ^ 4)⁻¹ * MeasureTheory.eLpNorm f 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volumeLemma 6.1.4.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} {fX → ℂ gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 : IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X)) (hfMeasurable f : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  fX → ℂ)
      (hfF∀ (x : X), ‖f x‖ ≤ F.indicator 1 x :  (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. FSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX) (hgMeasurable g : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  gX → ℂ)
      (hgG∀ (x : X), ‖g x‖ ≤ G.indicator 1 x :  (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. gX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. GSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (gX → ℂ xX) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  𝔄Set (𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (C6_1_4C6_1_4 (a : ℕ) : NNRealConstant appearing in Lemma 6.1.4.
    Has value `2 ^ (117 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  𝔄Set (𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 4)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem dens1_antichain.{u_1}dens1_antichain.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔄 : Set (𝔓 X)}
      {f g : X → ℂ} (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) (hf : Measurable f)
      (hfF : ∀ (x : X), ‖f x‖ ≤ F.indicator 1 x) (hg : Measurable g) (hgG : ∀ (x : X), ‖g x‖ ≤ G.indicator 1 x) :
      ‖∫ (x : X), (starRingEnd ℂ) (g x) * carlesonSum 𝔄 f x‖ₑ ≤
        ↑(C6_1_4 a) * dens₁ 𝔄 ^ (8 * ↑a ^ 4)⁻¹ * MeasureTheory.eLpNorm f 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volumeLemma 6.1.4.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} {fX → ℂ gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 :
        IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X))
      (hfMeasurable f : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  fX → ℂ)
      (hfF∀ (x : X), ‖f x‖ ≤ F.indicator 1 x :
         (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. FSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX)
      (hgMeasurable g : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  gX → ℂ)
      (hgG∀ (x : X), ‖g x‖ ≤ G.indicator 1 x :
         (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. gX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. GSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (gX → ℂ xX) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  𝔄Set (𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (C6_1_4C6_1_4 (a : ℕ) : NNRealConstant appearing in Lemma 6.1.4.
    Has value `2 ^ (117 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  𝔄Set (𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 4)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2
              MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Lemma 6.1.4. 

Proof. We write for the expression inside the absolute values on the left-hand side of eqttt3 \sum_{\fp \in \mathfrak{A}}\iint \overline{g(x)} \mathbf{1}_{E(\fp)}(x) {K_{\ps(\fp)}(x,y)}e(\tQ(x)(y) - \tQ(x)(x)) f(y)\, d\mu(y)\,d\mu(x) =\int \sum_{\fp \in \mathfrak{A}} \overline{T_{\fp} ^*g(y)} f(y)\, d\mu(y) with the adjoint operator T_{\fp}^*g(y)=\int_{E(\fp)} \overline{K_{\ps(\fp)}(x,y)}e(-\tQ(x)(y)+ \tQ(x)(x))g(x)\, d\mu(x). We have by expanding the square \int \Big|\sum_{\fp\in \mathfrak{A}}T^*_{\fp}g(y)\Big|^2\, d\mu(y)= \int \left(\sum_{\fp\in \mathfrak{A}} T^*_{\fp}g(y)\right) \left(\sum_{\fp'\in \mathfrak{A}}\overline{T^*_{\fp'}g(y)}\right)\, d\mu(y) \le \sum_{\fp\in \mathfrak{A}} \sum_{\fp'\in \mathfrak{A}} \Big|\int T^*_{\fp}g(y)\overline{T^*_{\fp'}g(y)}\, d\mu(y)\Big|. We split the sum into the terms with \ps(\fp')\le \ps(\fp) and \ps(\fp)< \ps(\fp'). Using the symmetry of each summand, we may switch \fp and \fp' in the second sum. Using further positivity of each summand to replace the condition \ps(\fp')< \ps(\fp) by \ps(\fp')\le \ps(\fp) in the second sum, we estimate eqtts1 by \le2 \sum_{\fp\in \mathfrak{A}} \sum_{\fp'\in \mathfrak{A}: \ps(\fp')\le \ps(\fp)} \Big|\int T^*_{\fp}g(y)\overline{T^*_{\fp'}g(y)}\, d\mu(y)\Big|.

Define for \fp\in \fP B(\fp):=B(\pc(\fp), 14D^{\ps(\fp)}) and define \mathfrak{A}(\fp):=\{\fp'\in\mathfrak{A}: \ps(\fp')\leq \ps(\fp) \land \scI(\fp') \subset B(\fp)\}. Note that by the squeezing property eq-vol-sp-cube and the doubling property doublingx applied 6 times we have \mu(B(\fp))\le 2^{6a} \mu(\scI(\fp)). Using Lemma 1.73 and eqttt4, we estimate eqtts2 by \le 2^{232a^3+6a+1} \sum_{\fp\in \mathfrak{A}} \int_{E(\fp)}|g|(y) h(\fp)\, d\mu(y) with h(\fp) defined as \frac 1{\mu(B(\fp))}\int \sum_{\fp'\in \mathfrak{A}(\fp)} {(1+d_{\fp'}(\fcc(\fp'), \fcc(\fp))^{-1/(2a^2+a^3)}}(\mathbf{1}_{E(\fp')}|g|)(y')\, d\mu(y').

Note that p>4 since a\ge 4. Let p' be the dual exponent of p, satisfying 1/p+1/p'=1. We estimate h(\fp) as defined in def-hp with Holder using |g|\le \mathbf{1}_G and E(\fp')\subset B(\fp) by \frac{\|g\mathbf{1}_{B(\fp)}\|_{p'}}{\mu(B(\fp))} \Big\|\sum_{\fp\in\mathfrak{A}(\fp)}(1+d_{\fp}(\fcc(\fp), \fcc(\fp'))^{-1/(2a^2+a^3)}\mathbf{1}_{E(\fp)}\mathbf{1}_G\Big\|_{p}. Then we apply Lemma 1.74 to estimate this by \le 2^{5a} \frac{\|g\mathbf{1}_{B(\fp)}\|_{p'}}{\mu(B(\fp))} \dens_1(\mathfrak{A})^{\frac 1p}\mu(B(\fp))^{\frac 1p}. Let \mathcal{B}' be the collection of all balls B(\fp) with \fp\in \mathfrak{A}. Then for each \fp\in \mathfrak{A} and x\in B(\fp) we have by definition def-hlm of M_{\mathcal{B}',p'} \|g\mathbf{1}_{B(\fp)}\|_{p'}\le \mu(B(\fp))^{\frac 1{p'}} M_{\mathcal{B}',p'}g(x). Hence we can estimate eqttt5 by \le 2^{5a} (M_{\mathcal{B}', p'}g(x)) \dens_1(\mathfrak{A})^{\frac 1p}.

With this estimate of h(\fp), using E(\fp)\subset B(\fp) by construction of B(\fp), we estimate eqtts3 by \le 2^{232a^3+11a + 1} { \dens_1(\mathfrak{A})^{\frac 1p}}\sum_{\fp\in \mathfrak{A}} \int_{E(\fp)}|g|(y)M_{\mathcal{B}', p'}g(y) \, dy. Using Lemma 1.69, the last display is observed to be \le 2^{232a^3+11a + 1} {\dens_1(\mathfrak{A})^{\frac 1p}} \int |g|(y)(M_{\mathcal{B}', p'}g)(y) \, dy. Applying Cauchy-Schwarz and using Theorem 1.9 and 1<p'<\frac 32 estimates the last display by \le 2^{232a^3+11a + 1} \dens_1(\mathfrak{A})^{\frac 1p} \|g\|_2 \|M_{\mathcal{B}', p'} g\|_2 \le 2^{232a^3+12a+3} \dens_1(\mathfrak{A})^{\frac 1p}\|g\|_2 ^2. Now Lemma 1.72 follows by applying Cauchy-Schwarz on the left-hand side and using a\ge 4.

The following basic TT^* estimate will be proved in [??].

Lemma1.73
L∃∀Nused by 1

Uses Theorem 1.8, Lemma 1.75, Lemma 1.77, and Lemma 1.76. Let \fp, \fp'\in \fP with \ps({\fp'})\leq \ps({\fp}). Then \left|\int T^*_{\fp'}g\overline{T^*_{\fp}g}\right| \le 2^{232a^3}\frac{(1+d_{\fp'}(\fcc(\fp'), \fcc(\fp))^{-1/(2a^2+a^3)}}{\mu(\scI(\fp))}\int_{E(\fp')}|g|\int_{E(\fp)}|g|. Moreover, the term eq-basic-TT*-est vanishes unless \scI(\fp') \subset B(\pc(\fp), 14D^{\ps(\fp)}).

Lean code for Lemma1.732 theorems
  • complete
    theorem Tile.correlation_le.{u_1}Tile.correlation_le.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {p p' : 𝔓 X}
      (hle : 𝔰 p' ≤ 𝔰 p) {g : X → ℂ} (hg : Measurable g) (hg1 : ∀ (x : X), ‖g x‖ ≤ G.indicator 1 x) :
      ‖∫ (y : X), adjointCarleson p' g y * (starRingEnd ℂ) (adjointCarleson p g y)‖ₑ ≤
        (↑(Tile.C6_1_5 a) * (1 + edist_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') (𝒬 p)) ^ (-(2 * ↑a ^ 2 + ↑a ^ 3)⁻¹) /
              MeasureTheory.volume ↑(𝓘 p) *
            ∫⁻ (y : X) in E p', ‖g y‖ₑ) *
          ∫⁻ (y : X) in E p, ‖g y‖ₑPart 1 of Lemma 6.1.5 (eq. 6.1.43).  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hle𝔰 p' ≤ 𝔰 p : 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X) {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } (hgMeasurable g : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  gX → ℂ)
      (hg1∀ (x : X), ‖g x‖ ≤ G.indicator 1 x :  (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. gX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. GSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (yX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p'𝔓 X gX → ℂ yX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X gX → ℂ yX)‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.(Tile.C6_1_5Tile.C6_1_5 (a : ℕ) : NNRealThe constant from lemma 6.1.5.
    Has value `2 ^ (232 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. edist_{EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p'𝔓 X,EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p'𝔓 X) (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p𝔓 X))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                  (Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator).-Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator).(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. a ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 3)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.)Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator). /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
              MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            ∫⁻MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  (yX : XType u_1) inMeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p'𝔓 X,MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. gX → ℂ yX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. )HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          ∫⁻MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  (yX : XType u_1) inMeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X,MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. gX → ℂ yX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. 
    theorem Tile.correlation_le.{u_1}Tile.correlation_le.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {p p' : 𝔓 X}
      (hle : 𝔰 p' ≤ 𝔰 p) {g : X → ℂ} (hg : Measurable g) (hg1 : ∀ (x : X), ‖g x‖ ≤ G.indicator 1 x) :
      ‖∫ (y : X), adjointCarleson p' g y * (starRingEnd ℂ) (adjointCarleson p g y)‖ₑ ≤
        (↑(Tile.C6_1_5 a) * (1 + edist_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') (𝒬 p)) ^ (-(2 * ↑a ^ 2 + ↑a ^ 3)⁻¹) /
              MeasureTheory.volume ↑(𝓘 p) *
            ∫⁻ (y : X) in E p', ‖g y‖ₑ) *
          ∫⁻ (y : X) in E p, ‖g y‖ₑPart 1 of Lemma 6.1.5 (eq. 6.1.43).  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hle𝔰 p' ≤ 𝔰 p : 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)
      {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } (hgMeasurable g : MeasurableMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [MeasurableSpace α] [MeasurableSpace β] (f : α → β) : PropA function `f` between measurable spaces is measurable if the preimage of every
    measurable set is measurable.  gX → ℂ)
      (hg1∀ (x : X), ‖g x‖ ≤ G.indicator 1 x :
         (xX : XType u_1), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. gX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. GSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (yX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p'𝔓 X gX → ℂ yX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. )
                (adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X gX → ℂ yX)‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.(Tile.C6_1_5Tile.C6_1_5 (a : ℕ) : NNRealThe constant from lemma 6.1.5.
    Has value `2 ^ (232 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
                    edist_{EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p'𝔓 X,EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 
                        (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
                          4}EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 
                      (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p'𝔓 X) (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p𝔓 X))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                  (Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator).-Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator).(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. a ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 3)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.)Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator). /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
              MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            ∫⁻MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  (yX : XType u_1) inMeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p'𝔓 X,MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. gX → ℂ yX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. )HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          ∫⁻MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  (yX : XType u_1) inMeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X,MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. gX → ℂ yX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. 
    Part 1 of Lemma 6.1.5 (eq. 6.1.43). 
  • complete
    theorem Tile.correlation_zero_of_ne_subset.{u_1}Tile.correlation_zero_of_ne_subset.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {p p' : 𝔓 X} (hle : 𝔰 p' ≤ 𝔰 p) {g : X → ℂ} (hp : ¬↑(𝓘 p') ⊆ Metric.ball (𝔠 p) (14 * ↑(defaultD a) ^ 𝔰 p)) :
      ‖∫ (y : X), adjointCarleson p' g y * (starRingEnd ℂ) (adjointCarleson p g y)‖ₑ = 0Part 2 of Lemma 6.1.5 (claim 6.1.44).  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hle𝔰 p' ≤ 𝔰 p : 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X) {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hp¬↑(𝓘 p') ⊆ Metric.ball (𝔠 p) (14 * ↑(defaultD a) ^ 𝔰 p) : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X) HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.14 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (yX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p'𝔓 X gX → ℂ yX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X gX → ℂ yX)‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        0
    theorem Tile.correlation_zero_of_ne_subset.{u_1}Tile.correlation_zero_of_ne_subset.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {p p' : 𝔓 X} (hle : 𝔰 p' ≤ 𝔰 p) {g : X → ℂ} (hp : ¬↑(𝓘 p') ⊆ Metric.ball (𝔠 p) (14 * ↑(defaultD a) ^ 𝔰 p)) :
      ‖∫ (y : X), adjointCarleson p' g y * (starRingEnd ℂ) (adjointCarleson p g y)‖ₑ = 0Part 2 of Lemma 6.1.5 (claim 6.1.44). 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hle𝔰 p' ≤ 𝔰 p : 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)
      {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hp¬↑(𝓘 p') ⊆ Metric.ball (𝔠 p) (14 * ↑(defaultD a) ^ 𝔰 p) :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X) HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`.
            Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.14 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (yX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p'𝔓 X gX → ℂ yX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. )
                (adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X gX → ℂ yX)‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        0
    Part 2 of Lemma 6.1.5 (claim 6.1.44). 

The following lemma will be proved in [??].

Lemma1.74
L∃∀Nused by 1

Uses Lemma 1.81. Set p:=4a^4. For every \mfa\in\Mf and every antichain \mathfrak{A} we have \Big\|\sum_{\fp\in\mathfrak{A}}(1+d_{\fp}(\fcc(\fp), \mfa))^{-1/(2a^2+a^3)}\mathbf{1}_{E(\fp)}\mathbf{1}_G\Big\|_{p} \le 2^{5a}\dens_1(\mathfrak{A})^{\frac 1p}\mu\left(\cup_{\fp\in\mathfrak{A}}I_{\fp}\right)^{\frac 1p}.

Lean code for Lemma1.741 theorem
  • complete
    theorem Antichain.tile_count.{u_1}Antichain.tile_count.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔄 : Set (𝔓 X)}
      (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) (ϑ : ↑(Set.range ⇑Q)) :
      MeasureTheory.eLpNorm
          (fun x ↦
            ∑ p with p ∈ 𝔄,
              (1 + edist_{𝔠 p, ↑(defaultD a) ^ 𝔰 p / 4} (𝒬 p) ↑ϑ) ^ (-(2 * ↑a ^ 2 + ↑a ^ 3)⁻¹) * (E p).indicator 1 x *
                G.indicator 1 x)
          (ENNReal.ofReal (Antichain.p₆ a)) MeasureTheory.volume ≤
        ↑(Antichain.C6_1_6 a) * dens₁ 𝔄 ^ (Antichain.p₆ a)⁻¹ * MeasureTheory.volume (⋃ p ∈ 𝔄, ↑(𝓘 p)) ^ (Antichain.p₆ a)⁻¹Lemma 6.1.6.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 : IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X))
      (ϑ↑(Set.range ⇑Q) : (Set.rangeSet.range.{u, u_1} {α : Type u} {ι : Sort u_1} (f : ι → α) : Set αRange of a function.
    
    This function is more flexible than `f '' univ`, as the image requires that the domain is in Type
    and not an arbitrary Sort.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X))) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (fun xX 
             p𝔓 X with p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔄Set (𝔓 X),
              (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. edist_{EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X,EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p𝔓 X) ϑ↑(Set.range ⇑Q))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                    (Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator).-Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator).(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. a ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 3)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.)Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                  (EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                GSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX)
          (ENNReal.ofRealENNReal.ofReal (r : ℝ) : ENNReal`ofReal x` returns `x` if it is nonnegative, `0` otherwise.  (Antichain.p₆Antichain.p₆ (a : ℕ) : ℝ`p` in Lemma 6.1.6. We append a subscript `₆` to keep `p` available for tiles.  a)) MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (Antichain.C6_1_6Antichain.C6_1_6 (a : ℕ) : NNRealThe constant appearing in Lemma 6.1.6.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  𝔄Set (𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (Antichain.p₆Antichain.p₆ (a : ℕ) : ℝ`p` in Lemma 6.1.6. We append a subscript `₆` to keep `p` available for tiles.  a)⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (⋃ p𝔓 X  𝔄Set (𝔓 X), (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X)) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (Antichain.p₆Antichain.p₆ (a : ℕ) : ℝ`p` in Lemma 6.1.6. We append a subscript `₆` to keep `p` available for tiles.  a)⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.
    theorem Antichain.tile_count.{u_1}Antichain.tile_count.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔄 : Set (𝔓 X)}
      (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) (ϑ : ↑(Set.range ⇑Q)) :
      MeasureTheory.eLpNorm
          (fun x ↦
            ∑ p with p ∈ 𝔄,
              (1 + edist_{𝔠 p, ↑(defaultD a) ^ 𝔰 p / 4} (𝒬 p) ↑ϑ) ^ (-(2 * ↑a ^ 2 + ↑a ^ 3)⁻¹) * (E p).indicator 1 x *
                G.indicator 1 x)
          (ENNReal.ofReal (Antichain.p₆ a)) MeasureTheory.volume ≤
        ↑(Antichain.C6_1_6 a) * dens₁ 𝔄 ^ (Antichain.p₆ a)⁻¹ * MeasureTheory.volume (⋃ p ∈ 𝔄, ↑(𝓘 p)) ^ (Antichain.p₆ a)⁻¹Lemma 6.1.6.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)}
      (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 :
        IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X))
      (ϑ↑(Set.range ⇑Q) : (Set.rangeSet.range.{u, u_1} {α : Type u} {ι : Sort u_1} (f : ι → α) : Set αRange of a function.
    
    This function is more flexible than `f '' univ`, as the image requires that the domain is in Type
    and not an arbitrary Sort.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X))) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (fun xX 
             p𝔓 X with p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝔄Set (𝔓 X),
              (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
                      edist_{EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X,EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 
                          (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                              𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
                            4}EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 
                        (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p𝔓 X) ϑ↑(Set.range ⇑Q))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                    (Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator).-Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator).(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
                          a ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 3)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.)Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                  (EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                GSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX)
          (ENNReal.ofRealENNReal.ofReal (r : ℝ) : ENNReal`ofReal x` returns `x` if it is nonnegative, `0` otherwise.  (Antichain.p₆Antichain.p₆ (a : ℕ) : ℝ`p` in Lemma 6.1.6. We append a subscript `₆` to keep `p` available for tiles.  a))
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (Antichain.C6_1_6Antichain.C6_1_6 (a : ℕ) : NNRealThe constant appearing in Lemma 6.1.6.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  𝔄Set (𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (Antichain.p₆Antichain.p₆ (a : ℕ) : ℝ`p` in Lemma 6.1.6. We append a subscript `₆` to keep `p` available for tiles.  a)⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
              (⋃ p𝔓 X  𝔄Set (𝔓 X), (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X)) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
            (Antichain.p₆Antichain.p₆ (a : ℕ) : ℝ`p` in Lemma 6.1.6. We append a subscript `₆` to keep `p` available for tiles.  a)⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`.
    Lemma 6.1.6. 

From these lemmas it is easy to prove Theorem 1.6.

Proof of Theorem 1.6. We have \left(\frac 1{\tilde{q}} -\frac 12\right) (2-q)= \frac 1q -\frac 12. Multiplying the (2-q)-th power of eqttt9 and the (q-1)-th power of eqttt3 and estimating gives after simplification of some factors \Big|\int \overline{g(x)} \sum_{\fp \in \mathfrak{A}} T_{\fp} f(x)\, d\mu(x)\Big| \le 2^{117a^3}(q-1)^{-1} \dens_1(\mathfrak{A})^{\frac {q-1}{2p}}\dens_2(\mathfrak{A})^{\frac 1{q}-\frac 12} \|f\|_2\|g\|_2. With the definition of p, this implies Theorem 1.6.

1.5.8. Proof of the Tile Correlation Lemma🔗

The next lemma prepares an application of Theorem 1.8.

Lemma1.75
L∃∀Nused by 1

Let -S\le s_1\le s_2\le S and let x_1,x_2\in X. Define \varphi(y) := \overline{K_{s_1}(x_1, y)} K_{s_2}(x_2, y). If \varphi(y)\neq 0, then y\in B(x_1, D^{s_1}). Moreover, we have with \tau = 1/a \|\varphi\|_{C^\tau(B(x_1, 2 D^{s_1}))}\le \frac{2^{231 a^3}}{\mu(B(x_1, D^{s_1}))\mu(B(x_2, D^{s_2}))}.

Lean code for Lemma1.753 declarations
  • def Tile.correlation.{u_1}Tile.correlation.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (s₁ s₂ : ℤ) (x₁ x₂ y : X) : ℂDef 6.2.1 (from Lemma 6.2.1), denoted by `φ(y)` in the blueprint.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X] (s₁ s₂ : Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    ) (x₁X x₂X yX : XType u_1) : Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. 
    def Tile.correlation.{u_1}Tile.correlation.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (s₁ s₂ : ℤ) (x₁ x₂ y : X) : ℂDef 6.2.1 (from Lemma 6.2.1), denoted by `φ(y)` in the blueprint.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X] (s₁ s₂ : Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    )
      (x₁X x₂X yX : XType u_1) : Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. 
    Def 6.2.1 (from Lemma 6.2.1), denoted by `φ(y)` in the blueprint. 
  • complete
    theorem Tile.mem_ball_of_correlation_ne_zero.{u_1}Tile.mem_ball_of_correlation_ne_zero.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] {s₁ s₂ : ℤ} {x₁ x₂ y : X} (hy : Tile.correlation s₁ s₂ x₁ x₂ y ≠ 0) :
      y ∈ Metric.ball x₁ (↑(defaultD a) ^ s₁)First part of Lemma 6.2.1 (eq. 6.2.2).  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X] {s₁ s₂ : Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {x₁X x₂X yX : XType u_1}
      (hyTile.correlation s₁ s₂ x₁ x₂ y ≠ 0 : Tile.correlationTile.correlation.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (s₁ s₂ : ℤ) (x₁ x₂ y : X) : ℂDef 6.2.1 (from Lemma 6.2.1), denoted by `φ(y)` in the blueprint.  s₁ s₂ x₁X x₂X yX Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      yX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  x₁X (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.(defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. s₁)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
    theorem Tile.mem_ball_of_correlation_ne_zero.{u_1}Tile.mem_ball_of_correlation_ne_zero.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] {s₁ s₂ : ℤ} {x₁ x₂ y : X} (hy : Tile.correlation s₁ s₂ x₁ x₂ y ≠ 0) :
      y ∈ Metric.ball x₁ (↑(defaultD a) ^ s₁)First part of Lemma 6.2.1 (eq. 6.2.2). 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X] {s₁ s₂ : Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {x₁X x₂X yX : XType u_1}
      (hyTile.correlation s₁ s₂ x₁ x₂ y ≠ 0 :
        Tile.correlationTile.correlation.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (s₁ s₂ : ℤ) (x₁ x₂ y : X) : ℂDef 6.2.1 (from Lemma 6.2.1), denoted by `φ(y)` in the blueprint.  s₁ s₂ x₁X x₂X yX Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      yX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  x₁X (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.(defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. s₁)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
    First part of Lemma 6.2.1 (eq. 6.2.2). 
  • complete
    theorem Tile.correlation_kernel_bound.{u_1}Tile.correlation_kernel_bound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] {s₁ s₂ : ℤ} {x₁ x₂ : X} (hs : s₁ ≤ s₂) :
      iHolENorm (Tile.correlation s₁ s₂ x₁ x₂) x₁ (2 * ↑(defaultD a) ^ s₁) (defaultτ a) ≤
        ↑(Tile.C6_2_1 a) /
          (MeasureTheory.volume (Metric.ball x₁ (↑(defaultD a) ^ s₁)) *
            MeasureTheory.volume (Metric.ball x₂ (↑(defaultD a) ^ s₂)))Second part of Lemma 6.2.1 (eq. 6.2.3).  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X] {s₁ s₂ : Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {x₁X x₂X : XType u_1} (hss₁ ≤ s₂ : s₁ LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. s₂) :
      iHolENormiHolENorm.{u_1, u_2} {𝕜 : Type u_1} {X : Type u_2} [PseudoMetricSpace X] [NormedField 𝕜] (φ : X → 𝕜) (x₀ : X)
      (R t : ℝ) : ENNRealthe L^∞-normalized t-Hölder norm. Defined in ℝ≥0∞ to avoid sup-related issues.  (Tile.correlationTile.correlation.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (s₁ s₂ : ℤ) (x₁ x₂ y : X) : ℂDef 6.2.1 (from Lemma 6.2.1), denoted by `φ(y)` in the blueprint.  s₁ s₂ x₁X x₂X) x₁X (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. s₁)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (defaultτdefaultτ (a : ℕ) : ℝ`defaultτ` is the inverse of `a`.  a) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (Tile.C6_2_1Tile.C6_2_1 (a : ℕ) : NNRealThe constant from lemma 6.2.1.
    Has value `2 ^ (231 * a ^ 3)` in the blueprint.  a) /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  x₁X (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.(defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. s₁)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  x₂X (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.(defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. s₂)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    theorem Tile.correlation_kernel_bound.{u_1}Tile.correlation_kernel_bound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] {s₁ s₂ : ℤ} {x₁ x₂ : X} (hs : s₁ ≤ s₂) :
      iHolENorm (Tile.correlation s₁ s₂ x₁ x₂) x₁ (2 * ↑(defaultD a) ^ s₁) (defaultτ a) ≤
        ↑(Tile.C6_2_1 a) /
          (MeasureTheory.volume (Metric.ball x₁ (↑(defaultD a) ^ s₁)) *
            MeasureTheory.volume (Metric.ball x₂ (↑(defaultD a) ^ s₂)))Second part of Lemma 6.2.1 (eq. 6.2.3). 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X] {s₁ s₂ : Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {x₁X x₂X : XType u_1} (hss₁ ≤ s₂ : s₁ LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. s₂) :
      iHolENormiHolENorm.{u_1, u_2} {𝕜 : Type u_1} {X : Type u_2} [PseudoMetricSpace X] [NormedField 𝕜] (φ : X → 𝕜) (x₀ : X)
      (R t : ℝ) : ENNRealthe L^∞-normalized t-Hölder norm. Defined in ℝ≥0∞ to avoid sup-related issues.  (Tile.correlationTile.correlation.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (s₁ s₂ : ℤ) (x₁ x₂ y : X) : ℂDef 6.2.1 (from Lemma 6.2.1), denoted by `φ(y)` in the blueprint.  s₁ s₂ x₁X x₂X)
          x₁X (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. s₁)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (defaultτdefaultτ (a : ℕ) : ℝ`defaultτ` is the inverse of `a`.  a) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (Tile.C6_2_1Tile.C6_2_1 (a : ℕ) : NNRealThe constant from lemma 6.2.1.
    Has value `2 ^ (231 * a ^ 3)` in the blueprint.  a) /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
              (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  x₁X
                (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.(defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. s₁)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
              (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  x₂X
                (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.(defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. s₂)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    Second part of Lemma 6.2.1 (eq. 6.2.3). 

Proof. If \varphi(y) is not zero, then K_{s_1}(x_1, y) is not zero and thus supp-Ks gives eqt10.

We next have for y with eq-Ks-size |\varphi(y)|\le \frac{2^{204 a^3}}{\mu(B(x_1, D^{s_1}))\mu(B(x_2, D^{s_2}))} and for y'\neq y additionally with eq-Ks-smooth |\varphi(y)-\varphi(y')| \le |K_{s_1}(x_1,y)-K_{s_1}(x_1,y')|| K_{s_2}(x_2, y)| +|K_{s_1}(x_1, y')| |K_{s_2}(x_2, y) - K_{s_2}(x_2, y')| \le \frac{2^{229 a^3}}{\mu(B(x_1, D^{s_1}))\mu(B(x_2, D^{s_2}))} \left(\left(\frac{ \rho(y,y')}{D^{s_1}}\right)^{1/a}+ \left(\frac{ \rho(y,y')}{D^{s_2}}\right)^{1/a}\right) \le \frac{2^{230 a^3}}{\mu(B(x_1, D^{s_1}))\mu(B(x_2, D^{s_2}))} \left(\frac{ \rho(y,y')}{D^{s_1}}\right)^{1/a}. Adding the estimates suppart and holderpart gives eqt11. This proves the lemma.

The following auxiliary statement about the support of T_\fp^*g will be used repeatedly.

Lemma1.76
L∃∀N
Used by 2
Hover a use site to preview it.
Preview
Lemma 1.73
Loading preview
Hover a use site to preview it.

For each \fp\in \fP, and each y\in X, we have that T_{\fp}^* g(y)\neq 0 implies y\in B(\pc(\fp),5D^{\ps(\fp)}).

Lean code for Lemma1.761 theorem
  • complete
    theorem Tile.range_support.{u_1}Tile.range_support.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {p : 𝔓 X}
      {g : X → ℂ} {y : X} (hpy : adjointCarleson p g y ≠ 0) : y ∈ Metric.ball (𝔠 p) (5 * ↑(defaultD a) ^ 𝔰 p)Lemma 6.2.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {yX : XType u_1} (hpyadjointCarleson p g y ≠ 0 : adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X gX → ℂ yX Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      yX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.5 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    theorem Tile.range_support.{u_1}Tile.range_support.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {p : 𝔓 X}
      {g : X → ℂ} {y : X} (hpy : adjointCarleson p g y ≠ 0) : y ∈ Metric.ball (𝔠 p) (5 * ↑(defaultD a) ^ 𝔰 p)Lemma 6.2.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {yX : XType u_1}
      (hpyadjointCarleson p g y ≠ 0 : adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X gX → ℂ yX Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      yX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
        Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X)
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.5 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    Lemma 6.2.2. 

Proof. Fix \fp and y with tstargnot0. Then there exists x\in E(\fp) with \overline{K_{\ps(\fp)}(x,y)}e(-\tQ(x)(y) +\tQ(x)(x))g(x) \neq 0. As E(\fp)\subset \scI(\fp) and by the squeezing property eq-vol-sp-cube, we have \rho(x,\pc(\fp)) < 4D^{\ps(\fp)}. As K_{\ps(\fp)}(x,y)\neq 0, we have by supp-Ks that \rho(x,y)\le \frac 12 D^{\ps(\fp)}. Now ynotfar follows by the triangle inequality.

The next lemma is a geometric estimate for two tiles.

Lemma1.77
L∃∀Nused by 1

Uses Lemma 1.11 and Lemma 1.76. Let \fp_1, \fp_2\in \fP with B(\pc(\fp_1),5D^{\ps(\fp_1)}) \cap B(\pc(\fp_2),5D^{\ps(\fp_2)}) \ne \emptyset and \ps({\fp_1})\leq \ps({\fp_2}). For each x_1\in E(\fp_1) and x_2\in E(\fp_2) we have 1+d_{\fp_1}(\fcc(\fp_1), \fcc(\fp_2))\le 2^{8a}(1 + d_{B(x_1, D^{\ps(\fp_1)})}(\tQ(x_1),\tQ(x_2))).

Lean code for Lemma1.771 theorem
  • complete
    theorem Tile.uncertainty.{u_1}Tile.uncertainty.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ha : 1 ≤ a)
      {p₁ p₂ : 𝔓 X} (hle : 𝔰 p₁ ≤ 𝔰 p₂)
      (hinter : (Metric.ball (𝔠 p₁) (5 * ↑(defaultD a) ^ 𝔰 p₁) ∩ Metric.ball (𝔠 p₂) (5 * ↑(defaultD a) ^ 𝔰 p₂)).Nonempty)
      {x₁ x₂ : X} (hx₁ : x₁ ∈ E p₁) (hx₂ : x₂ ∈ E p₂) :
      1 + edist_{𝔠 p₁, ↑(defaultD a) ^ 𝔰 p₁ / 4} (𝒬 p₁) (𝒬 p₂) ≤
        ↑(Tile.C6_2_3 a) * (1 + edist_{x₁, ↑(defaultD a) ^ 𝔰 p₁} (Q x₁) (Q x₂))Lemma 6.2.3 (edist version).  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      (ha1 ≤ a : 1 LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. a) {p₁𝔓 X p₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hle𝔰 p₁ ≤ 𝔰 p₂ : 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p₂𝔓 X)
      (hinter(Metric.ball (𝔠 p₁) (5 * ↑(defaultD a) ^ 𝔰 p₁) ∩ Metric.ball (𝔠 p₂) (5 * ↑(defaultD a) ^ 𝔰 p₂)).Nonempty :
        (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p₁𝔓 X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.5 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p₁𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.
            Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p₂𝔓 X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.5 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p₂𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`..NonemptySet.Nonempty.{u} {α : Type u} (s : Set α) : PropThe property `s.Nonempty` expresses the fact that the set `s` is not empty. It should be used
    in theorem assumptions instead of `∃ x, x ∈ s` or `s ≠ ∅` as it gives access to a nice API thanks
    to the dot notation. )
      {x₁X x₂X : XType u_1} (hx₁x₁ ∈ E p₁ : x₁X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p₁𝔓 X) (hx₂x₂ ∈ E p₂ : x₂X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p₂𝔓 X) :
      1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. edist_{EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p₁𝔓 X,EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p₁𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p₁𝔓 X) (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p₂𝔓 X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (Tile.C6_2_3Tile.C6_2_3 (a : ℕ) : NNRealThe constant from lemma 6.2.3.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. edist_{EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points x₁X,EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p₁𝔓 X}EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  (QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) x₁X) (QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) x₂X))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    theorem Tile.uncertainty.{u_1}Tile.uncertainty.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ha : 1 ≤ a)
      {p₁ p₂ : 𝔓 X} (hle : 𝔰 p₁ ≤ 𝔰 p₂)
      (hinter : (Metric.ball (𝔠 p₁) (5 * ↑(defaultD a) ^ 𝔰 p₁) ∩ Metric.ball (𝔠 p₂) (5 * ↑(defaultD a) ^ 𝔰 p₂)).Nonempty)
      {x₁ x₂ : X} (hx₁ : x₁ ∈ E p₁) (hx₂ : x₂ ∈ E p₂) :
      1 + edist_{𝔠 p₁, ↑(defaultD a) ^ 𝔰 p₁ / 4} (𝒬 p₁) (𝒬 p₂) ≤
        ↑(Tile.C6_2_3 a) * (1 + edist_{x₁, ↑(defaultD a) ^ 𝔰 p₁} (Q x₁) (Q x₂))Lemma 6.2.3 (edist version).  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      (ha1 ≤ a : 1 LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. a) {p₁𝔓 X p₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (hle𝔰 p₁ ≤ 𝔰 p₂ : 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p₂𝔓 X)
      (hinter(Metric.ball (𝔠 p₁) (5 * ↑(defaultD a) ^ 𝔰 p₁) ∩ Metric.ball (𝔠 p₂) (5 * ↑(defaultD a) ^ 𝔰 p₂)).Nonempty :
        (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p₁𝔓 X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.5 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p₁𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.
            Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p₂𝔓 X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.5 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                  𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p₂𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`..NonemptySet.Nonempty.{u} {α : Type u} (s : Set α) : PropThe property `s.Nonempty` expresses the fact that the set `s` is not empty. It should be used
    in theorem assumptions instead of `∃ x, x ∈ s` or `s ≠ ∅` as it gives access to a nice API thanks
    to the dot notation. )
      {x₁X x₂X : XType u_1} (hx₁x₁ ∈ E p₁ : x₁X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p₁𝔓 X)
      (hx₂x₂ ∈ E p₂ : x₂X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p₂𝔓 X) :
      1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          edist_{EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p₁𝔓 X,EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 
              (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p₁𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 
            (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p₁𝔓 X) (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p₂𝔓 X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (Tile.C6_2_3Tile.C6_2_3 (a : ℕ) : NNRealThe constant from lemma 6.2.3.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
            edist_{EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points x₁X,EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p₁𝔓 X}EDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 
              (QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) x₁X) (QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) x₂X))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    Lemma 6.2.3 (edist version). 

Proof. Let i\in \{1,2\}. By definition defineep of E, we have \tQ(x_i)\in \fc(\fp_i). With eq-freq-comp-ball we then conclude d_{\fp_i}(\tQ(x_i),\fcc(\fp_i)) < 1. We have by the triangle inequality and eq-vol-sp-cube that \scI(\fp_1) \subset B(\pc(\fp_2),14D^{\ps(\fp_2)}). Thus, using again eq-vol-sp-cube and the doubling property firstdb d_{\fp_1}(\tQ(x_2), \fcc(\fp_2)) \le 2^{6a} d_{\fp_2}(\tQ(x_2), \fcc(\fp_2)) \le 2^{6a}. By the triangle inequality, we obtain from dponetwo and tgeo0.5 1+d_{\fp_1}(\fcc(\fp_1), \fcc(\fp_2))\le 2 + 2^{6a} +d_{\fp_1}(\tQ(x_1), \tQ(x_2)). As x_1\in \scI(\fp_1) by definition defineep of E, we have by the squeezing property eq-vol-sp-cube d(x_1,\pc(\fp_1))\le 4D^{\ps(\fp_1)} and thus by eq-vol-sp-cube again and the triangle inequality \scI(\fp_1)\subset B(x_1,8D^{\ps(\fp_1)}). We thus estimate the right-hand side of tgeo1 with monotonicity monotonedb of the metrics d_B by \le 2 + 2^{6a} + d_{B(x_1,8D^{\ps(\fp_1)})}(\tQ(x_1), \tQ(x_2)). This is further estimated by applying the doubling property firstdb three times by \le 2 + 2^{6a} +2^{3a}d_{B_1(x_1, D^{\ps(\fp_1)})}(\tQ(x_1), \tQ(x_2)). Now tgeo follows with a\ge 4.

We now prove Lemma 1.73.

Proof of Lemma 1.73. We begin with eq-basic-TT*-est. By Lemma 1.76, the left-hand side of eq-basic-TT*-est vanishes if B(\pc(\fp'),5D^{\ps(\fp')}) \cap B(\pc(\fp),5D^{\ps(\fp)}) = \emptyset. Thus we can assume for the remainder of the proof that B(\pc(\fp'),5D^{\ps(\fp')}) \cap B(\pc(\fp),5D^{\ps(\fp)}) \neq \emptyset. We expand the left-hand side of eq-basic-TT*-est as \left|\int \int_{E(\fp')} \overline{K_{\ps(\fp')}(x_1,y)}e(-\tQ(x_1)(y)+ \tQ(x_1)(x_1))g(x_1)\, d\mu(x_1) \right. \times \left.\int_{E(\fp)} {K_{\ps(\fp)}(x_2,y)}e(\tQ(x_2)(y) -\tQ(x_2)(x_2))\overline{g(x_2)}\, d\mu(x_2)\, d\mu(y)\right|. By Fubini and the triangle inequality and the fact |e(\tQ(x_i)(x_i))|=1 for i=1,2, we can estimate tstartstar and tstartstar' from above by \int_{E(\fp')} \int_{E(\fp)} {\bf I}(x_1, x_2)\, d\mu(x_1)d\mu(x_2), with {\bf I}(x_1, x_2):= \left|\int e(-\tQ(x_1)(y)+\tQ(x_2)(y))\varphi_{x_1,x_2}(y) d\mu(y) \, g(x_1)g(x_2)\right|.

We estimate for fixed x_1\in E(\fp') and x_2\in E(\fp) the inner integral of eqa1 with Theorem 1.8. The function \varphi:=\varphi_{x_1,x_2} satisfies the assumptions of Theorem 1.8 with z = x_1 and R = D^{s_1} by Lemma 1.75. We obtain with B':= B(x_1, D^{\ps(\fp')}) {\bf I}(x_1, x_2) \le 2^{8a} \mu(B') \|{\varphi}\|_{C^\tau(B')} (1 + d_{B'}(\tQ(x_1),\tQ(x_2)))^{-1/(2a^2+a^3)}|g(x_1)g(x_2)| \le \frac{2^{231a^3+8a}} {\mu(B(x_2, D^{\ps(\fp)}))} (1 + d_{B'}(\tQ(x_1),\tQ(x_2)))^{-1/(2a^2+a^3)}. Using intersec5B, Lemma 1.77 and a\ge 1 estimates eqa1.5 by \le \frac{2^{231a^3 + 8a + 1}} {\mu(B(x_2, D^{\ps(\fp)}))} (1+d_{\fp'}(\fcc(\fp'), \fcc(\fp)))^{-1/(2a^2+a^3)}|g(x_1)g(x_2)|. As x_2\in \scI(\fp) by definition defineep of E, we have by eq-vol-sp-cube \rho(x_2,\pc(\fp)) < 4D^{\ps(\fp)} and thus by eq-vol-sp-cube again and the triangle inequality \scI(\fp)\subset B(x_2,8D^{\ps(\fp)}). Using three iterations of the doubling property doublingx give \mu(\scI(\fp))\le 2^{3a}\mu(B(x_2,D^{\ps(\fp)})). With a\ge 4 and eqa2 we conclude eq-basic-TT*-est.

Now assume the left-hand side of eq-basic-TT*-est is not zero. There is a y\in X with T^*_{\fp'}g(y)\overline{T^*_{\fp}g(y)}\neq 0 By the triangle inequality and Lemma 1.76, we conclude \rho(\pc(\fp),\pc(\fp'))\le \rho(\pc(\fp),y) +\rho(\pc(\fp'),y) \le 5D^{\ps(\fp)}+5D^{\ps(\fp')}\le 10 D^{\ps(\fp)}. By the squeezing property eq-vol-sp-cube and the triangle inequality, we conclude \scI(\fp') \subset B(\pc(\fp), 14D^{\ps(\fp)}). This completes the proof of Lemma 1.73.

1.5.9. Proof of the Antichain Tile Count Lemma🔗

Lemma1.78
L∃∀Nused by 1

Uses Lemma 1.11. Let \mfa\in \Mf and N\ge0 be an integer. Let \fp, \fp'\in \fP with d_{\fp}(\fcc(\fp), \mfa)\le 2^N d_{\fp'}(\fcc(\fp'), \mfa)\le 2^N. Assume \scI(\fp)\subset \scI(\fp') and \ps(\fp)<\ps(\fp'). Then 2^{N+2}\fp\lesssim 2^{N+2} \fp'.

Lean code for Lemma1.781 theorem
  • complete
    theorem Antichain.tile_reach.{u_1}Antichain.tile_reach.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {ϑ : Θ X} {N : ℕ}
      {p p' : 𝔓 X} (hp : dist_{𝔠 p, ↑(defaultD a) ^ 𝔰 p / 4} (𝒬 p) ϑ ≤ 2 ^ N)
      (hp' : dist_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') ϑ ≤ 2 ^ N) (hI : 𝓘 p ≤ 𝓘 p') (hs : 𝔰 p < 𝔰 p') :
      smul (2 ^ (N + 2)) p ≤ smul (2 ^ (N + 2)) p'Lemma 6.3.1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {ϑΘ X : ΘFunctionDistances.Θ.{u, u_3} {𝕜 : outParam (Type u_3)} (X : Type u) {inst✝ : NormedField 𝕜}
      {inst✝¹ : TopologicalSpace X} [self : FunctionDistances 𝕜 X] : Type uA type of continuous functions from `X` to `𝕜`.  XType u_1} {N : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (hpdist_{𝔠 p, ↑(defaultD a) ^ 𝔰 p / 4} (𝒬 p) ϑ ≤ 2 ^ N : dist_{Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X,Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p𝔓 X) ϑΘ X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. N)
      (hp'dist_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') ϑ ≤ 2 ^ N : dist_{Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p'𝔓 X,Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p'𝔓 X) ϑΘ X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. N)
      (hI𝓘 p ≤ 𝓘 p' : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X) (hs𝔰 p < 𝔰 p' : 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X) :
      smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 2)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 2)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. p'𝔓 X
    theorem Antichain.tile_reach.{u_1}Antichain.tile_reach.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {ϑ : Θ X} {N : ℕ}
      {p p' : 𝔓 X} (hp : dist_{𝔠 p, ↑(defaultD a) ^ 𝔰 p / 4} (𝒬 p) ϑ ≤ 2 ^ N)
      (hp' : dist_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') ϑ ≤ 2 ^ N) (hI : 𝓘 p ≤ 𝓘 p') (hs : 𝔰 p < 𝔰 p') :
      smul (2 ^ (N + 2)) p ≤ smul (2 ^ (N + 2)) p'Lemma 6.3.1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {ϑΘ X : ΘFunctionDistances.Θ.{u, u_3} {𝕜 : outParam (Type u_3)} (X : Type u) {inst✝ : NormedField 𝕜}
      {inst✝¹ : TopologicalSpace X} [self : FunctionDistances 𝕜 X] : Type uA type of continuous functions from `X` to `𝕜`.  XType u_1} {N : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (hpdist_{𝔠 p, ↑(defaultD a) ^ 𝔰 p / 4} (𝒬 p) ϑ ≤ 2 ^ N :
        dist_{Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X,Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points 
            (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p𝔓 X) ϑΘ X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
          2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. N)
      (hp'dist_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') ϑ ≤ 2 ^ N :
        dist_{Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p'𝔓 X,Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points 
            (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p'𝔓 X) ϑΘ X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
          2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. N)
      (hI𝓘 p ≤ 𝓘 p' : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X) (hs𝔰 p < 𝔰 p' : 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X) :
      smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 2)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. p𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        smulsmul.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      TileLike XThis is not defined as such in the blueprint, but `λp ≲ λ'p'` can be written using
    `smul l p ≤ smul l' p'`.
    Beware: `smul 1 p` is very different from `toTileLike p`.  (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 2)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. p'𝔓 X
    Lemma 6.3.1. 

Proof. By Lemma 1.11, we have d_{\fp}(\fcc(\fp'),\mfa) \le d_{\fp'}(\fcc(\fp'),\mfa) \le 2^{N}. Together with eqassumedismfa and the triangle inequality, we obtain d_{\fp}(\fcc(\fp'),\fcc(\fp))\le 2^{N+1}. Now assume \mfa'\in B_{\fp'}(\fcc(\fp'),2^{N+2}). By the doubling property firstdb, applied five times, we have d_{B(\pc(\fp'),8D^{\ps(\fp')})}(\fcc(\fp'),\mfa') < 2^{5a+N+2}. We have by the squeezing property eq-vol-sp-cube \pc(\fp)\in B(\pc(\fp'),4D^{\ps(\fp')}). Hence by the triangle inequality B(\pc(\fp), 4D^{\ps(\fp')}) \subseteq B(\pc(\fp'),8D^{\ps(\fp')}). Together with ageo1 and monotonicity monotonedb of d d_{B(\pc(\fp),4D^{\ps(\fp')})}(\fcc(\fp'),\mfa') < 2^{5a+N+2}. Using the doubling property seconddb 5a+2 times gives d_{B(\pc(\fp),2^{2-5a^2-2a}D^{\ps(\fp')})}(\fcc(\fp'),\mfa') < 2^{N}. Using \ps(\fp)<\ps(\fp') and D=2^{100a^2} and a\ge 4 gives d_{\fp}(\fcc(\fp'),\mfa') < 2^{N}. With the triangle inequality and eqdistqpqp, d_{\fp}(\fcc(\fp),\mfa') < 2^{N+2}. This shows B_{\fp'}(\fcc(\fp'),2^{N+2})\subset B_{\fp}(\fcc(\fp),2^{N+2}). This implies lp'lp'' and completes the proof of the lemma.

For \mfa \in \Mf and N\ge 0 define \mathfrak{A}_{\mfa,N}:=\{\fp\in\mathfrak{A}: 2^{N}\le 1+d_{\fp}(\fcc(\fp), \mfa) < 2^{N+1}\}.

Lemma1.79
L∃∀Nused by 1

Let \mfa \in \Mf, N\ge 0 and L\in \mathcal{D}. Then \sum_{\fp\in\mathfrak{A}_{\mfa,N}:\scI(\fp)=L}\mu(E(\fp)\cap G)\le 2^{a(N+5)}\dens_1(\mathfrak{A})\mu(L).

Lean code for Lemma1.791 theorem
  • complete
    theorem Antichain.stack_density.{u_1}Antichain.stack_density.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔄 : Set (𝔓 X)) (ϑ : Θ X) (N : ℕ) (L : Grid X) :
      ∑ p ∈ (Antichain.𝔄_aux 𝔄 ϑ N).toFinset with 𝓘 p = L, MeasureTheory.volume (E p ∩ G) ≤
        2 ^ (a * (N + 5)) * dens₁ 𝔄 * MeasureTheory.volume ↑LLemma 6.3.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      (𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)) (ϑΘ X : ΘFunctionDistances.Θ.{u, u_3} {𝕜 : outParam (Type u_3)} (X : Type u) {inst✝ : NormedField 𝕜}
      {inst✝¹ : TopologicalSpace X} [self : FunctionDistances 𝕜 X] : Type uA type of continuous functions from `X` to `𝕜`.  XType u_1) (N : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) (LGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1) :
       p𝔓 X  (Antichain.𝔄_auxAntichain.𝔄_aux.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔄 : Set (𝔓 X))
      (ϑ : Θ X) (N : ℕ) : Set (𝔓 X)Def 6.3.15.  𝔄Set (𝔓 X) ϑΘ X N).toFinsetSet.toFinset.{u_1} {α : Type u_1} (s : Set α) [Fintype ↑s] : Finset αConstruct a finset enumerating a set `s`, given a `Fintype` instance.  with 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. LGrid X,
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. GSet X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.a *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 5)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  𝔄Set (𝔓 X) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LGrid X
    theorem Antichain.stack_density.{u_1}Antichain.stack_density.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔄 : Set (𝔓 X)) (ϑ : Θ X) (N : ℕ) (L : Grid X) :
      ∑ p ∈ (Antichain.𝔄_aux 𝔄 ϑ N).toFinset with 𝓘 p = L, MeasureTheory.volume (E p ∩ G) ≤
        2 ^ (a * (N + 5)) * dens₁ 𝔄 * MeasureTheory.volume ↑LLemma 6.3.2. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      (𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)) (ϑΘ X : ΘFunctionDistances.Θ.{u, u_3} {𝕜 : outParam (Type u_3)} (X : Type u) {inst✝ : NormedField 𝕜}
      {inst✝¹ : TopologicalSpace X} [self : FunctionDistances 𝕜 X] : Type uA type of continuous functions from `X` to `𝕜`.  XType u_1) (N : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    )
      (LGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1) :
      
          p𝔓 X 
            (Antichain.𝔄_auxAntichain.𝔄_aux.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔄 : Set (𝔓 X))
      (ϑ : Θ X) (N : ℕ) : Set (𝔓 X)Def 6.3.15.  𝔄Set (𝔓 X) ϑΘ X
                N).toFinsetSet.toFinset.{u_1} {α : Type u_1} (s : Set α) [Fintype ↑s] : Finset αConstruct a finset enumerating a set `s`, given a `Fintype` instance.  with
          𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. LGrid X,
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. GSet X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.a *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 5)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  𝔄Set (𝔓 X) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LGrid X
    Lemma 6.3.2. 

Proof. Let \mfa,N,L be given and set \mathfrak{A}':=\{\fp\in\mathfrak{A}_{\mfa,N}:\scI(\fp)=L\}. Let \fp\in\mathfrak{A}'. We have by definition definedens1 using \lambda=2 and the squeezing property eq-freq-comp-ball \mu(E(\fp)\cap G)\le \mu(E_2(2, \fp))\le 2^{a}\dens_1(\mathfrak{A}')\mu(L). By the covering property thirddb, applied N+4 times, there is a collection \Mf' of at most 2^{a(N+4)} elements such that B_{\fp}(\mfa, 2^{N+1})\subset \bigcup_{\mfa'\in \Mf'} B_{\fp}(\mfa', 0.2). As each \fcc(\fp') with \fp'\in \mathfrak{A}' is contained in the left-hand side of eqanti-4 by definition, it is in at least one B_{\fp}(\mfa', 0.2) with \mfa'\in \Mf'.

For two different \fp',\fp''\in \mathfrak{A}', we have by eq-dis-freq-cover that \fc(\fp') and \fc(\fp'') are disjoint and thus by the squeezing property eq-freq-comp-ball we have for every \mfa'\in \Mf' \mfa'\not\in B_{\fp}(\fcc(\fp'), 0.2)\cap B_{\fp}(\fcc(\fp''), 0.2). Hence at most one of \fcc(\fp') and \fcc(\fp'') is in B_{\fp}(\mfa', 0.2). It follows that there are at most 2^{a(N+4)} elements in \mathfrak{A}'. Adding eqanti-3 over \mathfrak{A}' proves eqanti-1.

Lemma1.80
L∃∀Nused by 1

Uses Lemma 1.69 and Lemma 1.78. Let \mfa\in\Mf and N be an integer. Let \fp_{\mfa} be a tile with \mfa\in B_{\fp_{\mfa}}(\fcc(\fp_{\mfa}), 2^{N+1}). Then we have \sum_{\fp\in\mathfrak{A}_{\mfa,N}: \ps(\fp_{\mfa})<\ps(\fp)}\mu(E(\fp)\cap G \cap \scI(\fp_{\mfa})) \le \mu (E_2(2^{N+3},\fp_{\mfa})).

Lean code for Lemma1.802 theorems
  • complete
    theorem Antichain.local_antichain_density.{u_1}Antichain.local_antichain_density.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {𝔄 : Set (𝔓 X)} (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) (ϑ : Θ X) (N : ℕ) {p' : 𝔓 X}
      (hp' : ϑ ∈ ball_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') (2 ^ (N + 1))) :
      ∑ p ∈ (Antichain.𝔄_aux 𝔄 ϑ N).toFinset with 𝔰 p' < 𝔰 p, MeasureTheory.volume (E p ∩ G ∩ ↑(𝓘 p')) ≤
        MeasureTheory.volume (E₂ (2 ^ (N + 3)) p')Lemma 6.3.3.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 : IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X)) (ϑΘ X : ΘFunctionDistances.Θ.{u, u_3} {𝕜 : outParam (Type u_3)} (X : Type u) {inst✝ : NormedField 𝕜}
      {inst✝¹ : TopologicalSpace X} [self : FunctionDistances 𝕜 X] : Type uA type of continuous functions from `X` to `𝕜`.  XType u_1)
      (N : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) {p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (hp'ϑ ∈ ball_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') (2 ^ (N + 1)) :
        ϑΘ X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. ball_{Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p'𝔓 X,Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p'𝔓 X) (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.) :
       p𝔓 X  (Antichain.𝔄_auxAntichain.𝔄_aux.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔄 : Set (𝔓 X))
      (ϑ : Θ X) (N : ℕ) : Set (𝔓 X)Def 6.3.15.  𝔄Set (𝔓 X) ϑΘ X N).toFinsetSet.toFinset.{u_1} {α : Type u_1} (s : Set α) [Fintype ↑s] : Finset αConstruct a finset enumerating a set `s`, given a `Fintype` instance.  with 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X,
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. GSet X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X))Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (E₂E₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      Set X (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 3)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. p'𝔓 X)
    theorem Antichain.local_antichain_density.{u_1}Antichain.local_antichain_density.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {𝔄 : Set (𝔓 X)} (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) (ϑ : Θ X) (N : ℕ) {p' : 𝔓 X}
      (hp' : ϑ ∈ ball_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') (2 ^ (N + 1))) :
      ∑ p ∈ (Antichain.𝔄_aux 𝔄 ϑ N).toFinset with 𝔰 p' < 𝔰 p, MeasureTheory.volume (E p ∩ G ∩ ↑(𝓘 p')) ≤
        MeasureTheory.volume (E₂ (2 ^ (N + 3)) p')Lemma 6.3.3. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)}
      (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 :
        IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X))
      (ϑΘ X : ΘFunctionDistances.Θ.{u, u_3} {𝕜 : outParam (Type u_3)} (X : Type u) {inst✝ : NormedField 𝕜}
      {inst✝¹ : TopologicalSpace X} [self : FunctionDistances 𝕜 X] : Type uA type of continuous functions from `X` to `𝕜`.  XType u_1) (N : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) {p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (hp'ϑ ∈ ball_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') (2 ^ (N + 1)) :
        ϑΘ X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          ball_{Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p'𝔓 X,Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 
              (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 
            (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p'𝔓 X) (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.) :
      
          p𝔓 X 
            (Antichain.𝔄_auxAntichain.𝔄_aux.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔄 : Set (𝔓 X))
      (ϑ : Θ X) (N : ℕ) : Set (𝔓 X)Def 6.3.15.  𝔄Set (𝔓 X) ϑΘ X
                N).toFinsetSet.toFinset.{u_1} {α : Type u_1} (s : Set α) [Fintype ↑s] : Finset αConstruct a finset enumerating a set `s`, given a `Fintype` instance.  with
          𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X,
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
            (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. GSet X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X))Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
          (E₂E₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      Set X (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 3)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. p'𝔓 X)
    Lemma 6.3.3. 
  • complete
    theorem Antichain.Ep_inter_G_inter_Ip'_subset_E2.{u_1}Antichain.Ep_inter_G_inter_Ip'_subset_E2.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔄 : Set (𝔓 X)} (ϑ : Θ X) (N : ℕ) {p p' : 𝔓 X}
      (hpin : p ∈ (Antichain.𝔄_aux 𝔄 ϑ N).toFinset) (hp' : ϑ ∈ ball_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') (2 ^ (N + 1)))
      (hs : 𝔰 p' < 𝔰 p) (h𝓘 : (↑(𝓘 p') ∩ ↑(𝓘 p)).Nonempty) : E p ∩ G ∩ ↑(𝓘 p') ⊆ E₂ (2 ^ (N + 3)) p'We prove inclusion 6.3.24 for every `p ∈ (𝔄_aux 𝔄 ϑ N)` with `𝔰 p' < 𝔰 p` such that
    `(𝓘 p : Set X) ∩ (𝓘 p') ≠ ∅`. The variable `p'` corresponds to `𝔭_ϑ` in the blueprint.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} (ϑΘ X : ΘFunctionDistances.Θ.{u, u_3} {𝕜 : outParam (Type u_3)} (X : Type u) {inst✝ : NormedField 𝕜}
      {inst✝¹ : TopologicalSpace X} [self : FunctionDistances 𝕜 X] : Type uA type of continuous functions from `X` to `𝕜`.  XType u_1) (N : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (hpinp ∈ (Antichain.𝔄_aux 𝔄 ϑ N).toFinset : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. (Antichain.𝔄_auxAntichain.𝔄_aux.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔄 : Set (𝔓 X))
      (ϑ : Θ X) (N : ℕ) : Set (𝔓 X)Def 6.3.15.  𝔄Set (𝔓 X) ϑΘ X N).toFinsetSet.toFinset.{u_1} {α : Type u_1} (s : Set α) [Fintype ↑s] : Finset αConstruct a finset enumerating a set `s`, given a `Fintype` instance. )
      (hp'ϑ ∈ ball_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') (2 ^ (N + 1)) : ϑΘ X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. ball_{Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p'𝔓 X,Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p'𝔓 X) (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.)
      (hs𝔰 p' < 𝔰 p : 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X) (h𝓘(↑(𝓘 p') ∩ ↑(𝓘 p)).Nonempty : (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X) Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X))Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`..NonemptySet.Nonempty.{u} {α : Type u} (s : Set α) : PropThe property `s.Nonempty` expresses the fact that the set `s` is not empty. It should be used
    in theorem assumptions instead of `∃ x, x ∈ s` or `s ≠ ∅` as it gives access to a nice API thanks
    to the dot notation. ) :
      EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. GSet X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X) HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. E₂E₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      Set X (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 3)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. p'𝔓 X
    theorem Antichain.Ep_inter_G_inter_Ip'_subset_E2.{u_1}Antichain.Ep_inter_G_inter_Ip'_subset_E2.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔄 : Set (𝔓 X)} (ϑ : Θ X) (N : ℕ) {p p' : 𝔓 X}
      (hpin : p ∈ (Antichain.𝔄_aux 𝔄 ϑ N).toFinset) (hp' : ϑ ∈ ball_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') (2 ^ (N + 1)))
      (hs : 𝔰 p' < 𝔰 p) (h𝓘 : (↑(𝓘 p') ∩ ↑(𝓘 p)).Nonempty) : E p ∩ G ∩ ↑(𝓘 p') ⊆ E₂ (2 ^ (N + 3)) p'We prove inclusion 6.3.24 for every `p ∈ (𝔄_aux 𝔄 ϑ N)` with `𝔰 p' < 𝔰 p` such that
    `(𝓘 p : Set X) ∩ (𝓘 p') ≠ ∅`. The variable `p'` corresponds to `𝔭_ϑ` in the blueprint. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} (ϑΘ X : ΘFunctionDistances.Θ.{u, u_3} {𝕜 : outParam (Type u_3)} (X : Type u) {inst✝ : NormedField 𝕜}
      {inst✝¹ : TopologicalSpace X} [self : FunctionDistances 𝕜 X] : Type uA type of continuous functions from `X` to `𝕜`.  XType u_1) (N : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    )
      {p𝔓 X p'𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1}
      (hpinp ∈ (Antichain.𝔄_aux 𝔄 ϑ N).toFinset :
        p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. (Antichain.𝔄_auxAntichain.𝔄_aux.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔄 : Set (𝔓 X))
      (ϑ : Θ X) (N : ℕ) : Set (𝔓 X)Def 6.3.15.  𝔄Set (𝔓 X) ϑΘ X N).toFinsetSet.toFinset.{u_1} {α : Type u_1} (s : Set α) [Fintype ↑s] : Finset αConstruct a finset enumerating a set `s`, given a `Fintype` instance. )
      (hp'ϑ ∈ ball_{𝔠 p', ↑(defaultD a) ^ 𝔰 p' / 4} (𝒬 p') (2 ^ (N + 1)) :
        ϑΘ X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          ball_{Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p'𝔓 X,Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 
              (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 4}Metric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε` 
            (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X p'𝔓 X) (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.)
      (hs𝔰 p' < 𝔰 p : 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p'𝔓 X <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)
      (h𝓘(↑(𝓘 p') ∩ ↑(𝓘 p)).Nonempty : (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X) Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X))Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`..NonemptySet.Nonempty.{u} {α : Type u} (s : Set α) : PropThe property `s.Nonempty` expresses the fact that the set `s` is not empty. It should be used
    in theorem assumptions instead of `∃ x, x ∈ s` or `s ≠ ∅` as it gives access to a nice API thanks
    to the dot notation. ) :
      EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. GSet X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p'𝔓 X) HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. E₂E₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (l : ℝ) (p : 𝔓 X) :
      Set X (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.N +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 3)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. p'𝔓 X
    We prove inclusion 6.3.24 for every `p ∈ (𝔄_aux 𝔄 ϑ N)` with `𝔰 p' < 𝔰 p` such that
    `(𝓘 p : Set X) ∩ (𝓘 p') ≠ ∅`. The variable `p'` corresponds to `𝔭_ϑ` in the blueprint. 

Proof. Let \fp be any tile in \mathfrak{A}_{\mfa,N} with \ps(\fp_{\mfa})<\ps(\fp). By definition of E, the tile contributes zero to the sum on the left-hand side of eqanti-0.5 unless \scI(\fp)\cap \scI(\fp_{\mfa}) \neq \emptyset, which we may assume. With \ps(\fp_{\mfa})<\ps(\fp) and the dyadic property dyadicproperty we conclude \scI(\fp_{\mfa})\subset \scI(\fp). We conclude from \fp \in \mathfrak{A}_{\mfa,N} that \mfa \in B_\fp(\fcc(\fp), 2^{N+1}). With Lemma 1.78 and the assumption on \fp_\mfa, we conclude 2^{N+3}\fp_{\mfa} \lesssim 2^{N+3}\fp. By definition definee2 of E_2, we conclude E(\fp)\cap G \cap \scI(\fp_{\mfa}) \subset E_2(2^{N+3},\fp_{\mfa}). Using disjointedness of the various E(\fp) with \fp\in \mathfrak{A} by Lemma 1.69, we obtain eqanti-0.5. This proves the lemma.

Lemma1.81
L∃∀Nused by 1

Uses Lemma 1.79 and Lemma 1.80. Let \mfa\in Q(X) and let N\ge 0 be an integer. Then we have \sum_{\fp\in\mathfrak{A}_{\mfa,N}}\mu(E(\fp)\cap G) \le 2^{101a^3+Na}\dens_1(\mathfrak{A})\mu\left(\cup_{\fp\in\mathfrak{A}}I_{\fp}\right).

Lean code for Lemma1.811 theorem
  • complete
    theorem Antichain.global_antichain_density.{u_1}Antichain.global_antichain_density.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {𝔄 : Set (𝔓 X)} (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) (ϑ : ↑(Set.range ⇑Q)) (N : ℕ) :
      ∑ p ∈ (Antichain.𝔄_aux 𝔄 (↑ϑ) N).toFinset, MeasureTheory.volume (E p ∩ G) ≤
        ↑(Antichain.C6_3_4 a N) * dens₁ 𝔄 * MeasureTheory.volume (⋃ p ∈ 𝔄, ↑(𝓘 p))Lemma 6.3.4.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 : IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X))
      (ϑ↑(Set.range ⇑Q) : (Set.rangeSet.range.{u, u_1} {α : Type u} {ι : Sort u_1} (f : ι → α) : Set αRange of a function.
    
    This function is more flexible than `f '' univ`, as the image requires that the domain is in Type
    and not an arbitrary Sort.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X))) (N : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) :
       p𝔓 X  (Antichain.𝔄_auxAntichain.𝔄_aux.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔄 : Set (𝔓 X))
      (ϑ : Θ X) (N : ℕ) : Set (𝔓 X)Def 6.3.15.  𝔄Set (𝔓 X) (↑ϑ↑(Set.range ⇑Q)) N).toFinsetSet.toFinset.{u_1} {α : Type u_1} (s : Set α) [Fintype ↑s] : Finset αConstruct a finset enumerating a set `s`, given a `Fintype` instance. ,
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. GSet X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (Antichain.C6_3_4Antichain.C6_3_4 (a N : ℕ) : NNRealThe constant appearing in Lemma 6.3.4.  a N) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  𝔄Set (𝔓 X) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (⋃ p𝔓 X  𝔄Set (𝔓 X), (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X))
    theorem Antichain.global_antichain_density.{u_1}Antichain.global_antichain_density.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {𝔄 : Set (𝔓 X)} (h𝔄 : IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄) (ϑ : ↑(Set.range ⇑Q)) (N : ℕ) :
      ∑ p ∈ (Antichain.𝔄_aux 𝔄 (↑ϑ) N).toFinset, MeasureTheory.volume (E p ∩ G) ≤
        ↑(Antichain.C6_3_4 a N) * dens₁ 𝔄 * MeasureTheory.volume (⋃ p ∈ 𝔄, ↑(𝓘 p))Lemma 6.3.4. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔄Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)}
      (h𝔄IsAntichain (fun x1 x2 ↦ x1 ≤ x2) 𝔄 :
        IsAntichainIsAntichain.{u_1} {α : Type u_1} (r : α → α → Prop) (s : Set α) : PropAn antichain is a set such that no two distinct elements are related.  (fun x1𝔓 X x2𝔓 X  x1𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. x2𝔓 X) 𝔄Set (𝔓 X))
      (ϑ↑(Set.range ⇑Q) : (Set.rangeSet.range.{u, u_1} {α : Type u} {ι : Sort u_1} (f : ι → α) : Set αRange of a function.
    
    This function is more flexible than `f '' univ`, as the image requires that the domain is in Type
    and not an arbitrary Sort.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X))) (N : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) :
      
          p𝔓 X 
            (Antichain.𝔄_auxAntichain.𝔄_aux.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔄 : Set (𝔓 X))
      (ϑ : Θ X) (N : ℕ) : Set (𝔓 X)Def 6.3.15.  𝔄Set (𝔓 X) (↑ϑ↑(Set.range ⇑Q))
                N).toFinsetSet.toFinset.{u_1} {α : Type u_1} (s : Set α) [Fintype ↑s] : Finset αConstruct a finset enumerating a set `s`, given a `Fintype` instance. ,
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. GSet X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (Antichain.C6_3_4Antichain.C6_3_4 (a N : ℕ) : NNRealThe constant appearing in Lemma 6.3.4.  a N) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  𝔄Set (𝔓 X) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
            (⋃ p𝔓 X  𝔄Set (𝔓 X), (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X))
    Lemma 6.3.4. 

Proof. Fix \mfa and N. Let \mathfrak{A}' be the set of \fp\in\mathfrak{A}_{\mfa,N} such that \scI(\fp)\cap G is not empty and s(\fp) > -S. Let \mathfrak{A}_{-S} be the set of \fp\in\mathfrak{A}_{\mfa,N} such that \scI(\fp)\cap G is not empty and s(\fp) = -S. Then we have \sum_{\fp\in\mathfrak{A}_{\mfa,N}}\mu(E(\fp)\cap G) = \sum_{\fp\in\mathfrak{A}'}\mu(E(\fp)\cap G) + \sum_{\fp\in\mathfrak{A}_{-S}}\mu(E(\fp)\cap G).

We start by estimating the contribution of \mathfrak{A}_{-S}. Let \mathcal{L}_{-S} be the collection of dyadic cubes \scI(\fp) with \fp \in \mathfrak{A}_{-S}. They all have scale -S, by definition of \mathcal{L}_{-S}, and hence they are pairwise disjoint by the dyadic property dyadicproperty. We write \sum_{\fp\in\mathfrak{A}_{-S}}\mu(E(\fp)\cap G) = \sum_{L \in \mathcal{L}_{-S}} \sum_{\fp\in\mathfrak{A}_{-S}, \scI(\fp) = L} \mu(E(\fp)\cap G), and using Lemma 1.79, we estimate \le 2^{a(N+5)} \dens_1(\mathfrak{A}) \sum_{L \in \mathcal{L}_{-S}} \mu(L) \le 2^{a(N+5)} \dens_1(\mathfrak{A}) \mu\left(\cup_{\fp\in\mathfrak{A}}I_{\fp}\right).

We turn to \mathfrak{A}'. Let \mathcal{L} be the collection of dyadic cubes I\in\mathcal{D} such that I \le \scI(\fp) for some \fp\in\mathfrak{A}' and such that \scI(\fp)\not \subset I for all \fp\in\mathfrak{A}'. By coverdyadic, for each \fp \in \mathfrak{A}' and each x\in \scI(\fp)\cap G, there is I\in \mathcal{D} with s(I)=-S and x\in I. By dyadicproperty, we have I\subset \scI(\fp). Since for all \fp' \in \mathfrak{A}' we have s(\fp') > -S, we have I \in \mathcal{L}. Hence \scI(\fp)\subset \bigcup\{I\in \mathcal{D}: s(I)=-S, I\subset \scI(\fp)\}\subset \bigcup \mathcal{L}. As each I\in \mathcal{L} satisfies I\subset \scI(\fp) for some \fp in \mathfrak{A'}, we conclude \bigcup\mathcal{L}=\bigcup_{\fp \in \mathfrak{A}'}\scI(\fp). Let \mathcal{L}^* be the set of maximal elements in \mathcal{L} with respect to set inclusion. By dyadicproperty, the elements in \mathcal{L}^* are pairwise disjoint and we have \bigcup\mathcal{L}^*=\bigcup_{\fp \in \mathfrak{A}'}\scI(\fp). Using the partition eqdecAprime into elements of \mathcal{L} in eqanti0, it suffices to show for each L\in \mathcal{L}^* \sum_{\fp\in\mathfrak{A}'}\mu(E(\fp)\cap G \cap L) \le 2^{101a^3+aN} \dens_1(\mathfrak{A})\mu(L).

Fix L\in \mathcal{L}^*. By definition of \mathcal{L}^*, there exists an element \fp'\in \mathfrak{A}' such that L\subset \scI(\fp'). Pick such an element \fp' in \mathfrak{A} with minimal \ps(\fp'). As \scI(\fp')\not \subset L by definition of L, we have with dyadicproperty that s(L)< \ps(\fp'). In particular s(L)<S, thus L \ne I_0 and hence by subsetmaxcube there exists a cube J \in \mathcal{D} with L \subsetneq J. By coverdyadic, there is an L'\in \mathcal{D} with s(L')=s(L)+1 and L \le L'. By dyadicproperty, we have L\subset L'.

We split the left-hand side of eqanti0 as \sum_{\fp\in\mathfrak{A}':\scI(\fp)=L'}\mu(E(\fp)\cap G\cap L) + \sum_{\fp\in\mathfrak{A}':\scI(\fp)\neq L'}\mu(E(\fp)\cap G\cap L).

We first estimate eqanti1 with Lemma 1.79 by \le \sum_{\fp\in\mathfrak{A}':\scI(\fp)=L'}\mu(E(\fp)\cap G\cap L')\le 2^{a(N+5)}\dens_1(\mathfrak{A})\mu(L').

We turn to eqanti2. Consider the element \fp'\in \mathfrak{A}' as above with L\subset \scI(\fp') and s(L)<\ps(\fp'). As L\subset L' and s(L')=s(L)+1, we conclude with the dyadic property that L'\subset \scI(\fp'). By maximality of L, we have L'\not\in \mathcal{L}. This together with the existence of the given \fp'\in \mathfrak{A} with L'\subset \scI(\fp') shows by definition of \mathcal{L} that there exists \fp''\in \mathfrak{A}' with \scI(\fp'')\subset L'.

If \scI(\fp'') = L', then we set \fp_{\mfa} = \fp'' and note that as \fp'' \in \mathfrak{A}_{\mfa,N} \mfa \in B(\fcc(\fp''), 2^{N+1}).

If \scI(\fp'') \ne L', then it follows that s(\fp'') < s(L'). By the covering property eq-dis-freq-cover, there exists a unique \fp_{\mfa} with \scI(\fp_{\mfa})=L' such that \mfa\in \fc(\fp_{\mfa}). We take this as the definition of \fp_\mfa in this case. Note that \mfa\in B(\fcc(\fp_{\mfa}), 1) so by Lemma 1.78, we conclude 2^{N+3}\fp'' \lesssim 2^{N+3}\fp_{\mfa}. This clearly also holds in the case \scI(\fp'') = L', since then \fp'' = \fp_\mfa. Furthermore, in both cases it also holds that \mfa\in B_{\fp_{\mfa}}(\fcc(\fp_{\mfa}), 2^{N+1}).

As \fp''\in \mathfrak{A}', we have by definition definedens1 of \dens_1 that \mu(E_2(2^{N+3}, \fp_{\mfa}))\le 2^{Na+3a}\dens_1(\mathfrak{A}) {\mu(L')}. Now let \fp be any tile in the summation set in eqanti2, that is, \fp\in \mathfrak{A}' and \scI(\fp)\neq L'. Then \scI(\fp)\cap L\neq \emptyset. It follows by the dyadic property dyadicproperty and the definition of L that L\subset \scI(\fp) and L\neq \scI(\fp). By dyadicproperty, we have s(L)<\ps(\fp) and thus s(L')\le \ps(\fp). By dyadicproperty again, we have L'\subset \scI(\fp). As L'\neq \scI(\fp), we conclude s(L)<\ps(\fp). By Lemma 1.80, we can thus estimate eqanti2 by \sum_{\fp\in\mathfrak{A}':\scI(\fp)\neq L'}\mu(E(\fp)\cap G\cap L') \le \mu (E_2(2^{N+3},\fp_{\mfa})).

With the decomposition in eqanti1 and eqanti2 and the estimates equanti1.5, eqanti-0.5, pmfadens we obtain the estimate \sum_{\fp\in\mathfrak{A}'}\mu(E(\fp)\cap G \cap L) \le (2^{a(N+5)}+2^{Na+3a})\dens_1(\mathfrak{A})\mu(L').

Using s(L')=s(L)+1 and D=2^{100a^2} and the squeezing property eq-vol-sp-cube and the doubling property doublingx 100a^2+4 times, we obtain \mu(L')\le 2^{100a^3+4a}\mu(L). Inserting in eqanti3.14, adding the estimate eq_minus_S and using a\ge 4 gives eqanti0. This completes the proof of the lemma.

We turn to the proof of Lemma 1.74.

Proof of Lemma 1.74. Using that \mathfrak{A} is the disjoint union of the \mathfrak{A}_{\mfa,N} with N\ge 0, we estimate the left-hand side eq-antichain-Lp with the triangle inequality by \le \sum_{N\ge 0} \left\|\sum_{\fp\in \mathfrak{A}_{\mfa,N}} 2^{-N/(2a^2+a^3)}\mathbf{1}_{E(\fp)} \mathbf{1}_G\right\|_{p}. We consider each individual term in this sum and estimate its p-th power. Using that for each x\in X by Lemma 1.69 there is at most one \fp\in \mathfrak{A} with x\in E(\fp), we have \left\|\sum_{\fp\in \mathfrak{A}_{\mfa,N}} 2^{-N/(2a^2+a^3)}\mathbf{1}_{E(\fp)} \mathbf{1}_G\right\|_{p}^p =\int\Big(\sum_{\fp\in \mathfrak{A}_{\mfa,N}}2^{-N/(2a^2+a^3)}\mathbf{1}_{E(\fp)\cap G}(x)\Big)^p\, d\mu(x) =\int\sum_{\fp\in\mathfrak{A}_{\mfa,N}}2^{-pN/(2a^2+a^3)}\mathbf{1}_{E(\fp)\cap G}(x)\, d\mu(x) = 2^{-pN/(2a^2+a^3)} \sum_{\fp\in\mathfrak{A}_{\mfa,N}}\mu(E(\fp)\cap G).

Using Lemma 1.81, we estimate the last display by \le 2^{-pN/(2a^2+a^3)+101a^3+Na}\dens_1(\mathfrak{A})\mu\left(\cup_{\fp\in\mathfrak{A}}\scI(\fp)\right). Using that a\ge 4 and since p = 4a^4, we have pN/(2a^2+a^3)\ge 4a^4N/(3a^3) \ge Na+N. Hence we have for eqanti21 the upper bound \le 2^{101a^3-N}\dens_1(\mathfrak{A})\mu\left(\cup_{\fp\in\mathfrak{A}}\scI(\fp)\right).

Taking the p-th root and summing over N\ge 0 gives for eqanti23 the upper bound \le \left(\sum_{N\ge 0} 2^{-N/p}\right)2^{101a^3/p}\dens_1(\mathfrak{A})^{{\frac{1}{p}}}\mu\left(\cup_{\fp\in\mathfrak{A}}\scI(\fp)\right)^{{\frac{1}{p}}} = \left(1-2^{-1/p}\right)^{-1} 2^{101a^3/p} \dens_1(\mathfrak{A})^{\frac 1p}\mu\left(\cup_{\fp\in\mathfrak{A}}\scI(\fp)\right)^{\frac 1p}. Using that p = 4a^4 and a \ge 4, this proves the lemma.

1.5.10. Proof of the Forest Operator Proposition🔗

1.5.11. The pointwise tree estimate🔗

Fix a forest (\fU, \fT). The main result of this subsection is Lemma 1.84, we begin this section with some definitions necessary to state the lemma.

For \fu \in \fU and x\in X, we define \sigma (\fu, x):=\{\ps(\fp):\fp\in \fT(\fu), x\in E(\fp)\}. This is a subset of \mathbb{Z} \cap [-S, S], so has a minimum and a maximum. We set \overline{\sigma} (\fu, x) := \max \sigma(\fT(\fu), x) \underline{\sigma} (\fu, x) := \min\sigma(\fT(\fu), x).

Lemma1.82
L∃∀Nused by 1

For each \fu \in \fU, we have \sigma(\fu, x) = \mathbb{Z} \cap [\underline{\sigma} (\fu, x), \overline{\sigma} (\fu, x)].

Lean code for Lemma1.821 theorem
  • theorem TileStructure.Forest.convex_scales.{u_1}TileStructure.Forest.convex_scales.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X} {x : X} (hu : u ∈ t) : (↑(t.σ u x)).OrdConnectedLemma 7.1.1, freely translated.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX : XType u_1}
      (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) : (↑(tTileStructure.Forest X n.σTileStructure.Forest.σ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (x : X) : Finset ℤThe definition `σ(u, x)` given in Section 7.1.
    We may assume `u ∈ t` whenever proving things about this definition.  u𝔓 X xX)).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    theorem TileStructure.Forest.convex_scales.{u_1}TileStructure.Forest.convex_scales.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X} {x : X} (hu : u ∈ t) : (↑(t.σ u x)).OrdConnectedLemma 7.1.1, freely translated. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX : XType u_1} (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
      (↑(tTileStructure.Forest X n.σTileStructure.Forest.σ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (x : X) : Finset ℤThe definition `σ(u, x)` given in Section 7.1.
    We may assume `u ∈ t` whenever proving things about this definition.  u𝔓 X xX)).OrdConnectedSet.OrdConnected.{u_1} {α : Type u_1} [Preorder α] (s : Set α) : PropWe say that a set `s : Set α` is `OrdConnected` if for all `x y ∈ s` it includes the
    interval `[[x, y]]`. If `α` is a `DenselyOrdered` `ConditionallyCompleteLinearOrder` with
    the `OrderTopology`, then this condition is equivalent to `IsPreconnected s`. If `α` is a
    `LinearOrderedField`, then this condition is also equivalent to `Convex α s`. 
    Lemma 7.1.1, freely translated. 

Proof. Let s \in \mathbb{Z} with \underline{\sigma} (\fu, x) \le s \le \overline{\sigma} (\fu, x). By definition of \sigma, there exists \fp \in \fT(\fu) with \ps(\fp) = \underline{\sigma} (\fu, x) and x \in E(\fp), and there exists \fp'' \in \fT(\fu) with \ps(\fp'') = \overline{\sigma} (\fu, x) and x \in E(\fp'') \subset \scI(\fp''). By property coverdyadic of the dyadic grid, there exists a cube I \in \mathcal{D} of scale s with x \in I. By property eq-dis-freq-cover, there exists a tile \fp' \in \fP(I) with \tQ(x) \in \fc(\fp'). By the dyadic property dyadicproperty we have \scI(\fp) \subset \scI(\fp') \subset \scI(\fp''), and by eq-freq-dyadic, we have \fc(\fp'') \subset \fc(\fp') \subset \fc(\fp). Thus \fp \le \fp' \le\fp'', which gives with the convexity property forest2 of \fT(\fu) that \fp' \in \fT(\fu), so s \in \sigma(\fu, x).

For a nonempty collection of tiles \mathfrak{S} \subset \fP we define \mathcal{J}_0(\mathfrak{S}) to be the collection of all dyadic cubes J \in \mathcal{D} such that s(J) = -S or \scI(\fp) \not\subset B(c(J), 100D^{s(J) + 1}) for all \fp \in \mathfrak{S}. We define \mathcal{J}(\mathfrak{S}) to be the collection of inclusion maximal cubes in \mathcal{J}_0(\mathfrak{S}).

We further define \mathcal{L}_0(\mathfrak{S}) to be the collection of dyadic cubes L \in \mathcal{D} such that s(L) = -S, or there exists \fp \in \mathfrak{S} with L \subset \scI(\fp) and there exists no \fp \in \mathfrak{S} with \scI(\fp) \subset L. We define \mathcal{L}(\mathfrak{S}) to be the collection of inclusion maximal cubes in \mathcal{L}_0(\mathfrak{S}).

Lemma1.83
L∃∀N
Used by 3
Hover a use site to preview it.

For each \mathfrak{S} \subset \fP, we have \bigcup_{I \in \mathcal{D}} I = \dot{\bigcup_{J \in \mathcal{J}(\mathfrak{S})}} J and \bigcup_{I \in \mathcal{D}} I = \dot{\bigcup_{L \in \mathcal{L}(\mathfrak{S})}} L.

Lean code for Lemma1.834 theorems
  • theorem TileStructure.Forest.biUnion_𝓙.{u_1}TileStructure.Forest.biUnion_𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {𝔖 : Set (𝔓 X)} : ⋃ J ∈ TileStructure.Forest.𝓙 𝔖, ↑J = ⋃ I, ↑IPart of Lemma 7.1.2  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔖Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} :  JGrid X  TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  𝔖Set (𝔓 X), JGrid X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.  IGrid X, IGrid X
    theorem TileStructure.Forest.biUnion_𝓙.{u_1}TileStructure.Forest.biUnion_𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {𝔖 : Set (𝔓 X)} : ⋃ J ∈ TileStructure.Forest.𝓙 𝔖, ↑J = ⋃ I, ↑IPart of Lemma 7.1.2 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔖Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} :
       JGrid X  TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  𝔖Set (𝔓 X), JGrid X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
         IGrid X, IGrid X
    Part of Lemma 7.1.2 
  • theorem TileStructure.Forest.pairwiseDisjoint_𝓙.{u_1}TileStructure.Forest.pairwiseDisjoint_𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔖 : Set (𝔓 X)} :
      (TileStructure.Forest.𝓙 𝔖).PairwiseDisjoint fun I ↦ ↑I {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔖Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} :
      (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  𝔖Set (𝔓 X)).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely.  fun IGrid X  IGrid X
    theorem TileStructure.Forest.pairwiseDisjoint_𝓙.{u_1}TileStructure.Forest.pairwiseDisjoint_𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔖 : Set (𝔓 X)} :
      (TileStructure.Forest.𝓙 𝔖).PairwiseDisjoint fun I ↦ ↑I
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔖Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} :
      (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2 
            𝔖Set (𝔓 X)).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely. 
        fun IGrid X  IGrid X
  • theorem TileStructure.Forest.biUnion_𝓛.{u_1}TileStructure.Forest.biUnion_𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {𝔖 : Set (𝔓 X)} : ⋃ J ∈ TileStructure.Forest.𝓛 𝔖, ↑J = ⋃ I, ↑IPart of Lemma 7.1.2  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔖Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} :  JGrid X  TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2  𝔖Set (𝔓 X), JGrid X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.  IGrid X, IGrid X
    theorem TileStructure.Forest.biUnion_𝓛.{u_1}TileStructure.Forest.biUnion_𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {𝔖 : Set (𝔓 X)} : ⋃ J ∈ TileStructure.Forest.𝓛 𝔖, ↑J = ⋃ I, ↑IPart of Lemma 7.1.2 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔖Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} :
       JGrid X  TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2  𝔖Set (𝔓 X), JGrid X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
         IGrid X, IGrid X
    Part of Lemma 7.1.2 
  • theorem TileStructure.Forest.pairwiseDisjoint_𝓛.{u_1}TileStructure.Forest.pairwiseDisjoint_𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔖 : Set (𝔓 X)} :
      (TileStructure.Forest.𝓛 𝔖).PairwiseDisjoint fun I ↦ ↑IPart of Lemma 7.1.2  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔖Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} :
      (TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2  𝔖Set (𝔓 X)).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely.  fun IGrid X  IGrid X
    theorem TileStructure.Forest.pairwiseDisjoint_𝓛.{u_1}TileStructure.Forest.pairwiseDisjoint_𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {𝔖 : Set (𝔓 X)} :
      (TileStructure.Forest.𝓛 𝔖).PairwiseDisjoint fun I ↦ ↑IPart of Lemma 7.1.2 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {𝔖Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1)} :
      (TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2 
            𝔖Set (𝔓 X)).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely. 
        fun IGrid X  IGrid X
    Part of Lemma 7.1.2 

Proof. Since \mathcal{J}(\mathfrak{S}) is the set of inclusion maximal cubes in \mathcal{J}_0(\mathfrak{S}), cubes in \mathcal{J}(\mathfrak{S}) are pairwise disjoint by dyadicproperty. The same applies to \mathcal{L}(\mathfrak{S}).

If x \in \bigcup_{I \in \mathcal{D}} I, then there exists by coverdyadic a cube I \in \mathcal{D} with x \in I and s(I) = -S. Then I \in \mathcal{J}_0(\mathfrak{S}). There exists an inclusion maximal cube in \mathcal{J}_0(\mathfrak{S}) containing I. This cube contains x and is contained in \mathcal{J}(\mathfrak{S}). This shows one inclusion in eq-J-partition, the other one follows from \mathcal{J}(\mathfrak{S}) \subset \mathcal{D}.

The proof of the two inclusions in eq-L-partition is similar.

For a finite collection of pairwise disjoint cubes \mathcal{C}, define the projection operator P_{\mathcal{C}}f(x) :=\sum_{J\in\mathcal{C}}\mathbf{1}_J(x) \frac{1}{\mu(J)}\int_J f(y) \, \mathrm{d}\mu(y).

Given a scale -S \le s\le S and a point x \in \bigcup_{I\in \mathcal{D}, s(I) = s} I, there exists a unique cube in \mathcal{D} of scale s containing x by coverdyadic. We denote it by I_s(x). Define for \mfa \in \Mf the nontangential maximal operator T_{\mathcal{N}}^\mfa f(x) := \sup_{-S \le s_1 < S} \sup_{x' \in I_{s_1}(x)} \sup_{\substack{s_1 \le s_2 \le S\\ D^{s_2-1} \le R_Q(\mfa, x')}} \left| \sum_{s = s_1}^{s_2} \int K_s(x',y) f(y) \, \mathrm{d}\mu(y) \right|.

Define for each \fu \in \fU the auxiliary operator S_{1,\fu}f(x) :=\sum_{I\in\mathcal{D}} \mathbf{1}_{I}(x) \sum_{\substack{J\in \mathcal{J}(\fT(\fu))\\ J\subset B(c(I), 16 D^{s(I)})\\ s(J) \le s(I)}} \frac{D^{(s(J) - s(I))/a}}{\mu(B(c(I), 16D^{s(I)}))}\int_J |f(y)| \, \mathrm{d}\mu(y).

Define also the collection of balls \mathcal{B} = \{B(c(I), 2^s D^{s(I)+t}) \ : \ I \in \mathcal{D}\,, 0 \le s \le S + 5\,, 0 \le t \le 2S+3\}.

The following pointwise estimate for operators associated to sets \fT(\fu) is the main result of this subsection.

Lemma1.84
L∃∀Nused by 1

Uses Lemma 1.85, Lemma 1.86, and Lemma 1.87. Let \fu \in \fU and L \in \mathcal{L}(\fT(\fu)). Let x, x' \in L. Then for all bounded functions f with bounded support \left|\sum_{\fp \in \fT(\fu)} T_{\fp}[ e(-\fcc(\fu))f](x)\right| \leq 2^{129a^3}(M_{\mathcal{B},1}+S_{1,\fu})P_{\mathcal{J}(\fT(\fu))}|f|(x')+|T_{\mathcal{N}}^{\fcc(\fu)} P_{\mathcal{J}(\fT(\fu))}f(x')|.

Lean code for Lemma1.841 theorem
  • theorem TileStructure.Forest.pointwise_tree_estimate.{u_1}TileStructure.Forest.pointwise_tree_estimate.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {x x' : X} {f : X → ℂ} {L : Grid X} (hu : u ∈ t) (hL : L ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u)) (hx : x ∈ L)
      (hx' : x' ∈ L) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      ‖carlesonSum ((fun x ↦ t.𝔗 x) u) (fun y ↦ Complex.exp (Complex.I * -↑((𝒬 u) y)) * f y) x‖ₑ ≤
        ↑(TileStructure.Forest.C7_1_3 a) *
            (MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑
                (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) fun x ↦ ‖f x‖) x' +
              t.boundaryOperator u
                (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) fun x ↦ ↑‖f x‖) x') +
          TileStructure.Forest.nontangentialMaximalFunction (𝒬 u)
            (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) f) x'Lemma 7.1.3.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1}
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {LGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hLL ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u) : LGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) (hxx ∈ L : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X)
      (hx'x' ∈ L : x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)
            (fun yX  Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series  (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. -Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator).((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X) yX))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. fX → ℂ yX) xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_1_3TileStructure.Forest.C7_1_3 (a : ℕ) : NNRealThe constant used in `pointwise_tree_estimate`.
    Has value `2 ^ (129 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
                TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑.  TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑. 
                (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
                  (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) fun xX 
                  Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
                x'X +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
              tTileStructure.Forest X n.boundaryOperatorTileStructure.Forest.boundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (f : X → ℂ) (x : X) : ENNRealThe operator `S_{1,𝔲} f(x)`, given in (7.1.4).  u𝔓 X
                (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
                  (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) fun xX 
                  Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
                x'X)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          TileStructure.Forest.nontangentialMaximalFunctionTileStructure.Forest.nontangentialMaximalFunction.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (θ : Θ X) (f : X → ℂ) (x : X) : ENNRealThe definition `T_𝓝^θ f(x)`, given in (7.1.3).
    For convenience, the suprema are written a bit differently than in the blueprint
    (avoiding `cubeOf`), but this should be equivalent.
    This is `0` if `x` doesn't lie in a cube.  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X)
            (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
              (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) fX → ℂ)
            x'X
    theorem TileStructure.Forest.pointwise_tree_estimate.{u_1}TileStructure.Forest.pointwise_tree_estimate.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {x x' : X} {f : X → ℂ} {L : Grid X} (hu : u ∈ t) (hL : L ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u)) (hx : x ∈ L)
      (hx' : x' ∈ L) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      ‖carlesonSum ((fun x ↦ t.𝔗 x) u) (fun y ↦ Complex.exp (Complex.I * -↑((𝒬 u) y)) * f y) x‖ₑ ≤
        ↑(TileStructure.Forest.C7_1_3 a) *
            (MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑
                (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) fun x ↦ ‖f x‖) x' +
              t.boundaryOperator u
                (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) fun x ↦ ↑‖f x‖) x') +
          TileStructure.Forest.nontangentialMaximalFunction (𝒬 u)
            (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) f) x'Lemma 7.1.3. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {LGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hLL ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u) :
        LGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2 
            ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
      (hxx ∈ L : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X) (hx'x' ∈ L : x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)
            (fun yX 
              Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series 
                  (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. -Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator).((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X) yX))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                fX → ℂ yX)
            xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_1_3TileStructure.Forest.C7_1_3 (a : ℕ) : NNRealThe constant used in `pointwise_tree_estimate`.
    Has value `2 ^ (129 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
                TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
                TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑. 
                TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑. 
                (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
                  (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2 
                    ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
                  fun xX  Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
                x'X +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
              tTileStructure.Forest X n.boundaryOperatorTileStructure.Forest.boundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (f : X → ℂ) (x : X) : ENNRealThe operator `S_{1,𝔲} f(x)`, given in (7.1.4).  u𝔓 X
                (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
                  (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2 
                    ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
                  fun xX  Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
                x'X)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          TileStructure.Forest.nontangentialMaximalFunctionTileStructure.Forest.nontangentialMaximalFunction.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (θ : Θ X) (f : X → ℂ) (x : X) : ENNRealThe definition `T_𝓝^θ f(x)`, given in (7.1.3).
    For convenience, the suprema are written a bit differently than in the blueprint
    (avoiding `cubeOf`), but this should be equivalent.
    This is `0` if `x` doesn't lie in a cube. 
            (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X)
            (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
              (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2 
                ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
              fX → ℂ)
            x'X
    Lemma 7.1.3. 

Proof. By definetp, if T_{\fp}[ e(-\fcc(\fu))f](x) \ne 0, then x \in E(\fp). Combining this with |e(\fcc(\fu)(x))| = 1, we obtain |\sum_{\fp \in \fT(\fu)} T_{\fp}[ e(-\fcc(\fu))f](x)| = \Bigg| \sum_{s \in \sigma(\fu, x)} \int e(-\fcc(\fu)(y) + \tQ(x)(y) + \fcc(\fu)(x) -\tQ(x)(x))\times K_s(x,y)f(y) \, \mathrm{d}\mu(y) \Bigg|. Using the triangle inequality, we bound this by the sum of three terms: \le \Bigg| \sum_{s \in \sigma(\fu, x)} \int (e(-\fcc(\fu)(y) + \tQ(x)(y) + \fcc(\fu)(x) -\tQ(x)(x))-1)\times K_s(x,y)f(y) \, \mathrm{d}\mu(y) \Bigg| + \Bigg| \sum_{s \in \sigma(\fu, x)} \int K_s(x,y) P_{\mathcal{J}(\fT(\fu))} f(y) \, \mathrm{d}\mu(y) \Bigg| + \Bigg| \sum_{s \in \sigma(\fu, x)} \int K_s(x,y) (f(y) - P_{\mathcal{J}(\fT(\fu))} f(y)) \, \mathrm{d}\mu(y) \Bigg|. The proof is completed using the bounds for these three terms proven respectively in Lemma 1.85, Lemma 1.86 and Lemma 1.87.

Lemma1.85
L∃∀Nused by 1

Uses Lemma 1.82 and Lemma 1.12. For all \fu \in \fU, all L \in \mathcal{L}(\fT(\fu)), all x, x' \in L and all bounded f with bounded support, we have the estimate eq-term-A: 10 \cdot 2^{104a^3} M_{\mathcal{B}, 1}P_{\mathcal{J}(\fT(\fu))}|f|(x').

Lean code for Lemma1.851 theorem
  • theorem TileStructure.Forest.first_tree_pointwise.{u_1}TileStructure.Forest.first_tree_pointwise.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {x x' : X} {f : X → ℂ} {L : Grid X} (hu : u ∈ t) (hL : L ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u)) (hx : x ∈ L)
      (hx' : x' ∈ L) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      ‖∑ i ∈ t.σ u x,
            ∫ (y : X),
              (Complex.exp (Complex.I * (-↑((𝒬 u) y) + ↑((Q x) y) + ↑((𝒬 u) x) - ↑((Q x) x))) - 1) * Ks i x y * f y‖ₑ ≤
        ↑(TileStructure.Forest.C7_1_4 a) *
          MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑
            (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) fun x ↦ ‖f x‖) x'Lemma 7.1.4  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1}
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {LGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hLL ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u) : LGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) (hxx ∈ L : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X)
      (hx'x' ∈ L : x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  i  tTileStructure.Forest X n.σTileStructure.Forest.σ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (x : X) : Finset ℤThe definition `σ(u, x)` given in Section 7.1.
    We may assume `u ∈ t` whenever proving things about this definition.  u𝔓 X xX,
            MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (yX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
              (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series 
                      (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                        (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).-Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator).((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X) yX) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. ((QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) xX) yX) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X) xX) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
                          ((QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) xX) xX))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
                    1)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                  KsKs.{u_1} {X : Type u_1} {a : ℕ} {K : X → X → ℂ} [PseudoMetricSpace X] [KernelProofData a K] (s : ℤ) (x y : X) : ℂK_s in the blueprint  i xX yX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                fX → ℂ yX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_1_4TileStructure.Forest.C7_1_4 (a : ℕ) : NNRealThe constant used in `first_tree_pointwise`.
    Has value `10 * 2 ^ (104 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
            TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑.  TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑. 
            (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
              (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) fun xX  Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
            x'X
    theorem TileStructure.Forest.first_tree_pointwise.{u_1}TileStructure.Forest.first_tree_pointwise.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {x x' : X} {f : X → ℂ} {L : Grid X} (hu : u ∈ t) (hL : L ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u)) (hx : x ∈ L)
      (hx' : x' ∈ L) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      ‖∑ i ∈ t.σ u x,
            ∫ (y : X),
              (Complex.exp (Complex.I * (-↑((𝒬 u) y) + ↑((Q x) y) + ↑((𝒬 u) x) - ↑((Q x) x))) - 1) * Ks i x y * f y‖ₑ ≤
        ↑(TileStructure.Forest.C7_1_4 a) *
          MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑
            (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) fun x ↦ ‖f x‖) x'Lemma 7.1.4 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {LGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hLL ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u) :
        LGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2 
            ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
      (hxx ∈ L : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X) (hx'x' ∈ L : x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  i  tTileStructure.Forest X n.σTileStructure.Forest.σ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (x : X) : Finset ℤThe definition `σ(u, x)` given in Section 7.1.
    We may assume `u ∈ t` whenever proving things about this definition.  u𝔓 X xX,
            MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (yX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
              (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series 
                      (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                        (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).-Neg.neg.{u} {α : Type u} [self : Neg α] : α → α`-a` computes the negative or opposite of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `neg` (when used as a unary operator).((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X) yX) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
                              ((QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) xX) yX) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
                            ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X) xX) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
                          ((QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) xX) xX))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
                    1)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                  KsKs.{u_1} {X : Type u_1} {a : ℕ} {K : X → X → ℂ} [PseudoMetricSpace X] [KernelProofData a K] (s : ℤ) (x y : X) : ℂK_s in the blueprint  i xX yX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                fX → ℂ yX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_1_4TileStructure.Forest.C7_1_4 (a : ℕ) : NNRealThe constant used in `first_tree_pointwise`.
    Has value `10 * 2 ^ (104 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
            TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
            TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑. 
            TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑. 
            (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
              (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2 
                ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
              fun xX  Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
            x'X
    Lemma 7.1.4 

Proof. Let s \in \sigma(\fu,x). If x, y \in X are such that K_s(x,y)\neq 0, then, by supp-Ks, we have \rho(x,y)\leq 1/2 D^s. By 1-Lipschitz continuity of the function t \mapsto \exp(it) = e(t) and the property osccontrol of the metrics d_B, it follows that |e(-\fcc(\fu)(y)+\tQ(x)(y)+\fcc(\fu)(x)-\tQ(x)(x))-1| \leq d_{B(x, 1/2 D^{s})}(\fcc(\fu), \tQ(x)). Let \fp_s \in \fT(\fu) be a tile with \ps(\fp_s) = s and x \in E(\fp_s), and let \fp' be a tile with \ps(\fp') = \overline{\sigma}(\fu, x) and x \in E(\fp'). Using the monotonicity property monotonedb, the doubling property firstdb repeatedly, the definition of d_{\fp} and Lemma 1.11, we can bound the previous display by d_{B(x, 4 D^{s})}(\fcc(\fu), \tQ(x)) \leq 2^{4a} d_{\fp_s}(\fcc(\fu), \tQ(x)) \le 2^{4a} 2^{s - \overline{\sigma}(\fu, x)} d_{\fp'}(\fcc(\fu), \tQ(x)). Since \fcc(\fu) \in B_{\fp'}(\fcc(\fp'), 4) by forest1 and \tQ(x) \in \Omega(\fp') \subset B_{\fp'}(\fcc(\fp'), 1) by eq-freq-comp-ball, this is estimated by \le 5 \cdot 2^{4a} 2^{s - \overline{\sigma}(\fu, x)}.

Using eq-Ks-size, it follows that eq-term-A is bounded by 5\cdot 2^{103a^3} \sum_{s\in\sigma(x)}2^{s - \overline{\sigma}(\fu, x)} \frac{1}{\mu(B(x,D^s))}\int_{B(x,0.5D^{s})}|f(y)|\,\mathrm{d}\mu(y). By eq-J-partition, the collection \mathcal{J} is a partition of \bigcup_{I \in \mathcal{D}} I, so this is estimated by 5\cdot 2^{103a^3} \sum_{s\in\sigma(x)}2^{s - \overline{\sigma}(\fu, x)} \frac{1}{\mu(B(x,D^s))}\sum_{\substack{J \in \mathcal{J}(\fT(\fu))\\J \cap B(x, 0.5D^s) \ne \emptyset} }\int_{J}|f(y)|\,\mathrm{d}\mu(y). This expression does not change if we replace |f| by P_{\mathcal{J}(\fT(\fu))}|f|.

Let J \in \mathcal{J}(\fT(\fu)) with B(x, 0.5 D^s) \cap J \ne \emptyset. By the triangle inequality and since x \in E(\fp_s) \subset B(\pc(\fp_s), 4D^{s}), it follows that B(\pc(\fp_s), 4.5D^s) \cap J \ne \emptyset. If s(J) \ge s and s(J) > -S, then it follows from the triangle inequality, eq-vol-sp-cube and defineD that \scI(\fp_s) \subset B(c(J), 100 D^{s(J)+1}), contradicting J \in \mathcal{J}(\mathfrak{T}(\fu)). Thus s(J) \le s - 1 or s(J) = -S. If s(J) = -S and s(J) > s - 1, then s = -S. Thus we always have s(J) \le s. It then follows from the triangle inequality and eq-vol-sp-cube that J \subset B(\pc(\fp_s), 16 D^s).

Thus we can continue our chain of estimates with 5\cdot 2^{103a^3} \sum_{s\in\sigma(x)}2^{s - \overline{\sigma}(\fu, x)} \frac{1}{\mu(B(x,D^s))}\int_{B(\pc(\fp_s),16 D^s)}P_{\mathcal{J}(\fT(\fu))}|f(y)|\,\mathrm{d}\mu(y). We have B(\pc(\fp_s), 16D^s)) \subset B(x, 32D^s), by eq-vol-sp-cube and the triangle inequality, since x \in \scI(\fp_s). Combining this with the doubling property doublingx, we obtain \mu(B(\pc(\fp_s), 16D^s)) \le 2^{5a} \mu(B(x, D^s)). Since a \ge 4, it follows that eq-term-A is bounded by 5\cdot 2^{103a^3} \sum_{s\in\sigma(x)}2^{s - \overline{\sigma}(\fu, x)} \frac{1}{\mu(B(\pc(\fp_s),16D^s))}\int_{B(\pc(\fp_s),16D^s)}P_{\mathcal{J}(\fT(\fu))}|f(y)|\,\mathrm{d}\mu(y).

Since L \in \mathcal{L}(\fT(\fu)) and x\in L \cap \scI(\fp_s), we have s(L) \le \ps(\fp_s). It follows by dyadicproperty that L \subset \scI(\fp_s), in particular x' \in \scI(\fp_s) \subset B(\pc(\fp_s), 16D^s). Thus \le 5\cdot 2^{104a^3} \sum_{s\in\sigma(x)}2^{s - \overline{\sigma}(\fu, x)} M_{\mathcal{B}, 1}P_{\mathcal{J}(\fT(\fu))}|f|(x') \le 10\cdot 2^{104a^3} M_{\mathcal{B}, 1}P_{\mathcal{J}(\fT(\fu))}|f|(x'). This completes the estimate for term eq-term-A.

Lemma1.86
L∃∀Nused by 1

For all \fu \in \fU, all L \in \mathcal{L}(\fT(\fu)), all x, x' \in L and all bounded f with bounded support, we have \Bigg| \sum_{s \in \sigma(\fu, x)} \int K_s(x,y) P_{\mathcal{J}(\fT(\fu))} f(y) \, \mathrm{d}\mu(y) \Bigg| \le T_{\mathcal{N}}^{\fcc(\fu)} P_{\mathcal{J}(\fT(\fu))} f(x').

Lean code for Lemma1.861 theorem
  • theorem TileStructure.Forest.second_tree_pointwise.{u_1}TileStructure.Forest.second_tree_pointwise.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {x x' : X} {f : X → ℂ} {L : Grid X} (hu : u ∈ t) (hL : L ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u)) (hx : x ∈ L)
      (hx' : x' ∈ L) :
      ‖∑ i ∈ t.σ u x,
            ∫ (y : X), Ks i x y * TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) f y‖ₑ ≤
        TileStructure.Forest.nontangentialMaximalFunction (𝒬 u)
          (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) f) x'Lemma 7.1.5  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1}
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {LGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hLL ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u) : LGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) (hxx ∈ L : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X)
      (hx'x' ∈ L : x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  i  tTileStructure.Forest X n.σTileStructure.Forest.σ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (x : X) : Finset ℤThe definition `σ(u, x)` given in Section 7.1.
    We may assume `u ∈ t` whenever proving things about this definition.  u𝔓 X xX,
            MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (yX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
              KsKs.{u_1} {X : Type u_1} {a : ℕ} {K : X → X → ℂ} [PseudoMetricSpace X] [KernelProofData a K] (s : ℤ) (x y : X) : ℂK_s in the blueprint  i xX yX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
                  (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) fX → ℂ yX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        TileStructure.Forest.nontangentialMaximalFunctionTileStructure.Forest.nontangentialMaximalFunction.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (θ : Θ X) (f : X → ℂ) (x : X) : ENNRealThe definition `T_𝓝^θ f(x)`, given in (7.1.3).
    For convenience, the suprema are written a bit differently than in the blueprint
    (avoiding `cubeOf`), but this should be equivalent.
    This is `0` if `x` doesn't lie in a cube.  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X)
          (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
            (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) fX → ℂ)
          x'X
    theorem TileStructure.Forest.second_tree_pointwise.{u_1}TileStructure.Forest.second_tree_pointwise.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {x x' : X} {f : X → ℂ} {L : Grid X} (hu : u ∈ t) (hL : L ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u)) (hx : x ∈ L)
      (hx' : x' ∈ L) :
      ‖∑ i ∈ t.σ u x,
            ∫ (y : X), Ks i x y * TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) f y‖ₑ ≤
        TileStructure.Forest.nontangentialMaximalFunction (𝒬 u)
          (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) f) x'Lemma 7.1.5 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {LGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hLL ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u) :
        LGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2 
            ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
      (hxx ∈ L : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X) (hx'x' ∈ L : x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  i  tTileStructure.Forest X n.σTileStructure.Forest.σ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (x : X) : Finset ℤThe definition `σ(u, x)` given in Section 7.1.
    We may assume `u ∈ t` whenever proving things about this definition.  u𝔓 X xX,
            MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (yX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
              KsKs.{u_1} {X : Type u_1} {a : ℕ} {K : X → X → ℂ} [PseudoMetricSpace X] [KernelProofData a K] (s : ℤ) (x y : X) : ℂK_s in the blueprint  i xX yX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
                  (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2 
                    ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
                  fX → ℂ yX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        TileStructure.Forest.nontangentialMaximalFunctionTileStructure.Forest.nontangentialMaximalFunction.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (θ : Θ X) (f : X → ℂ) (x : X) : ENNRealThe definition `T_𝓝^θ f(x)`, given in (7.1.3).
    For convenience, the suprema are written a bit differently than in the blueprint
    (avoiding `cubeOf`), but this should be equivalent.
    This is `0` if `x` doesn't lie in a cube. 
          (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X)
          (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
            (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2 
              ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
            fX → ℂ)
          x'X
    Lemma 7.1.5 

Proof. Let s_1 = \underline{\sigma}(\fu, x). By definition, there exists a tile \fp \in \fT(\fu) with \ps(\fp) = s_1 and x \in E(\fp). Then x \in \scI(\fp) \cap L. By dyadicproperty and the definition of \mathcal{L}(\fT(\fu)), it follows that L \subset \scI(\fp), so x \in I_{s_1}(x').

Next, let s_2 = \overline{\sigma}(\fu, x) and let \fp' \in \fT(\fu) with \ps(\fp') = s_2 and x \in E(\fp'). Since \fp' \in \fT(\fu), we have 4\fp' \lesssim \fu. Since \tQ(x) \in \fc(\fp'), it follows that d_{\fp}(\fcc(\fu), \tQ(x)) \le 5. Applying the doubling property firstdb five times, we obtain d_{B(c(\fp), 8D^{s_2})}(\fcc(\fu), \tQ(x)) \le 5 \cdot 2^{5a}. By the triangle inequality, we have B(x, D^{s_2}) \subset B(c(\fp), 8 D^{s_2}), so by monotonedb d_{B(x, D^{s_2})}(\fcc(\fu), \tQ(x)) \le 5 \cdot 2^{5a}. Finally, by applying seconddb 100a times, we obtain d_{B(x, D^{s_2-1})}(\fcc(\fu), \tQ(x)) \le 5 \cdot 2^{-95a} < 1. Consequently, D^{s_2 - 1} < R_Q(\fcc(\fu), x). The lemma now follows from the definition of T_{\mathcal{N}}.

Lemma1.87
L∃∀Nused by 1

For all \fu \in \fU, all L \in \mathcal{L}(\fT(\fu)), all x, x' \in L and all bounded f with bounded support, we have \Bigg| \sum_{s \in \sigma(\fu, x)} \int K_s(x,y) (f(y) - P_{\mathcal{J}(\fT(\fu))} f(y)) \, \mathrm{d}\mu(y) \Bigg| \le 2^{128a^3} S_{1,\fu} P_{\mathcal{J}(\fT(\fu))}|f|(x').

Lean code for Lemma1.871 theorem
  • theorem TileStructure.Forest.third_tree_pointwise.{u_1}TileStructure.Forest.third_tree_pointwise.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {x x' : X} {f : X → ℂ} {L : Grid X} (hu : u ∈ t) (hL : L ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u)) (hx : x ∈ L)
      (hx' : x' ∈ L) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      ‖∑ i ∈ t.σ u x,
            ∫ (y : X),
              Ks i x y * (f y - TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) f y)‖ₑ ≤
        ↑(TileStructure.Forest.C7_1_6 a) *
          t.boundaryOperator u
            (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) fun x ↦ ↑‖f x‖) x'Lemma 7.1.6  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1}
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {LGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hLL ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u) : LGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) (hxx ∈ L : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X)
      (hx'x' ∈ L : x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  i  tTileStructure.Forest X n.σTileStructure.Forest.σ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (x : X) : Finset ℤThe definition `σ(u, x)` given in Section 7.1.
    We may assume `u ∈ t` whenever proving things about this definition.  u𝔓 X xX,
            MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (yX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
              KsKs.{u_1} {X : Type u_1} {a : ℕ} {K : X → X → ℂ} [PseudoMetricSpace X] [KernelProofData a K] (s : ℤ) (x y : X) : ℂK_s in the blueprint  i xX yX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).fX → ℂ yX -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
                  TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
                    (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) fX → ℂ yX)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_1_6TileStructure.Forest.C7_1_6 (a : ℕ) : NNRealThe constant used in `third_tree_pointwise`.
    Has value `2 ^ (128 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          tTileStructure.Forest X n.boundaryOperatorTileStructure.Forest.boundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (f : X → ℂ) (x : X) : ENNRealThe operator `S_{1,𝔲} f(x)`, given in (7.1.4).  u𝔓 X
            (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
              (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) fun xX  Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
            x'X
    theorem TileStructure.Forest.third_tree_pointwise.{u_1}TileStructure.Forest.third_tree_pointwise.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {x x' : X} {f : X → ℂ} {L : Grid X} (hu : u ∈ t) (hL : L ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u)) (hx : x ∈ L)
      (hx' : x' ∈ L) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      ‖∑ i ∈ t.σ u x,
            ∫ (y : X),
              Ks i x y * (f y - TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) f y)‖ₑ ≤
        ↑(TileStructure.Forest.C7_1_6 a) *
          t.boundaryOperator u
            (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) fun x ↦ ↑‖f x‖) x'Lemma 7.1.6 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {LGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hLL ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u) :
        LGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2 
            ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
      (hxx ∈ L : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X) (hx'x' ∈ L : x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. LGrid X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  i  tTileStructure.Forest X n.σTileStructure.Forest.σ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (x : X) : Finset ℤThe definition `σ(u, x)` given in Section 7.1.
    We may assume `u ∈ t` whenever proving things about this definition.  u𝔓 X xX,
            MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (yX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
              KsKs.{u_1} {X : Type u_1} {a : ℕ} {K : X → X → ℂ} [PseudoMetricSpace X] [KernelProofData a K] (s : ℤ) (x y : X) : ℂK_s in the blueprint  i xX yX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).fX → ℂ yX -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
                  TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
                    (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2 
                      ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
                    fX → ℂ yX)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_1_6TileStructure.Forest.C7_1_6 (a : ℕ) : NNRealThe constant used in `third_tree_pointwise`.
    Has value `2 ^ (128 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          tTileStructure.Forest X n.boundaryOperatorTileStructure.Forest.boundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (f : X → ℂ) (x : X) : ENNRealThe operator `S_{1,𝔲} f(x)`, given in (7.1.4).  u𝔓 X
            (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
              (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2 
                ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
              fun xX  Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
            x'X
    Lemma 7.1.6 

Proof. We have for J \in \mathcal{J}(\fT(\fu)) \int_J K_{s}(x,y)(1 - P_{\mathcal{J}(\fT(\fu))})f(y) \, \mathrm{d}\mu(y) = \int_J \frac{1}{\mu(J)} \int_J K_s(x,y) - K_s(x,z) \, \mathrm{d}\mu(z) \,f(y) \, \mathrm{d}\mu(y). By eq-Ks-smooth and eq-vol-sp-cube, we have for y, z \in J |K_s(x,y) - K_s(x,z)| \le \frac{2^{127a^3}}{\mu(B(x, D^s))} \left(\frac{8 D^{s(J)}}{D^s}\right)^{1/a}.

Suppose that s \in \sigma(\fu, x). If K_s(x,y) \ne 0 for some y \in J \in \mathcal{J}(\fT(\fu)) then, by supp-Ks, y \in B(x, 0.5 D^s) \cap J \ne \emptyset. Let \fp \in \fT(\fu) with \ps(\fp) = s and x \in E(\fp). Then B(\pc(\fp_s), 4.5D^s) \cap J \ne \emptyset by the triangle inequality. If s(J) \ge s and s(J) > -S, then it follows from the triangle inequality, eq-vol-sp-cube and defineD that \scI(\fp) \subset B(c(J), 100 D^{s(J)+1}), contradicting J \in \mathcal{J}(\mathfrak{T}(\fu)). Thus s(J) \le s - 1 or s(J) = -S. If s(J) = -S and s(J) > s - 1, then s = -S. So in both cases, s(J) \le s. It then follows from the triangle inequality and eq-vol-sp-cube that J \subset B(x, 16 D^s).

Thus, we can estimate eq-term-C by 2^{127a^3 + 3/a}\sum_{\fp\in \mathfrak{T}}\frac{\mathbf{1}_{E(\fp)}(x)}{\mu(B(x,D^{\ps(\fp)}))}\sum_{\substack{J\in \mathcal{J}(\fT(\fu))\\J\subset B(x, 16D^{\ps(\fp)})\\ s(J) \le \ps(\fp)}} D^{(s(J) - \ps(\fp))/a} \int_J |f|. = 2^{127a^3 + 3/a}\sum_{I \in \mathcal{D}} \sum_{\substack{\fp\in \mathfrak{T}\\ \scI(\fp) = I}}\frac{\mathbf{1}_{E(\fp)}(x)}{\mu(B(x, D^{s(I)}))}\sum_{\substack{J\in \mathcal{J}(\fT(\fu))\\J\subset B(x, 16 D^{s(I)})\\ s(J) \le s(I)}} D^{(s(J) - s(I))/a} \int_J |f|. By eq-dis-freq-cover and defineep, the sets E(\fp) for tiles \fp with \scI(\fp) = I are pairwise disjoint. It follows from the definition of \mathcal{L}(\fT(\fu)) that x \in \scI(\fp) if and only if x' \in \scI(\fp), thus we can estimate the sum over \mathbf{1}_{E(\fp)}(x) by \mathbf{1}_{I}(x').

If x \in E(\fp) then in particular x \in \scI(\fp), so by eq-vol-sp-cube B(c(I),16D^{s(I)}) \subset B(x, 32D^{s(I)}). By the doubling property doublingx \mu(B(c(I), 16D^{s(I)})) \le 2^{5a} \mu(B(x, D^{s(I)})). Since a \ge 4 we can continue our estimate with \le 2^{128a^3}\sum_{I \in \mathcal{D}} \frac{\mathbf{1}_{I}(x')}{\mu(B(c(I), 16D^{s(I)}))}\sum_{\substack{J\in \mathcal{J}(\fT(\fu))\\J\subset B(x, 16 D^{s(I)})\\ s(J) \le s(I)}} D^{(s(J) - s(I))/a} \int_J |f| = 2^{128a^3} S_{1,\fu} P_{\mathcal{J}(\fT(\fu))}|f|(x'). This completes the proof.

1.5.12. An auxiliary L^2 tree estimate🔗

In this subsection we prove the following estimate on L^2 for operators associated to trees.

Lemma1.88
L∃∀N
Used by 2
Hover a use site to preview it.
Preview
Lemma 1.92
Loading preview
Hover a use site to preview it.

Uses Lemma 1.83, Lemma 1.84, Lemma 1.89, and Lemma 1.90. Let \fu \in \fU. Then we have for all f, g bounded with bounded support \Bigg|\int_X \sum_{\fp \in \fT(\fu)} \bar g(y) T_{\fp}f(y) \, \mathrm{d}\mu(y) \Bigg| \le 2^{130a^3}\|P_{\mathcal{J}(\fT(\fu))}|f|\|_{2}\|P_{\mathcal{L}(\fT(\fu))}|g|\|_{2}.

Lean code for Lemma1.881 theorem
  • complete
    theorem TileStructure.Forest.tree_projection_estimate.{u_2}TileStructure.Forest.tree_projection_estimate.{u_2} {X : Type u_2} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {f g : X → ℂ} (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume)
      (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume) (hu : u ∈ t) :
      ‖∫ (x : X), (starRingEnd ℂ) (g x) * carlesonSum ((fun x ↦ t.𝔗 x) u) f x‖ₑ ≤
        ↑(TileStructure.Forest.C7_2_1 a) *
            MeasureTheory.eLpNorm
              (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) fun x ↦ ‖f x‖) 2
              MeasureTheory.volume *
          MeasureTheory.eLpNorm
            (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u)) fun x ↦ ‖g x‖) 2
            MeasureTheory.volumeLemma 7.2.1.  {XType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_2  XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_2  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_2}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_2] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_2) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_2)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_2 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_2} {fX → ℂ gX → ℂ : XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_2),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (gX → ℂ xX) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_2_1TileStructure.Forest.C7_2_1 (a : ℕ) : NNRealThe constant used in `tree_projection_estimate`.
    Has value `2 ^ (130 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
              (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
                (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) fun xX  Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
              2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
            (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
              (TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) fun xX  Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. gX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
            2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.tree_projection_estimate.{u_2}TileStructure.Forest.tree_projection_estimate.{u_2} {X : Type u_2} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {f g : X → ℂ} (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume)
      (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume) (hu : u ∈ t) :
      ‖∫ (x : X), (starRingEnd ℂ) (g x) * carlesonSum ((fun x ↦ t.𝔗 x) u) f x‖ₑ ≤
        ↑(TileStructure.Forest.C7_2_1 a) *
            MeasureTheory.eLpNorm
              (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) fun x ↦ ‖f x‖) 2
              MeasureTheory.volume *
          MeasureTheory.eLpNorm
            (TileStructure.Forest.approxOnCube (TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u)) fun x ↦ ‖g x‖) 2
            MeasureTheory.volumeLemma 7.2.1. 
      {XType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_2  XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_2  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_2} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_2]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_2)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_2)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_2 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_2} {fX → ℂ gX → ℂ : XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_2),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (gX → ℂ xX) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)
                fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_2_1TileStructure.Forest.C7_2_1 (a : ℕ) : NNRealThe constant used in `tree_projection_estimate`.
    Has value `2 ^ (130 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
              (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
                (TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2 
                  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
                fun xX  Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
              2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
            (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
              (TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2 
                ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X))
              fun xX  Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. gX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
            2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Lemma 7.2.1. 

Below, we deduce Lemma 1.88 from Lemma 1.84 and the following estimates for the operators in Lemma 1.84.

Lemma1.89
L∃∀Nused by 1

Uses Theorem 1.9. For all bounded f with bounded support and all \mfa \in \Mf \|T_{\mathcal{N}}^{\mfa} f\|_2 \le 2^{102a^3} \|f\|_2.

Lean code for Lemma1.891 theorem
  • complete
    theorem TileStructure.Forest.nontangential_operator_bound.{u_2}TileStructure.Forest.nontangential_operator_bound.{u_2} {X : Type u_2} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {f : X → ℂ}
      (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) (θ : Θ X) :
      MeasureTheory.eLpNorm (TileStructure.Forest.nontangentialMaximalFunction θ f) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_2_2 a) * MeasureTheory.eLpNorm f 2 MeasureTheory.volumeLemma 7.2.2.  {XType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_2  XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_2  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_2}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_2] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_2) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_2)]
      {fX → ℂ : XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (θΘ X : ΘFunctionDistances.Θ.{u, u_3} {𝕜 : outParam (Type u_3)} (X : Type u) {inst✝ : NormedField 𝕜}
      {inst✝¹ : TopologicalSpace X} [self : FunctionDistances 𝕜 X] : Type uA type of continuous functions from `X` to `𝕜`.  XType u_2) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (TileStructure.Forest.nontangentialMaximalFunctionTileStructure.Forest.nontangentialMaximalFunction.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (θ : Θ X) (f : X → ℂ) (x : X) : ENNRealThe definition `T_𝓝^θ f(x)`, given in (7.1.3).
    For convenience, the suprema are written a bit differently than in the blueprint
    (avoiding `cubeOf`), but this should be equivalent.
    This is `0` if `x` doesn't lie in a cube.  θΘ X fX → ℂ) 2
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_2_2TileStructure.Forest.C7_2_2 (a : ℕ) : NNRealThe constant used in `nontangential_operator_bound`.
    Has value `2 ^ (102 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.nontangential_operator_bound.{u_2}TileStructure.Forest.nontangential_operator_bound.{u_2} {X : Type u_2} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {f : X → ℂ}
      (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) (θ : Θ X) :
      MeasureTheory.eLpNorm (TileStructure.Forest.nontangentialMaximalFunction θ f) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_2_2 a) * MeasureTheory.eLpNorm f 2 MeasureTheory.volumeLemma 7.2.2. 
      {XType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_2  XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_2  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_2} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_2]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_2)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_2)]
      {fX → ℂ : XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (θΘ X : ΘFunctionDistances.Θ.{u, u_3} {𝕜 : outParam (Type u_3)} (X : Type u) {inst✝ : NormedField 𝕜}
      {inst✝¹ : TopologicalSpace X} [self : FunctionDistances 𝕜 X] : Type uA type of continuous functions from `X` to `𝕜`.  XType u_2) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (TileStructure.Forest.nontangentialMaximalFunctionTileStructure.Forest.nontangentialMaximalFunction.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (θ : Θ X) (f : X → ℂ) (x : X) : ENNRealThe definition `T_𝓝^θ f(x)`, given in (7.1.3).
    For convenience, the suprema are written a bit differently than in the blueprint
    (avoiding `cubeOf`), but this should be equivalent.
    This is `0` if `x` doesn't lie in a cube. 
            θΘ X fX → ℂ)
          2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_2_2TileStructure.Forest.C7_2_2 (a : ℕ) : NNRealThe constant used in `nontangential_operator_bound`.
    Has value `2 ^ (102 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Lemma 7.2.2. 
Lemma1.90
L∃∀Nused by 1

Uses Theorem 1.9 and Lemma 1.91. For all \fu \in \fU and all bounded functions f with bounded support \|S_{1,\fu}f\|_2 \le 2^{12a} \|f\|_2.

Lean code for Lemma1.901 theorem
  • complete
    theorem TileStructure.Forest.boundary_operator_bound.{u_2}TileStructure.Forest.boundary_operator_bound.{u_2} {X : Type u_2} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {f : X → ℂ} (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      MeasureTheory.eLpNorm (t.boundaryOperator u f) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_2_3 a) * MeasureTheory.eLpNorm f 2 MeasureTheory.volumeLemma 7.2.3.  {XType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_2  XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_2  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_2}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_2] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_2) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_2)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_2 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_2} {fX → ℂ : XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  (tTileStructure.Forest X n.boundaryOperatorTileStructure.Forest.boundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (f : X → ℂ) (x : X) : ENNRealThe operator `S_{1,𝔲} f(x)`, given in (7.1.4).  u𝔓 X fX → ℂ) 2
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_2_3TileStructure.Forest.C7_2_3 (a : ℕ) : NNRealcan be improved to `2 ^ (10 * a + 5 / 2)`  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.boundary_operator_bound.{u_2}TileStructure.Forest.boundary_operator_bound.{u_2} {X : Type u_2} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {f : X → ℂ} (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      MeasureTheory.eLpNorm (t.boundaryOperator u f) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_2_3 a) * MeasureTheory.eLpNorm f 2 MeasureTheory.volumeLemma 7.2.3. 
      {XType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_2  XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_2  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_2} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_2]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_2)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_2)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_2 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_2} {fX → ℂ : XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (tTileStructure.Forest X n.boundaryOperatorTileStructure.Forest.boundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X) (f : X → ℂ) (x : X) : ENNRealThe operator `S_{1,𝔲} f(x)`, given in (7.1.4).  u𝔓 X fX → ℂ) 2
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_2_3TileStructure.Forest.C7_2_3 (a : ℕ) : NNRealcan be improved to `2 ^ (10 * a + 5 / 2)`  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Lemma 7.2.3. 

Proof of Lemma 1.88. Let L \in \mathcal{L}(\fT(\fu)). Let b(x') denote the right-hand side of Lemma 1.84. Apply this lemma to e(\fcc(\fu)) f, to obtain for all y, x' \in L \Bigg| \sum_{\fp \in \fT(\fu)} T_{\fp} f(y) \Bigg| \le b(x'). Hence, by taking an infimum, we have for y \in L \Bigg| \sum_{\fp \in \fT(\fu)} T_{\fp} f(y) \Bigg| \le \inf_{x' \in L} b(x'). Integrating this estimate yields \int_L |g(y)| \Bigg| \sum_{\fp \in \fT(\fu)} T_{\fp} f(y) \Bigg| \, \mathrm{d}\mu(y) \le \int_L |g(y)| \times \inf_{x' \in L} b(x') \, \mathrm{d}\mu(y) = \int_L P_{\mathcal{L}(\fT(\fu))}|g|(y) \times \inf_{x' \in L} b(x') \, \mathrm{d}\mu(y) \le \int_L P_{\mathcal{L}(\fT(\fu))}|g|(y) \times b(y) \, \mathrm{d}\mu(y). By definetp, we have T_{\fp} f = \mathbf{1}_{\scI(\fp)} T_{\fp} f for all \fp \in \fP, so \Bigg| \int \bar g(y) \sum_{\fp \in \fT(\fu)} T_{\fp} f(y) \, \mathrm{d}\mu(y) \Bigg| = \Bigg| \int_{\bigcup_{\fp \in \fT(\fu)} \scI(\fp)} \bar g(y) \sum_{\fp \in \fT(\fu)} T_{\fp} f(y) \, \mathrm{d}\mu(y) \Bigg|. Since \mathcal{L}(\fT(\fu)) partitions \bigcup_{\fp \in \fT(\fu)} \scI(\fp) by Lemma 1.83, we get from the triangle inequality \le \sum_{L \in \mathcal{L}(\fT(\fu))} \int_L |g(y)| \Bigg| \sum_{\fp \in \fT(\fu)} T_{\fp} f(y) \Bigg| \, \mathrm{d}\mu(y) which by the above computation is bounded by \sum_{L \in \mathcal{L}(\fT(\fu))} \int_L P_{\mathcal{L}(\fT(\fu))}|g|(y) \times b(y) \, \mathrm{d}\mu(y) = \int_X P_{\mathcal{L}(\fT(\fu))}|g|(y) \times b(y) \, \mathrm{d}\mu(y). Applying Cauchy-Schwarz, this is bounded by \|P_{\mathcal{L}(\fT(\fu))}|g|\|_2 \times \|b\|_2. By Minkowski's inequality, Theorem 1.9, Lemma 1.89 and Lemma 1.90, \|b\|_2 is at most 2^{129a^3} (2^{2a+1} + 2^{12a})\|P_{\mathcal{J}(\fT(\fu))}|f|\|_2 + 2^{103a^3} \|P_{\mathcal{J}(\fT(\fu))}[e(\fcc(\fu))f]\|_2. By the triangle inequality we have for all x \in X that |P_{\mathcal{J}(\fT(\fu))}[e(\fcc(\fu))f]|(x) \le P_{\mathcal{J}(\fT(\fu))}|f|(x), thus we can further estimate the above by (2^{129a^3} (2^{2a+1} + 2^{12a}) + 2^{103a^3}) \|P_{\mathcal{J}(\fT(\fu))}|f|\|_2. This completes the proof since a \ge 4.

Now we prove the two auxiliary lemmas. We begin with the nontangential maximal operator T_{\mathcal{N}}.

Proof of Lemma 1.89. Fix s_1, s_2. By eq-psisum we have for all x \in (0, \infty) \sum_{s = s_1}^{s_2} \psi(D^{-s}x) = 1 - \sum_{s < s_1} \psi(D^{-s}x) - \sum_{s > s_1} \psi(D^{-s}x). Since \psi is supported in [\frac{1}{4D}, \frac{1}{2}], the two sums on the right hand side are zero for all x \in [\frac{1}{2}D^{s_1-1}, \frac{1}{4} D^{s_2 - 1}], hence x \in [\frac{1}{2}D^{s_1-1}, \frac{1}{4} D^{s_2}] \implies \sum_{s = s_1}^{s_2} \psi(D^{-s}x) = 1. Since \psi is supported in [\frac{1}{4D}, \frac{1}{2}], we further have x \notin [\frac{1}{4}D^{s_1 - 1}, \frac{1}{2}D^{s_2}] \implies \sum_{s = s_1}^{s_2} \psi(D^{-s}x) = 0. Finally, since \psi \ge 0 and \sum_{s \in \mathbb{Z}} \psi(D^{-s}x) = 1, we have for all x 0 \le \sum_{s = s_1}^{s_2} \psi(D^{-s}x) \le 1.

Let x' \in I_{s_1}(x) and suppose that D^{s_2 - 1} \le R_Q(\mfa, x'). By the triangle inequality and eq-vol-sp-cube, it holds that \rho(x,x') \le 8D^{s_1}. We have \Bigg|\sum_{s = s_1}^{s_2} \int K_s(x',y) f(y) \, \mathrm{d}\mu(y)\Bigg| = \Bigg|\int \sum_{s = s_1}^{s_2} \psi(D^{-s}\rho(x',y)) K(x',y) f(y) \, \mathrm{d}\mu(y)\Bigg| \le \Bigg| \int_{8D^{s_1} < \rho(x',y) \le \frac{1}{4}D^{s_2-1}} K(x',y) f(y) \, \mathrm{d}\mu(y) \Bigg| + \int_{\frac{1}{4}D^{s_1-1} \le \rho(x',y) \le 8D^{s_1}} |K(x', y)| |f(y)| \, \mathrm{d}\mu(y) + \int_{\frac{1}{4}D^{s_2-1} \le \rho(x',y) \le \frac{1}{2}D^{s_2}} |K(x', y)| |f(y)| \, \mathrm{d}\mu(y).

The first term eq-sharp-trunc-term is at most 2T_{\tQ}^\mfa f(x), using with R_1 := 8D^{s_1}, R_2 := \frac{1}{4}D^{s_2-1} and R_1 < R_2 < R_{\tQ}(\mfa,x') the triangle inequality in the form \left|\int_{R_1 < \rho(x',y) \le R_2} K(x',y) f(y) \, \mathrm{d}\mu(y) \right| \le \left|\int_{R_1 < \rho(x',y) < R_{\tQ}(\mfa,x')} K(x',y) f(y) \, \mathrm{d}\mu(y) \right| + \left|\int_{R_2 < \rho(x',y) < R_{\tQ}(\mfa,x')} K(x',y) f(y) \, \mathrm{d}\mu(y) \right|.

The other two terms will be estimated by the finitary maximal function from Theorem 1.9. For the second term eq-lower-bound-term we use eqkernel-size which implies that for all y with \rho(x', y) \ge \frac{1}{4}D^{s_1 - 1}, we have |K(x', y)| \le \frac{2^{a^3}}{\mu(B(x', \frac{1}{4}D^{s_1 - 1}))}. Using D=2^{100a^2} and the doubling property doublingx 7 +100a^2 times estimates the last display by \frac{2^{7a+101a^3}}{\mu(B(x', 32D^{s_1}))}. By the triangle inequality and eq-vol-sp-cube, we have B(x', 8D^{s_1}) \subset B(c(I_{s_1}(x)), 16D^{s(I_{s_1}(x))}) \subset B(x', 32D^{s_1}). Combining this with pf-nontangential-operator-bound-imeq, we conclude that eq-lower-bound-term is at most 2^{7a + 101a^3} M_{\mathcal{B},1} f(x).

For eq-upper-bound-term we argue similarly. We have for all y with \rho(x', y) \ge \frac{1}{4}D^{s_2-1} |K(x', y)| \le \frac{2^{a^3}}{\mu(B(x', \frac{1}{4}D^{s_2-1}))}. Using the doubling property doublingx 7 + 100a^2 times estimates the last display by \frac{2^{7a + 101a^3}}{\mu(B(x', 32 D^{s_2}))}. Note that by dyadicproperty we have I_{s_1}(x) \subset I_{s_2}(x), in particular x' \in I_{s_2}(x). By the triangle inequality and eq-vol-sp-cube, we have B(x', 8D^{s_2}) \subset B(c(I_{s_2}(x)), 16D^{s(I_{s_2}(x))}) \subset B(x', 32D^{s_2}). Combining this, eq-upper-bound-term is at most 2^{7a+101a^3} M_{\mathcal{B},1} f(x).

Using a \ge 4, taking a supremum over all x' \in I_{s_1}(x) and then a supremum over all -S \le s_1 < s_2 \le S, we obtain T_{\mathcal{N}} f(x) \le 2T_{\tQ}^\mfa f(x) + 2^{102a^3} M_{\mathcal{B},1} f(x). The lemma now follows from assumption linnontanbound, Theorem 1.9 and a \ge 4.

We need the following lemma to prepare the L^2-estimate for the auxiliary operators S_{1, \fu}.

Lemma1.91
L∃∀Nused by 1

For every cube I \in \mathcal{D}, there exist at most 2^{9a} cubes J \in \mathcal{D} with s(J) = s(I) and B(c(I), 16D^{s(I)}) \cap B(c(J), 16 D^{s(J)}) \ne \emptyset.

Lean code for Lemma1.911 theorem
  • complete
    theorem TileStructure.Forest.boundary_overlap.{u_2}TileStructure.Forest.boundary_overlap.{u_2} {X : Type u_2} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (I : Grid X) : (TileStructure.Forest.kissing I).card ≤ 2 ^ (9 * a)Lemma 7.2.4.  {XType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_2  XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_2  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_2} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_2]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_2) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_2)]
      (IGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_2) : (TileStructure.Forest.kissingTileStructure.Forest.kissing.{u_2} {X : Type u_2} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (I : Grid X) : Finset (Grid X)The set of cubes in Lemma 7.2.4.  IGrid X).cardFinset.card.{u_1} {α : Type u_1} (s : Finset α) : ℕ`s.card` is the number of elements of `s`, aka its cardinality.
    
    The notation `#s` can be accessed in the `Finset` locale.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.9 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    theorem TileStructure.Forest.boundary_overlap.{u_2}TileStructure.Forest.boundary_overlap.{u_2} {X : Type u_2} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (I : Grid X) : (TileStructure.Forest.kissing I).card ≤ 2 ^ (9 * a)Lemma 7.2.4. 
      {XType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_2  XType u_2  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_2  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_2} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_2]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_2)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_2)]
      (IGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_2) :
      (TileStructure.Forest.kissingTileStructure.Forest.kissing.{u_2} {X : Type u_2} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (I : Grid X) : Finset (Grid X)The set of cubes in Lemma 7.2.4.  IGrid X).cardFinset.card.{u_1} {α : Type u_1} (s : Finset α) : ℕ`s.card` is the number of elements of `s`, aka its cardinality.
    
    The notation `#s` can be accessed in the `Finset` locale.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.9 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    Lemma 7.2.4. 

Proof. Suppose that B(c(I), 16 D^{s(I)}) \cap B(c(J), 16 D^{s(J)}) \ne \emptyset and s(I) = s(J). Then B(c(I), 33 D^{s(I)}) \subset B(c(J), 128 D^{s(J)}). Hence by the doubling property doublingx 2^{9a}\mu(B(c(J), \frac{1}{4}D^{s(J)})) \ge \mu(B(c(I), 33 D^{s(I)})), and by the triangle inequality, B(c(J), \frac{1}{4}D^{s(J)}) is contained in B(c(I), 33 D^{s(I)}).

If \mathcal{C} is any finite collection of cubes J \in \mathcal{D} satisfying s(J) = s(I) and B(c(I), 16 D^{s(I)}) \cap B(c(J), 16 D^{s(J)}) \ne\emptyset, then it follows from eq-vol-sp-cube and pairwise disjointedness of cubes of the same scale dyadicproperty that the balls B(c(J), \frac{1}{4} D^{s(J)}) are pairwise disjoint. Hence \mu(B(c(I), 33 D^{s(I)})) \ge \sum_{J \in \mathcal{C}} \mu(B(c(J), \frac{1}{4}D^{s(J)})) \ge |\mathcal{C}| 2^{-9a} \mu(B(c(I), 33 D^{s(I)})). Since \mu is doubling and \mu \ne 0, we have \mu(B(c(I), 33D^{s(I)})) > 0. The lemma follows after dividing by 2^{-9a}\mu(B(c(I), 33D^{s(I)})).

Now we can bound the operators S_{1, \fu}.

Proof of Lemma 1.90. Note that by definition, S_{1,\fu}f is a finite sum of indicator functions of cubes I \in \mathcal{D} for each locally integrable f, and hence is bounded, has bounded support and is integrable. Let g be another function with the same three properties. Then \bar g S_{1,\fu}f is integrable, and we have \Bigg|\int \bar g(y) S_{1,\fu}f(y) \, \mathrm{d}\mu(y)\Bigg| = \Bigg|\sum_{I\in\mathcal{D}} \frac{1}{\mu(B(c(I), 16 D^{s(I)}))} \int_I \bar g(y) \, \mathrm{d}\mu(y) \times \sum_{\substack{J\in \mathcal{J}(\fT(\fu))\,:\,J\subseteq B(c(I), 16 D^{s(I)})\\s(J)\le s(I)}} D^{(s(J)-s(I))/a}\int_J |f(y)| \,\mathrm{d}\mu(y)\Bigg| \le \sum_{I\in\mathcal{D}} \frac{1}{\mu(B(c(I), 16D^{s(I)}))} \int_{B(c(I), 16D^{s(I)})} | g(y)| \, \mathrm{d}\mu(y) \times \sum_{\substack{J\in \mathcal{J}(\fT(\fu))\,:\,J\subseteq B(c(I), 16 D^{s(I)})\\ s(J) \le s(I)}} D^{(s(J)-s(I))/a}\int_J |f(y)| \,\mathrm{d}\mu(y). Changing the order of summation and using J \subset B(c(I), 16 D^{s(I)}) to bound the first average integral by M_{\mathcal{B},1}|g|(y) for any y \in J, we obtain \le \sum_{J\in\mathcal{J}(\fT(\fu))}\int_J|f(y)| M_{\mathcal{B},1}|g|(y) \, \mathrm{d}\mu(y) \sum_{\substack{I \in \mathcal{D} \, : \, J\subset B(c(I),16 D^{s(I)})\\ s(I) \ge s(J)}} D^{(s(J)-s(I))/a}. By Lemma 1.91, there are at most 2^{9a} cubes I at each scale satisfying the inclusion J \subset B(c(I),16D^{s(I)}). Since D^{-1/a}\le\frac12, (1 - D^{-1/a})^{-1} \le 2. Using this estimate for the sum of the geometric series, we conclude that eq-boundary-operator-bound-1 is at most 2^{9a+1} \sum_{J\in\mathcal{J}(\fT(\fu))}\int_J|f(y)| M_{\mathcal{B},1}|g|(y) \, \mathrm{d}\mu(y). The collection \mathcal{J} is a partition of \bigcup_{I \in \mathcal{D}} I, so this equals 2^{9a+1} \int_X|f(y)| M_{\mathcal{B},1}|g|(y) \, \mathrm{d}\mu(y). Using Cauchy-Schwarz and Theorem 1.9, we conclude \left|\int \bar g S_{1,\fu}f \, \mathrm{d}\mu \right| \le 2^{12a} \|g\|_2\|f\|_2. The lemma now follows by choosing g = S_{1,\fu}f and dividing on both sides by the finite \|S_{1,\fu}f\|_2.

1.5.13. The quantitative L^2 tree estimate🔗

The main result of this subsection is the following quantitative bound for operators associated to trees, with decay in the densities \dens_1 and \dens_2.

Lemma1.92
L∃∀Nused by 1

Uses Lemma 1.88, Lemma 1.93, and Lemma 1.94. Let \fu \in \fU. Then for all bounded f with bounded support and bounded g supported on G we have \left|\int_X \bar g \sum_{\fp \in \fT(\fu)} T_{\fp }f \, \mathrm{d}\mu \right| \le 2^{181a^3} \dens_1(\fT(\fu))^{1/2} \|f\|_2\|g\|_2. If additionally \text{support}(f) \subseteq F, then we have \left| \int_X \bar g \sum_{\fp \in \fT(\fu)} T_{\fp }f\, \mathrm{d}\mu \right| \le 2^{282a^3} \dens_1(\fT(\fu))^{1/2} \dens_2(\fT(\fu))^{1/2} \|f\|_2\|g\|_2.

Lean code for Lemma1.922 theorems
  • theorem TileStructure.Forest.density_tree_bound1.{u_1}TileStructure.Forest.density_tree_bound1.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {f g : X → ℂ} (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume)
      (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume) (h2g : Function.support g ⊆ G) (hu : u ∈ t) :
      ‖∫ (x : X), (starRingEnd ℂ) (g x) * carlesonSum ((fun x ↦ t.𝔗 x) u) f x‖ₑ ≤
        ↑(TileStructure.Forest.C7_3_1_1 a) * dens₁ ((fun x ↦ t.𝔗 x) u) ^ 2⁻¹ *
            MeasureTheory.eLpNorm f 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volumeFirst part of Lemma 7.3.1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2gFunction.support g ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  gX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X) (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (gX → ℂ xX) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_3_1_1TileStructure.Forest.C7_3_1_1 (a : ℕ) : NNRealThe constant used in `density_tree_bound1` and `adjoint_tree_estimate`.
    Has value `2 ^ (181 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.density_tree_bound1.{u_1}TileStructure.Forest.density_tree_bound1.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {f g : X → ℂ} (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume)
      (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume) (h2g : Function.support g ⊆ G) (hu : u ∈ t) :
      ‖∫ (x : X), (starRingEnd ℂ) (g x) * carlesonSum ((fun x ↦ t.𝔗 x) u) f x‖ₑ ≤
        ↑(TileStructure.Forest.C7_3_1_1 a) * dens₁ ((fun x ↦ t.𝔗 x) u) ^ 2⁻¹ *
            MeasureTheory.eLpNorm f 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volumeFirst part of Lemma 7.3.1. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2gFunction.support g ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  gX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X)
      (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (gX → ℂ xX) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)
                fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_3_1_1TileStructure.Forest.C7_3_1_1 (a : ℕ) : NNRealThe constant used in `density_tree_bound1` and `adjoint_tree_estimate`.
    Has value `2 ^ (181 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2
              MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    First part of Lemma 7.3.1. 
  • theorem TileStructure.Forest.density_tree_bound2.{u_1}TileStructure.Forest.density_tree_bound2.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {f g : X → ℂ} (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) (h2f : Function.support f ⊆ F)
      (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume) (h2g : Function.support g ⊆ G) (hu : u ∈ t) :
      ‖∫ (x : X), (starRingEnd ℂ) (g x) * carlesonSum ((fun x ↦ t.𝔗 x) u) f x‖ₑ ≤
        ↑(TileStructure.Forest.C7_3_1_2 a) * dens₁ ((fun x ↦ t.𝔗 x) u) ^ 2⁻¹ * dens₂ ((fun x ↦ t.𝔗 x) u) ^ 2⁻¹ *
            MeasureTheory.eLpNorm f 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volumeSecond part of Lemma 7.3.1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2fFunction.support f ⊆ F : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  fX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. FSet X)
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2gFunction.support g ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  gX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X) (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (gX → ℂ xX) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_3_1_2TileStructure.Forest.C7_3_1_2 (a : ℕ) : NNRealThe constant used in `density_tree_bound2` and `indicator_adjoint_tree_estimate`.
    Has value `2 ^ (282 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              dens₂dens₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.density_tree_bound2.{u_1}TileStructure.Forest.density_tree_bound2.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {f g : X → ℂ} (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) (h2f : Function.support f ⊆ F)
      (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume) (h2g : Function.support g ⊆ G) (hu : u ∈ t) :
      ‖∫ (x : X), (starRingEnd ℂ) (g x) * carlesonSum ((fun x ↦ t.𝔗 x) u) f x‖ₑ ≤
        ↑(TileStructure.Forest.C7_3_1_2 a) * dens₁ ((fun x ↦ t.𝔗 x) u) ^ 2⁻¹ * dens₂ ((fun x ↦ t.𝔗 x) u) ^ 2⁻¹ *
            MeasureTheory.eLpNorm f 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volumeSecond part of Lemma 7.3.1. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2fFunction.support f ⊆ F : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  fX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. FSet X)
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2gFunction.support g ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  gX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X)
      (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (gX → ℂ xX) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              carlesonSumcarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe operator `T_ℭ f` defined at the bottom of Section 7.4.
    We will use this in other places of the formalization as well.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)
                fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_3_1_2TileStructure.Forest.C7_3_1_2 (a : ℕ) : NNRealThe constant used in `density_tree_bound2` and `indicator_adjoint_tree_estimate`.
    Has value `2 ^ (282 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                  2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              dens₂dens₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2
              MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Second part of Lemma 7.3.1. 

Below, we deduce this lemma from Lemma 1.88 and the following two estimates controlling the size of support of the operator and its adjoint.

Lemma1.93
L∃∀Nused by 1

Uses Lemma 1.11. Let \fu \in \fU and L \in \mathcal{L}(\fT(\fu)). Then \mu(L \cap G \cap \bigcup_{\fp \in \fT(\fu)} E(\fp)) \le 2^{101a^3} \dens_1(\fT(\fu)) \mu(L).

Lean code for Lemma1.931 theorem
  • theorem TileStructure.Forest.local_dens1_tree_bound.{u_1}TileStructure.Forest.local_dens1_tree_bound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {L : Grid X} (hu : u ∈ t) (hL : L ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u)) :
      MeasureTheory.volume (↑L ∩ G ∩ ⋃ p ∈ (fun x ↦ t.𝔗 x) u, E p) ≤
        ↑(TileStructure.Forest.C7_3_2 a) * dens₁ ((fun x ↦ t.𝔗 x) u) * MeasureTheory.volume ↑LLemma 7.3.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {LGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hLL ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u) : LGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.LGrid X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. GSet X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.  p𝔓 X  (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X, EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_3_2TileStructure.Forest.C7_3_2 (a : ℕ) : NNRealThe constant used in `local_dens1_tree_bound`.
    Has value `2 ^ (101 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LGrid X
    theorem TileStructure.Forest.local_dens1_tree_bound.{u_1}TileStructure.Forest.local_dens1_tree_bound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {L : Grid X} (hu : u ∈ t) (hL : L ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u)) :
      MeasureTheory.volume (↑L ∩ G ∩ ⋃ p ∈ (fun x ↦ t.𝔗 x) u, E p) ≤
        ↑(TileStructure.Forest.C7_3_2 a) * dens₁ ((fun x ↦ t.𝔗 x) u) * MeasureTheory.volume ↑LLemma 7.3.2. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {LGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hLL ∈ TileStructure.Forest.𝓛 ((fun x ↦ t.𝔗 x) u) :
        LGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          TileStructure.Forest.𝓛TileStructure.Forest.𝓛.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓛(𝔖), defined above Lemma 7.1.2 
            ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
          (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.LGrid X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. GSet X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.
             p𝔓 X  (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X, EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_3_2TileStructure.Forest.C7_3_2 (a : ℕ) : NNRealThe constant used in `local_dens1_tree_bound`.
    Has value `2 ^ (101 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LGrid X
    Lemma 7.3.2. 
Lemma1.94
L∃∀Nused by 1

Let \fu \in \fU and J \in \mathcal{J}(\fT(\fu)). Then \mu(F \cap J) \le 2^{201a^3} \dens_2(\fT(\fu)) \mu(J).

Lean code for Lemma1.941 theorem
  • theorem TileStructure.Forest.local_dens2_tree_bound.{u_1}TileStructure.Forest.local_dens2_tree_bound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {J : Grid X} (hu : u ∈ t) (hJ : J ∈ TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) :
      MeasureTheory.volume (F ∩ ↑J) ≤ ↑(TileStructure.Forest.C7_3_3 a) * dens₂ ((fun x ↦ t.𝔗 x) u) * MeasureTheory.volume ↑JLemma 7.3.3.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hJJ ∈ TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u) : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.FSet X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. JGrid X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_3_3TileStructure.Forest.C7_3_3 (a : ℕ) : NNRealThe constant used in `local_dens2_tree_bound`.
    Has value `2 ^ (201 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. dens₂dens₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  JGrid X
    theorem TileStructure.Forest.local_dens2_tree_bound.{u_1}TileStructure.Forest.local_dens2_tree_bound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {J : Grid X} (hu : u ∈ t) (hJ : J ∈ TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u)) :
      MeasureTheory.volume (F ∩ ↑J) ≤ ↑(TileStructure.Forest.C7_3_3 a) * dens₂ ((fun x ↦ t.𝔗 x) u) * MeasureTheory.volume ↑JLemma 7.3.3. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hJJ ∈ TileStructure.Forest.𝓙 ((fun x ↦ t.𝔗 x) u) :
        JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          TileStructure.Forest.𝓙TileStructure.Forest.𝓙.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (𝔖 : Set (𝔓 X)) : Set (Grid X)The definition of `𝓙(𝔖), defined above Lemma 7.1.2 
            ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)) :
      MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.FSet X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. JGrid X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_3_3TileStructure.Forest.C7_3_3 (a : ℕ) : NNRealThe constant used in `local_dens2_tree_bound`.
    Has value `2 ^ (201 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            dens₂dens₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  JGrid X
    Lemma 7.3.3. 

Proof of Lemma 1.92. Denote \mathcal{E}(\fu) = \bigcup_{\fp \in \fT(\fu)} E(\fp). Then we have \left| \int_X \bar g \sum_{\fp \in \fT(\fu)} T_{\fp} f \, \mathrm{d}\mu \right| = \left| \int_X \overline{ g\mathbf{1}_{\mathcal{E}(\fu)}} \sum_{\fp \in \fT(\fu)} T_{\fp} (\mathbf{1}_{\scI(\fu)}f) \, \mathrm{d}\mu \right|. By Lemma 1.88, this is bounded by \le 2^{130a^3}\|P_{\mathcal{J}(\fT(\fu))}|f|\|_2 \|P_{\mathcal{L}(\fT(\fu))} |\mathbf{1}_{\mathcal{E}(\fu)}g|\|_2. We bound the two factors separately. We have \|P_{\mathcal{L}(\fT(\fu))} |\mathbf{1}_{\mathcal{E}(\fu)}g|\|_2 = \left( \sum_{L \in \mathcal{L}(\fT(\fu))} \frac{1}{\mu(L)} \left(\int_{L \cap \mathcal{E}(\fu)} |g(y)| \, \mathrm{d}\mu(y)\right)^2 \right)^{1/2}. By Cauchy-Schwarz and Lemma 1.93 this is at most \le \left( \sum_{L \in \mathcal{L}(\fT(\fu))} 2^{101a^3} \dens_1(\fT(\fu)) \int_{L \cap \mathcal{E}(\fu)} |g(y)|^2 \, \mathrm{d}\mu(y) \right)^{1/2}. Since cubes L \in \mathcal{L}(\fT(\fu)) are pairwise disjoint by Lemma 1.83, this is \le 2^{51 a^3} \dens_1(\fT(\fu))^{1/2} \|g\|_2.

Similarly, we have \|P_{\mathcal{J}(\fT(\fu))}|f|\|_2 = \left( \sum_{J \in \mathcal{J}(\fT(\fu))} \frac{1}{\mu(J)} \left(\int_J |f(y)| \, \mathrm{d}\mu(y)\right)^2 \right)^{1/2}. By Cauchy-Schwarz, this is \le \left( \sum_{J \in \mathcal{J}(\fT(\fu))} \int_J |f(y)|^2 \, \mathrm{d}\mu(y) \right)^{1/2}. Since cubes in \mathcal{J}(\fT(\fu)) are pairwise disjoint by Lemma 1.83, this is at most \|f\|_2. Combining eq-both-factors-tree, eq-factor-L-tree and eq-factor-J-tree gives eq-cor-tree-est.

If f \le \mathbf{1}_F then f = f\mathbf{1}_F, so \left( \sum_{J \in \mathcal{J}(\fT(\fu))} \frac{1}{\mu(J)} \left(\int_J |f(y)| \, \mathrm{d}\mu(y)\right)^2 \right)^{1/2} =\left(\sum_{J \in \mathcal{J}(\fT(\fu))} \frac{1}{\mu(J)} \left(\int_{J \cap F} |f(y)| \, \mathrm{d}\mu(y)\right)^2 \right)^{1/2}. We estimate as before, using now Lemma 1.94 and Cauchy-Schwarz, and obtain that this is \le 2^{101a^3} \dens_2(\fT(\fu))^{1/2} \|f\|_2. Combining this with eq-both-factors-tree and eq-factor-L-tree gives eq-cor-tree-est-F.

Now we prove the two auxiliary estimates.

Proof of Lemma 1.93. If the set on the right hand side is empty, then eq-1density-estimate-tree holds. If not, then there exists \fp \in \fT(\fu) with L \cap \scI(\fp) \ne \emptyset.

Continuing the proof of Lemma 1.93, suppose first that there exists such \fp with \ps(\fp) \le s(L). Then by dyadicproperty \scI(\fp) \subset L, which gives by the definition of \mathcal{L}(\fT(\fu)) that s(L) = -S and hence L = \scI(\fp). Let \fq \in \fT(\fu) with E(\fq) \cap L \ne \emptyset. Since s(L) = -S \le \ps(\fq) it follows from dyadicproperty that \scI(\fp) = L \subset \scI(\fq). We have then by Lemma 1.11 d_{\fp}(\fcc(\fp), \fcc(\fq)) \le d_{\fp}(\fcc(\fp), \fcc(\fu)) + d_{\fp}(\fcc(\fq), \fcc(\fu)) \le d_{\fp}(\fcc(\fp), \fcc(\fu)) + d_{\fq}(\fcc(\fq), \fcc(\fu)). Using that \fp, \fq \in \fT(\fu) and forest1, this is at most 8. Using again the triangle inequality and Lemma 1.11, we obtain that for each q \in B_{\fq}(\fcc(\fq), 1) d_{\fp}(\fcc(\fp), q) \le d_{\fp}(\fcc(\fp), \fcc(\fq)) + d_{\fq}(\fcc(\fq), q) \le 9. Thus L \cap G \cap E(\fq) \subset E_2(9, \fp). We obtain \mu(L \cap G \cap \bigcup_{\fq \in \fT(\fu)} E(\fq)) \le \mu(E_2(9, \fp)). By the definition of \dens_1, this is bounded by 9^a \dens_1(\fT(\fu)) \mu(\scI(\fp)) =9^a \dens_1(\fT(\fu)) \mu(L). Since a \ge 4, eq-1density-estimate-tree follows in this case.

Now suppose that for each \fp \in \fT(\fu) with L \cap E(\fp) \ne \emptyset, we have \ps(\fp) > s(L). Since there exists at least one such \fp, there exists in particular at least one cube L'' \in \mathcal{D} with L \subset L'' and s(L'') > s(L). By coverdyadic, there exists L' \in \mathcal{D} with L \subset L' and s(L') = s(L) + 1. By the definition of \mathcal{L}(\fT(\fu)) there exists a tile \fp'' \in \fT(\fu) with \scI(\fp'') \subset L'.

It suffices to show that there exists a tile \fp' \in \fP(\fT(\fu)) with \scI(\fp') = L', d_{\fp'}(\fcc(\fp'), \fcc(\fu)) < 4 and 9\fp'' \lesssim 9\fp'. For then, let \fq \in \fT(\fu) with L \cap E(\fq) \ne \emptyset. As shown above, this implies \ps(\fq) \ge s(L'), so by dyadicproperty L' \subset \scI(\fq). If q \in B_{\fq}(\fcc(\fq), 1), then by a similar calculation as above, using the triangle inequality, Lemma 1.11 and forest1, we obtain d_{\fp'}(\fcc(\fp'), q) \le d_{\fp'}(\fcc(\fp'), \fcc(\fq)) + d_{\fq}(\fcc(\fq), q) \le 9. Thus L \cap G \cap E(\fq) \subset E_2(9, \fp'). We deduce using the definition definedens1 of \dens_1 \mu(L \cap G \cap \bigcup_{\fq \in \fT(\fu)} E(\fq)) \le \mu(E_2(9, \fp')) \le 9^a \dens_1(\fT(\fu)) \mu(L'). Using the doubling property doublingx, eq-vol-sp-cube, and a \ge 4 this is estimated by 9^a 2^{100a^3 + 5a}\dens_1(\fT(\fu)) \mu(L) \le 2^{101 a^3} \dens_1(\fT(\fu))\mu(L).

To show existence of \fp' with the given properties, if \scI(\fp'') = L' we can take \fp' = \fp'', which satisfies the distance property by forest1 and the other properties trivially. Otherwise, let \fp' be the unique tile such that \scI(\fp') = L' and such that \Omega(\fu) \cap \Omega(\fp') \ne \emptyset. Since \scI(\fp') \subset \scI(\fp) and \fp \in \fT(\fu), we have \fp' \in \fP(\fT(\fu)). Since by forest1 \ps(\fp') = s(L') \le \ps(\fp) < \ps(\fu), we have by dyadicproperty and eq-freq-dyadic that \Omega(\fu) \subset \Omega(\fp'), and hence the distance property. 9\fp'' \lesssim 9\fp' follows by the triangle inequality, forest1, Lemma 1.11 and eq-freq-comp-ball. This completes the proof.

Proof of Lemma 1.94. We prove the inequality with the constant 2^{201a^3} replaced by 2 ^ {200a^3 + 14a}; this is stronger because a \geq 4. It suffices to show the existence of a tile \fp \in \fT(\fu) and an r \geq 4 D ^ {\ps(\fp)} such that J \subset B(\pc(\fp), r) and \mu(B(\pc(\fp), r)) ≤ 2 ^ {200a^3 + 14a} \mu(J), because then it follows from the definition definedens2 of \dens_2 that \mu(F \cap J) \le \mu(F \cap B(\pc(\fp), r)) \le \dens_2(\fT(\fu)) \mu(B(\pc(\fp), r)) \le 2^{200a^3 + 14a} \dens_2(\fT(\fu))\mu(J).

In particular, these criteria are satisfied, with r = 4 D ^ {\ps(\fp)}, by any \fp \in \fT(\fu) such that J \subseteq B(\pc(\fp, 4 D ^ {\ps(\fp)})) and \mu(\scI(\fp)) \le 2^{100a^3 + 10a} \mu(J), because then by the doubling property doublingx \mu(B(\pc(\fp), 4 D ^ {\ps(\fp)})) \le 2^{4a} \mu(B(\pc(\fp), D ^ {\ps(\fp)} / 4)) \le 2^{4a} \mu(\scI(\fp)) \le 2^{100a^3 + 14a} \mu(J).

Suppose first that s(J) = S. Then J = I_0, so subsetmaxcube and the fact that J \in \mathcal{J}(\fT(\fu)) \subseteq \mathcal{J}_0(\fT(\fu)) imply that s(J) = -S. Thus S = 0. It follows that J is the only dyadic cube, so any \fp \in \fT(\fu) has \scI(\fp) = J, and therefore satisfies J \subseteq B(\pc(\fp, 4 D ^ {\ps(\fp)})) and \mu(\scI(\fp)) \le 2^{100a^3 + 10a} \mu(J).

It remains to consider the case s(J) < S. Then, by coverdyadic and dyadicproperty, there exists some cube J' \in \mathcal{D} with s(J') = s(J) + 1 and J \subset J'. By definition of \mathcal{J}(\fT(\fu)) there exists some \fp \in \fT(\fu) such that \scI(\fp) \subset B(c(J'), 100 D^{s(J') + 1}).

Since c(J) \in J \subset J' \subset B(c(J'), 4D^{s(J')}), the triangle inequality, s(J') = s(J) + 1 and D=2^{100a^2} imply B(c(J'), 204D^{s(J')+1}) \subset B(c(J), 204D^{s(J') + 1} + 4D^{s(J')}) \subset B(c(J), 2^8 D^{s(J) + 2}). From the doubling property doublingx, D=2^{100a^2} and eq-vol-sp-cube, we obtain \mu(B(c(J'), 204D^{s(J') + 1})) \leq 2 ^ {200a^3 + 10a} \mu(J).

If J \subset B(\pc(\fp), 4 D^{\ps(\fp)}), then we need only check that \mu(\scI(\fp)) \le 2^{100a^3 + 10a} \mu(J). This follows immediately from \scI(\fp) \subset B(c(J'), 100 D^{s(J') + 1}) and measure-comparison.

From now on we assume J \not \subset B(\pc(\fp), 4 D^{\ps(\fp)}). Since \pc(\fp) \in \scI(\fp) \subset B(c(J'), 100 D^{s(J') + 1}), we have by eq-vol-sp-cube and the triangle inequality J \subset J' \subset B(c(J'), 4D^{s(J')}) \subset B(\pc(\fp), 104 D^{s(J') + 1}). In particular this implies 104 D^{s(J') + 1} > 4D^{\ps(\fp)}. By the triangle inequality we also have B(\pc(\fp), 104 D^{s(J') + 1}) \subset B(c(J), 204 D^{s(J') + 1}), so from measure-comparison, \mu( B(\pc(\fp), 104 D^{s(J') + 1})) \le 2^{200a^3 + 10a} \mu(J), which proves \fp satisfies the needed criteria with r=104 D^{s(J') + 1}.

1.5.14. Almost orthogonality of separated trees🔗

The main result of this subsection is the almost orthogonality estimate for operators associated to distinct trees in a forest in Lemma 1.98 below. We will deduce it from Lemmas Lemma 1.99 and Lemma 1.100, which are proven in Subsections [??] and [??], respectively. Before stating it, we introduce some relevant notation.

The adjoint of the operator T_{\fp} defined in definetp is given by T_{\fp}^* g(x) = \int_{E(\fp)} \overline{K_{\ps(\fp)}(y,x)} e(-\tQ(y)(x)+ \tQ(y)(y)) g(y) \, \mathrm{d}\mu(y).

Lemma1.95
L∃∀N
Used by 3
Hover a use site to preview it.

Uses Lemma 1.12. For each \fp \in \fP, we have T_{\fp}^* g = \mathbf{1}_{B(\pc(\fp), 5D^{\ps(\fp)})} T_{\fp}^* \mathbf{1}_{\scI(\fp)} g. For each \fu \in \fU and each \fp \in \fT(\fu), we have T_{\fp}^* g = \mathbf{1}_{\scI(\fu)} T_{\fp}^* \mathbf{1}_{\scI(\fu)} g.

Lean code for Lemma1.952 theorems
  • theorem TileStructure.Forest.adjoint_tile_support1.{u_1}TileStructure.Forest.adjoint_tile_support1.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {p : 𝔓 X} {f : X → ℂ} :
      adjointCarleson p f =
        (Metric.ball (𝔠 p) (5 * ↑(defaultD a) ^ 𝔰 p)).indicator (adjointCarleson p ((↑(𝓘 p)).indicator f))Part 1 of Lemma 7.4.1.
    Todo: update blueprint with precise properties needed on the function.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } :
      adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X fX → ℂ =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.5 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
          (adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X ((↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  fX → ℂ))
    theorem TileStructure.Forest.adjoint_tile_support1.{u_1}TileStructure.Forest.adjoint_tile_support1.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {p : 𝔓 X} {f : X → ℂ} :
      adjointCarleson p f =
        (Metric.ball (𝔠 p) (5 * ↑(defaultD a) ^ 𝔰 p)).indicator (adjointCarleson p ((↑(𝓘 p)).indicator f))Part 1 of Lemma 7.4.1.
    Todo: update blueprint with precise properties needed on the function. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } :
      adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X fX → ℂ =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.5 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                  𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
          (adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X
            ((↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  fX → ℂ))
    Part 1 of Lemma 7.4.1.
    Todo: update blueprint with precise properties needed on the function. 
  • theorem TileStructure.Forest.adjoint_tile_support2.{u_1}TileStructure.Forest.adjoint_tile_support2.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u p : 𝔓 X} {f : X → ℂ} (hu : u ∈ t) (hp : p ∈ (fun x ↦ t.𝔗 x) u) :
      adjointCarleson p f = (↑(𝓘 u)).indicator (adjointCarleson p ((↑(𝓘 u)).indicator f))Part 2 of Lemma 7.4.1.
    Todo: update blueprint with precise properties needed on the function.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hpp ∈ (fun x ↦ t.𝔗 x) u : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) :
      adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X fX → ℂ =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  (adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X ((↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  fX → ℂ))
    theorem TileStructure.Forest.adjoint_tile_support2.{u_1}TileStructure.Forest.adjoint_tile_support2.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u p : 𝔓 X} {f : X → ℂ} (hu : u ∈ t) (hp : p ∈ (fun x ↦ t.𝔗 x) u) :
      adjointCarleson p f = (↑(𝓘 u)).indicator (adjointCarleson p ((↑(𝓘 u)).indicator f))Part 2 of Lemma 7.4.1.
    Todo: update blueprint with precise properties needed on the function. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hpp ∈ (fun x ↦ t.𝔗 x) u : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) :
      adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X fX → ℂ =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
          (adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X
            ((↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  fX → ℂ))
    Part 2 of Lemma 7.4.1.
    Todo: update blueprint with precise properties needed on the function. 

Proof. By forest1, E(\fp) \subset \scI(\fp) \subset \scI(\fu). Thus by definetp* T_{\fp}^* g(x) = T_{\fp}^* (\mathbf{1}_{\scI(\fp)} g)(x) = \int_{E(\fp)} \overline{K_{\ps(\fp)}(y,x)} e(-\tQ(y)(x) + \tQ(y)(y)) \mathbf{1}_{\scI(\fp)}(y) g(y) \, \mathrm{d}\mu(y). If this integral is not 0, then there exists y \in \scI(\fp) such that K_{\ps(\fp)}(y,x) \ne 0. By supp-Ks, eq-vol-sp-cube and the triangle inequality, it follows that x \in B(\pc(\fp), 5 D^{\ps(\fp)}). Thus T_{\fp}^* g(x) = \mathbf{1}_{B(\pc(\fp), 5D^{\ps(\fp)})}(x) T_{\fp}^* (\mathbf{1}_{\scI(\fp)} g)(x). The second claimed equation follows now since \scI(\fp) \subset \scI(\fu) and by forest6 we have B(\pc(\fp), 5D^{\ps(\fp)}) \subset \scI(\fu).

Lemma1.96
L∃∀N
Used by 2
Hover a use site to preview it.
Preview
Lemma 1.97
Loading preview
Hover a use site to preview it.

Uses Lemma 1.92. For all bounded g supported on G we have that \left\| \sum_{\fp \in \fT(\fu)} T_{\fp}^* g\right\|_2 \le 2^{181a^3} \dens_1(\fT(\fu))^{1/2} \|g\|_2 \left\| \mathbf{1}_F \sum_{\fp \in \fT(\fu)} T_{\fp}^* g\right\|_2 \le 2^{282a^3} \dens_1(\fT(\fu))^{1/2} \dens_2(\fT(\fu))^{1/2} \|g\|_2.

Lean code for Lemma1.962 theorems
  • theorem TileStructure.Forest.adjoint_tree_estimate.{u_1}TileStructure.Forest.adjoint_tree_estimate.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {g : X → ℂ} (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume) (h2g : Function.support g ⊆ G)
      (hu : u ∈ t) :
      MeasureTheory.eLpNorm (adjointCarlesonSum ((fun x ↦ t.𝔗 x) u) g) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_3_1_1 a) * dens₁ ((fun x ↦ t.𝔗 x) u) ^ 2⁻¹ *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volumePart 1 of Lemma 7.4.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2gFunction.support g ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  gX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X) (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  (adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) gX → ℂ) 2
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_3_1_1TileStructure.Forest.C7_3_1_1 (a : ℕ) : NNRealThe constant used in `density_tree_bound1` and `adjoint_tree_estimate`.
    Has value `2 ^ (181 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.adjoint_tree_estimate.{u_1}TileStructure.Forest.adjoint_tree_estimate.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {g : X → ℂ} (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume) (h2g : Function.support g ⊆ G)
      (hu : u ∈ t) :
      MeasureTheory.eLpNorm (adjointCarlesonSum ((fun x ↦ t.𝔗 x) u) g) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_3_1_1 a) * dens₁ ((fun x ↦ t.𝔗 x) u) ^ 2⁻¹ *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volumePart 1 of Lemma 7.4.2. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2gFunction.support g ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  gX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X)
      (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
            ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) gX → ℂ)
          2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_3_1_1TileStructure.Forest.C7_3_1_1 (a : ℕ) : NNRealThe constant used in `density_tree_bound1` and `adjoint_tree_estimate`.
    Has value `2 ^ (181 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Part 1 of Lemma 7.4.2. 
  • theorem TileStructure.Forest.indicator_adjoint_tree_estimate.{u_1}TileStructure.Forest.indicator_adjoint_tree_estimate.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ}
      {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {g : X → ℂ} (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume) (h2g : Function.support g ⊆ G)
      (hu : u ∈ t) :
      MeasureTheory.eLpNorm (F.indicator (adjointCarlesonSum ((fun x ↦ t.𝔗 x) u) g)) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_3_1_2 a) * dens₁ ((fun x ↦ t.𝔗 x) u) ^ 2⁻¹ * dens₂ ((fun x ↦ t.𝔗 x) u) ^ 2⁻¹ *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volumePart 2 of Lemma 7.4.2. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2gFunction.support g ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  gX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X) (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (FSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  (adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) gX → ℂ)) 2
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_3_1_2TileStructure.Forest.C7_3_1_2 (a : ℕ) : NNRealThe constant used in `density_tree_bound2` and `indicator_adjoint_tree_estimate`.
    Has value `2 ^ (282 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            dens₂dens₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.indicator_adjoint_tree_estimate.{u_1}TileStructure.Forest.indicator_adjoint_tree_estimate.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ}
      {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {g : X → ℂ} (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume) (h2g : Function.support g ⊆ G)
      (hu : u ∈ t) :
      MeasureTheory.eLpNorm (F.indicator (adjointCarlesonSum ((fun x ↦ t.𝔗 x) u) g)) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_3_1_2 a) * dens₁ ((fun x ↦ t.𝔗 x) u) ^ 2⁻¹ * dens₂ ((fun x ↦ t.𝔗 x) u) ^ 2⁻¹ *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volumePart 2 of Lemma 7.4.2. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2gFunction.support g ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  gX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X)
      (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (FSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
            (adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
              ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) gX → ℂ))
          2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_3_1_2TileStructure.Forest.C7_3_1_2 (a : ℕ) : NNRealThe constant used in `density_tree_bound2` and `indicator_adjoint_tree_estimate`.
    Has value `2 ^ (282 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              dens₁dens₁.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            dens₂dens₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Part 2 of Lemma 7.4.2. 

Proof. By Lemma 1.92, we have for all bounded f and g with |g| \le \mathbf{1}_G that \left| \int_X \overline{\sum_{\fp\in \fT(\fu)} T_{\fp}^* g} f \,\mathrm{d}\mu \right| = \left| \int_X \overline{g} \sum_{\fp \in \fT(\fu)} T_{\fp} f \,\mathrm{d}\mu \right| \le 2^{181a^3} \dens_1(\fT(\fu))^{1/2} \|g\|_2 \|f\|_2. Let f = \sum_{\fp \in \fT(\fu)} T_{\fp}^* g. Since |g| \le \mathbf{1}_G, f is bounded and has bounded support. In particular \|f\|_2 < \infty. Dividing eq-adjoint-bound by \|f\|_2 completes the proof.

The proof of the second part is similar with f = \mathbf{1}_F \sum_{\fp \in \fT(\fu)} T_{\fp}^* g.

We define S_{2,\fu}g := \left|\sum_{\fp \in \fT(\fu)} T_{\fp}^*g \right| + M_{\mathcal{B},1}g + |g|.

Lemma1.97
L∃∀Nused by 1

Uses Lemma 1.96. We have for all \fu \in \fU and all bounded g supported on G \|S_{2, \fu} g\|_2 \le 2^{182a^3} \|g\|_2.

Lean code for Lemma1.971 theorem
  • theorem TileStructure.Forest.adjoint_tree_control.{u_1}TileStructure.Forest.adjoint_tree_control.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {f : X → ℂ} (hu : u ∈ t) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume)
      (h2f : Function.support f ⊆ G) :
      MeasureTheory.eLpNorm (fun x ↦ t.adjointBoundaryOperator u f x) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_4_3 a) * MeasureTheory.eLpNorm f 2 MeasureTheory.volumeLemma 7.4.3.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2fFunction.support f ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  fX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  (fun xX  tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3.  u𝔓 X fX → ℂ xX) 2
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_4_3TileStructure.Forest.C7_4_3 (a : ℕ) : NNRealThe constant used in `adjoint_tree_control`.
    Has value `2 ^ (182 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.adjoint_tree_control.{u_1}TileStructure.Forest.adjoint_tree_control.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} {u : 𝔓 X}
      {f : X → ℂ} (hu : u ∈ t) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume)
      (h2f : Function.support f ⊆ G) :
      MeasureTheory.eLpNorm (fun x ↦ t.adjointBoundaryOperator u f x) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_4_3 a) * MeasureTheory.eLpNorm f 2 MeasureTheory.volumeLemma 7.4.3. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2fFunction.support f ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  fX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (fun xX 
            tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3.  u𝔓 X fX → ℂ xX)
          2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_4_3TileStructure.Forest.C7_4_3 (a : ℕ) : NNRealThe constant used in `adjoint_tree_control`.
    Has value `2 ^ (182 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fX → ℂ 2
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Lemma 7.4.3. 

Proof. This follows immediately from Minkowski's inequality, Theorem 1.9 and Lemma 1.96, using that a \ge 4.

Now we are ready to state the main result of this subsection.

Lemma1.98
L∃∀Nused by 1

Uses Lemma 1.99 and Lemma 1.100. For any \fu_1 \ne \fu_2 \in \fU and all bounded g_1, g_2 with bounded support, we have \left| \int_X \sum_{\fp_1 \in \fT(\fu_1)} \sum_{\fp_2 \in \fT(\fu_2)} T^*_{\fp_1}g_1 \overline{T^*_{\fp_2}g_2 }\,\mathrm{d}\mu \right| \le 2^{512a^3-4n} \prod_{j =1}^2 \| S_{2, \fu_j} g_j\|_{L^2(\scI(\fu_1) \cap \scI(\fu_2))}.

Lean code for Lemma1.981 theorem
  • complete
    theorem TileStructure.Forest.correlation_separated_trees.{u_1}TileStructure.Forest.correlation_separated_trees.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {g₁ g₂ : X → ℂ} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂)
      (hg₁ : MeasureTheory.BoundedCompactSupport g₁ MeasureTheory.volume)
      (hg₂ : MeasureTheory.BoundedCompactSupport g₂ MeasureTheory.volume) :
      ‖∫ (x : X),
            adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₁) g₁ x *
              (starRingEnd ℂ) (adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂) g₂ x)‖ₑ ≤
        ↑(TileStructure.Forest.C7_4_4 a n) *
            MeasureTheory.eLpNorm (fun x ↦ (↑(𝓘 u₁) ∩ ↑(𝓘 u₂)).indicator (t.adjointBoundaryOperator u₁ g₁) x) 2
              MeasureTheory.volume *
          MeasureTheory.eLpNorm (fun x ↦ (↑(𝓘 u₁) ∩ ↑(𝓘 u₂)).indicator (t.adjointBoundaryOperator u₂ g₂) x) 2
            MeasureTheory.volumeLemma 7.4.4  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {g₁X → ℂ g₂X → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (hg₁MeasureTheory.BoundedCompactSupport g₁ MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  g₁X → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hg₂MeasureTheory.BoundedCompactSupport g₂ MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  g₂X → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X) g₁X → ℂ xX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. )
                (adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X) g₂X → ℂ xX)‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_4_4TileStructure.Forest.C7_4_4 (a n : ℕ) : NNRealThe constant used in `correlation_separated_trees`.
    Has value `2 ^ (512 * a ^ 3 - 4 * n)` in the blueprint.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
              (fun xX 
                (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X) Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X))Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`..indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
                  (tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3.  u₁𝔓 X g₁X → ℂ) xX)
              2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
            (fun xX 
              (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X) Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X))Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`..indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
                (tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3.  u₂𝔓 X g₂X → ℂ) xX)
            2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.correlation_separated_trees.{u_1}TileStructure.Forest.correlation_separated_trees.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {g₁ g₂ : X → ℂ} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂)
      (hg₁ : MeasureTheory.BoundedCompactSupport g₁ MeasureTheory.volume)
      (hg₂ : MeasureTheory.BoundedCompactSupport g₂ MeasureTheory.volume) :
      ‖∫ (x : X),
            adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₁) g₁ x *
              (starRingEnd ℂ) (adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂) g₂ x)‖ₑ ≤
        ↑(TileStructure.Forest.C7_4_4 a n) *
            MeasureTheory.eLpNorm (fun x ↦ (↑(𝓘 u₁) ∩ ↑(𝓘 u₂)).indicator (t.adjointBoundaryOperator u₁ g₁) x) 2
              MeasureTheory.volume *
          MeasureTheory.eLpNorm (fun x ↦ (↑(𝓘 u₁) ∩ ↑(𝓘 u₂)).indicator (t.adjointBoundaryOperator u₂ g₂) x) 2
            MeasureTheory.volumeLemma 7.4.4 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {g₁X → ℂ g₂X → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (hg₁MeasureTheory.BoundedCompactSupport g₁ MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  g₁X → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hg₂MeasureTheory.BoundedCompactSupport g₂ MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  g₂X → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
                ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X) g₁X → ℂ xX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. )
                (adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
                  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X) g₂X → ℂ
                  xX)‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_4_4TileStructure.Forest.C7_4_4 (a n : ℕ) : NNRealThe constant used in `correlation_separated_trees`.
    Has value `2 ^ (512 * a ^ 3 - 4 * n)` in the blueprint.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
              (fun xX 
                (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X) Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X))Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`..indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
                  (tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3. 
                    u₁𝔓 X g₁X → ℂ)
                  xX)
              2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
            (fun xX 
              (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X) Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X))Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`..indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
                (tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3.  u₂𝔓 X
                  g₂X → ℂ)
                xX)
            2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Lemma 7.4.4 

Proof of Lemma 1.98. By Lemma 1.95 and dyadicproperty, the left hand side eq-lhs-sep-tree is 0 unless \scI(\fu_1) \subset \scI(\fu_2) or \scI(\fu_2) \subset \scI(\fu_1). Without loss of generality we assume that \scI(\fu_1) \subset \scI(\fu_2).

Define \mathfrak{S} := \{\fp \in \fT(\fu_1) \cup \fT(\fu_2) \ : \ d_{\fp}(\fcc(\fu_1), \fcc(\fu_2)) \ge 2^{Zn/2}\}. Lemma 1.98 follows by combining the definition defineZ of Z with the following two lemmas.

Lemma1.99
L∃∀Nused by 1

Uses Theorem 1.8, Lemma 1.103, Lemma 1.105, and Lemma 1.112. We have for all \fu_1 \ne \fu_2 \in \fU with \scI(\fu_1) \subset \scI(\fu_2) and all bounded g_1, g_2 with bounded support \left| \int_X \sum_{\fp_1 \in \fT(\fu_1)} \sum_{\fp_2 \in \fT(\fu_2) \cap \mathfrak{S}} T^*_{\fp_1}g_1 \overline{T^*_{\fp_2}g_2 }\,\mathrm{d}\mu \right| \le 2^{511a^3} 2^{-Zn/(4a^2 + 2a^3)} \prod_{j =1}^2 \| S_{2, \fu_j} g_j\|_{L^2(\scI(\fu_1))}.

Lean code for Lemma1.991 theorem
  • theorem TileStructure.Forest.correlation_distant_tree_parts.{u_1}TileStructure.Forest.correlation_distant_tree_parts.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f₁ f₂ : X → ℂ} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hf₁ : MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume)
      (hf₂ : MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume) :
      ‖∫ (x : X),
            adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₁) f₁ x *
              (starRingEnd ℂ) (adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂) f₂ x)‖ₑ ≤
        ↑(TileStructure.Forest.C7_4_5 a n) *
            MeasureTheory.eLpNorm (fun x ↦ (↑(𝓘 u₁)).indicator (t.adjointBoundaryOperator u₁ f₁) x) 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm (fun x ↦ (↑(𝓘 u₁)).indicator (t.adjointBoundaryOperator u₂ f₂) x) 2 MeasureTheory.volumeLemma 7.4.5  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {f₁X → ℂ f₂X → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hf₁MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₁X → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hf₂MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₂X → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X) f₁X → ℂ xX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. )
                (adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. f₂X → ℂ
                  xX)‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_4_5TileStructure.Forest.C7_4_5 (a n : ℕ) : NNRealThe constant used in `correlation_distant_tree_parts`.
    Has value `2 ^ (511 * a ^ 3) * 2 ^ (-(Z n) / (4a^2 + 2a^3))` in the blueprint.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
              (fun xX 
                (↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  (tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3.  u₁𝔓 X f₁X → ℂ) xX)
              2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
            (fun xX 
              (↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  (tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3.  u₂𝔓 X f₂X → ℂ) xX)
            2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.correlation_distant_tree_parts.{u_1}TileStructure.Forest.correlation_distant_tree_parts.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f₁ f₂ : X → ℂ} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hf₁ : MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume)
      (hf₂ : MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume) :
      ‖∫ (x : X),
            adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₁) f₁ x *
              (starRingEnd ℂ) (adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂) f₂ x)‖ₑ ≤
        ↑(TileStructure.Forest.C7_4_5 a n) *
            MeasureTheory.eLpNorm (fun x ↦ (↑(𝓘 u₁)).indicator (t.adjointBoundaryOperator u₁ f₁) x) 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm (fun x ↦ (↑(𝓘 u₁)).indicator (t.adjointBoundaryOperator u₂ f₂) x) 2 MeasureTheory.volumeLemma 7.4.5 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {f₁X → ℂ f₂X → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hf₁MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₁X → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hf₂MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₂X → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
                ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X) f₁X → ℂ xX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. )
                (adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
                  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.
                    tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.
                  f₂X → ℂ xX)‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_4_5TileStructure.Forest.C7_4_5 (a n : ℕ) : NNRealThe constant used in `correlation_distant_tree_parts`.
    Has value `2 ^ (511 * a ^ 3) * 2 ^ (-(Z n) / (4a^2 + 2a^3))` in the blueprint.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
              (fun xX 
                (↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
                  (tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3. 
                    u₁𝔓 X f₁X → ℂ)
                  xX)
              2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
            (fun xX 
              (↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
                (tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3.  u₂𝔓 X
                  f₂X → ℂ)
                xX)
            2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Lemma 7.4.5 
Lemma1.100
L∃∀Nused by 1

Uses Lemma 1.88, Lemma 1.113, and Lemma 1.114. We have for all \fu_1 \ne \fu_2 \in \fU with \scI(\fu_1) \subset \scI(\fu_2) and all bounded g_1, g_2 with bounded support \left| \int_X \sum_{\fp_1 \in \fT(\fu_1)} \sum_{\fp_2 \in \fT(\fu_2) \setminus \mathfrak{S}} T^*_{\fp_1}g_1 \overline{T^*_{\fp_2}g_2 }\,\mathrm{d}\mu \right| \le 2^{232a^3+21a+5} 2^{-\frac{25}{101a}Zn\kappa} \prod_{j=1}^2 \|S_{2, \fu_j} g_j\|_{L^2(\scI(\fu_1))}.

Lean code for Lemma1.1001 theorem
  • complete
    theorem TileStructure.Forest.correlation_near_tree_parts.{u_1}TileStructure.Forest.correlation_near_tree_parts.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f₁ f₂ : X → ℂ} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hf₁ : MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume)
      (hf₂ : MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume) :
      ‖∫ (x : X),
            adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₁) f₁ x *
              (starRingEnd ℂ) (adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂) f₂ x)‖ₑ ≤
        ↑(TileStructure.Forest.C7_4_6 a n) *
            MeasureTheory.eLpNorm (fun x ↦ (↑(𝓘 u₁)).indicator (t.adjointBoundaryOperator u₁ f₁) x) 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm (fun x ↦ (↑(𝓘 u₁)).indicator (t.adjointBoundaryOperator u₂ f₂) x) 2 MeasureTheory.volumeLemma 7.4.6  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {f₁X → ℂ f₂X → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hf₁MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₁X → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hf₂MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₂X → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X) f₁X → ℂ xX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. )
                (adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  (SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. f₂X → ℂ
                  xX)‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_4_6TileStructure.Forest.C7_4_6 (a n : ℕ) : NNRealThe constant used in `correlation_near_tree_parts`.
    Has value `2 ^ (232 * a ^ 3 + 21 * a + 5- 25/(101a) * Z n κ)` in the blueprint.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
              (fun xX 
                (↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  (tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3.  u₁𝔓 X f₁X → ℂ) xX)
              2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
            (fun xX 
              (↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  (tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3.  u₂𝔓 X f₂X → ℂ) xX)
            2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.correlation_near_tree_parts.{u_1}TileStructure.Forest.correlation_near_tree_parts.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f₁ f₂ : X → ℂ} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hf₁ : MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume)
      (hf₂ : MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume) :
      ‖∫ (x : X),
            adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₁) f₁ x *
              (starRingEnd ℂ) (adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂) f₂ x)‖ₑ ≤
        ↑(TileStructure.Forest.C7_4_6 a n) *
            MeasureTheory.eLpNorm (fun x ↦ (↑(𝓘 u₁)).indicator (t.adjointBoundaryOperator u₁ f₁) x) 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm (fun x ↦ (↑(𝓘 u₁)).indicator (t.adjointBoundaryOperator u₂ f₂) x) 2 MeasureTheory.volumeLemma 7.4.6 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {f₁X → ℂ f₂X → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hf₁MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₁X → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hf₂MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₂X → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
                ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X) f₁X → ℂ xX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. )
                (adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
                  (SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`.
                    tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`.
                  f₂X → ℂ xX)‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_4_6TileStructure.Forest.C7_4_6 (a n : ℕ) : NNRealThe constant used in `correlation_near_tree_parts`.
    Has value `2 ^ (232 * a ^ 3 + 21 * a + 5- 25/(101a) * Z n κ)` in the blueprint.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
              (fun xX 
                (↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
                  (tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3. 
                    u₁𝔓 X f₁X → ℂ)
                  xX)
              2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
            (fun xX 
              (↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
                (tTileStructure.Forest X n.adjointBoundaryOperatorTileStructure.Forest.adjointBoundaryOperator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (u : 𝔓 X)
      (f : X → ℂ) (x : X) : ENNRealThe operator `S_{2,𝔲} f(x)`, given above Lemma 7.4.3.  u₂𝔓 X
                  f₂X → ℂ)
                xX)
            2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Lemma 7.4.6 

In the proofs of both lemmas, we will need the following observation.

Lemma1.101
L∃∀N

Let \fu_1 \ne \fu_2 \in \fU with \scI(\fu_1) \subset \scI(\fu_2). If \fp \in \fT(\fu_1) \cup \fT(\fu_2) with \scI(\fp) \cap \scI(\fu_1) \ne \emptyset, then \fp \in \mathfrak{S}. In particular, we have \fT(\fu_1) \subset \mathfrak{S}.

Lean code for Lemma1.1012 theorems
  • theorem TileStructure.Forest.𝔗_subset_𝔖₀.{u_1}TileStructure.Forest.𝔗_subset_𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u₁ u₂ : 𝔓 X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂)
      (h2u : 𝓘 u₁ ≤ 𝓘 u₂) : (fun x ↦ t.𝔗 x) u₁ ⊆ t.𝔖₀ u₁ u₂Part 2 of Lemma 7.4.7.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) :
      (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X
    theorem TileStructure.Forest.𝔗_subset_𝔖₀.{u_1}TileStructure.Forest.𝔗_subset_𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u₁ u₂ : 𝔓 X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂)
      (h2u : 𝓘 u₁ ≤ 𝓘 u₂) : (fun x ↦ t.𝔗 x) u₁ ⊆ t.𝔖₀ u₁ u₂Part 2 of Lemma 7.4.7. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) :
      (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X
    Part 2 of Lemma 7.4.7. 
  • theorem TileStructure.Forest.overlap_implies_distance.{u_1}TileStructure.Forest.overlap_implies_distance.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ p : 𝔓 X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hp : p ∈ (fun x ↦ t.𝔗 x) u₁ ∪ (fun x ↦ t.𝔗 x) u₂) (hpu₁ : ¬Disjoint ↑(𝓘 p) ↑(𝓘 u₁)) : p ∈ t.𝔖₀ u₁ u₂Part 1 of Lemma 7.4.7.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hpp ∈ (fun x ↦ t.𝔗 x) u₁ ∪ (fun x ↦ t.𝔗 x) u₂ : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X Union.union.{u} {α : Type u} [self : Union α] : α → α → α`a ∪ b` is the union of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∪` in identifiers is `union`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X)
      (hpu₁¬Disjoint ↑(𝓘 p) ↑(𝓘 u₁) : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X) (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)) : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X
    theorem TileStructure.Forest.overlap_implies_distance.{u_1}TileStructure.Forest.overlap_implies_distance.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ p : 𝔓 X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hp : p ∈ (fun x ↦ t.𝔗 x) u₁ ∪ (fun x ↦ t.𝔗 x) u₂) (hpu₁ : ¬Disjoint ↑(𝓘 p) ↑(𝓘 u₁)) : p ∈ t.𝔖₀ u₁ u₂Part 1 of Lemma 7.4.7. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hpp ∈ (fun x ↦ t.𝔗 x) u₁ ∪ (fun x ↦ t.𝔗 x) u₂ :
        p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X Union.union.{u} {α : Type u} [self : Union α] : α → α → α`a ∪ b` is the union of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∪` in identifiers is `union`.
            (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X)
      (hpu₁¬Disjoint ↑(𝓘 p) ↑(𝓘 u₁) : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X p𝔓 X) (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)) :
      p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X
    Part 1 of Lemma 7.4.7. 

Proof. Suppose first that \fp \in \fT(\fu_1). Then \scI(\fp) \subset \scI(\fu_1) \subset \scI(\fu_2), by forest1. Thus we have by the separation condition forest5, eq-freq-comp-ball, forest1 and the triangle inequality d_{\fp}(\fcc(\fu_1), \fcc(\fu_2)) \ge d_{\fp}(\fcc(\fp), \fcc(\fu_2)) - d_{\fp}(\fcc(\fp), \fcc(\fu_1)) \ge 2^{Z(n+1)} - 4 \ge 2^{Zn/2}, using that Z= 2^{12a}\ge 4. Hence \fp \in \mathfrak{S}.

Suppose now that \fp \in \fT(\fu_2). If \scI(\fp) \subset \scI(\fu_1), then the same argument as above with \fu_1 and \fu_2 swapped shows \fp \in \mathfrak{S}. If \scI(\fp) \not \subset \scI(\fu_1) then, by dyadicproperty, \scI(\fu_1) \subset \scI(\fp). Pick \fp' \in \fT(\fu_1), we have \scI(\fp') \subset \scI(\fu_1) \subset \scI(\fp). Hence, by Lemma 1.11 and the first paragraph d_{\fp}(\fcc(\fu_1), \fcc(\fu_2)) \ge d_{\fp'}(\fcc(\fu_1), \fcc(\fu_2)) \ge 2^{Zn}, so \fp \in \mathfrak{S}.

To simplify the notation, we will write at various places throughout the proof of Lemmas Lemma 1.99 and Lemma 1.100 for a subset \fC \subset \fP T_{\fC} f := \sum_{\fp \in \fC} T_{\fp} f\,, \quad\quad T_{\fC}^* g := \sum_{\fp\in\fC} T_{\fp}^* g\,.

1.5.15. Proof of the Tiles with large separation Lemma🔗

Lemma 1.99 follows from the van der Corput estimate in Theorem 1.8. We apply this proposition in [??]. To prepare this application, we first, in [??], construct a suitable partition of unity, and show then, in [??] the Holder estimates needed to apply Theorem 1.8.

1.5.15.1. A partition of unity🔗

Define \mathcal{J}' = \{J \in \mathcal{J}(\mathfrak{S}) \ : \ J \subset \scI(\fu_1)\}.

Lemma1.102
L∃∀Nused by 1

Uses Lemma 1.83. We have that \scI(\fu_1) = \dot{\bigcup_{J \in \mathcal{J}'}} J.

Lean code for Lemma1.1022 theorems
  • theorem TileStructure.Forest.union_𝓙₅.{u_1}TileStructure.Forest.union_𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u₁ u₂ : 𝔓 X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂)
      (h2u : 𝓘 u₁ ≤ 𝓘 u₂) : ⋃ J ∈ t.𝓙₅ u₁ u₂, ↑J = ↑(𝓘 u₁)Part of Lemma 7.5.1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) :
       JGrid X  tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X, JGrid X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)
    theorem TileStructure.Forest.union_𝓙₅.{u_1}TileStructure.Forest.union_𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u₁ u₂ : 𝔓 X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂)
      (h2u : 𝓘 u₁ ≤ 𝓘 u₂) : ⋃ J ∈ t.𝓙₅ u₁ u₂, ↑J = ↑(𝓘 u₁)Part of Lemma 7.5.1. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) :
       JGrid X  tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X, JGrid X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)
    Part of Lemma 7.5.1. 
  • theorem TileStructure.Forest.pairwiseDisjoint_𝓙₅.{u_1}TileStructure.Forest.pairwiseDisjoint_𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} : (t.𝓙₅ u₁ u₂).PairwiseDisjoint fun I ↦ ↑IPart of Lemma 7.5.1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} :
      (tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely.  fun IGrid X  IGrid X
    theorem TileStructure.Forest.pairwiseDisjoint_𝓙₅.{u_1}TileStructure.Forest.pairwiseDisjoint_𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} : (t.𝓙₅ u₁ u₂).PairwiseDisjoint fun I ↦ ↑IPart of Lemma 7.5.1. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} :
      (tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely.  fun IGrid X  IGrid X
    Part of Lemma 7.5.1. 

Proof. By Lemma 1.83, it remains only to show that each J \in \mathcal{J}(\mathfrak{S}) with J \cap \scI(\fu_1) \ne \emptyset is in \mathcal{J}'. But if J \notin \mathcal{J}', then by dyadicproperty \scI(\fu_1) \subset J. Pick \fp \in \fT(\fu_1) \subset \mathfrak{S}. Then \scI(\fp) \subset J. This contradicts the definition of \mathcal{J}(\mathfrak{S}).

For cubes J \in \mathcal{D}, denote B(J) := B(c(J), 8D^{s(J)}). The main result of this subsubsection is the following.

Lemma1.103
L∃∀Nused by 1

Uses Lemma 1.102 and Lemma 1.104. There exists a family of functions \chi_J, J \in \mathcal{J}' such that \mathbf{1}_{\scI(\fu_1)} = \sum_{J \in \mathcal{J}'} \chi_J, and for all J \in \mathcal{J}' and all y,y' \in \scI(\fu_1) 0 \leq \chi_J(y) \leq \mathbf{1}_{B(J)}(y), |\chi_J(y) - \chi_J(y')| \le 2^{227a^3} \frac{\rho(y,y')}{D^{s(J)}}.

Lean code for Lemma1.1033 theorems
  • theorem TileStructure.Forest.sum_χ.{u_1}TileStructure.Forest.sum_χ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u₁ u₂ : 𝔓 X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (x : X) : ∑ J ∈ (t.𝓙₅ u₁ u₂).toFinset, t.χ u₁ u₂ J x = (↑(𝓘 u₁)).indicator 1 xPart of Lemma 7.5.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) (xX : XType u_1) :
       JGrid X  (tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X).toFinsetSet.toFinset.{u_1} {α : Type u_1} (s : Set α) [Fintype ↑s] : Finset αConstruct a finset enumerating a set `s`, given a `Fintype` instance. , tTileStructure.Forest X n.χTileStructure.Forest.χ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) (J : Grid X) (x : X) : NNRealThe definition of χ, defined in the proof of Lemma 7.5.2  u₁𝔓 X u₂𝔓 X JGrid X xX =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. (↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX
    theorem TileStructure.Forest.sum_χ.{u_1}TileStructure.Forest.sum_χ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u₁ u₂ : 𝔓 X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (x : X) : ∑ J ∈ (t.𝓙₅ u₁ u₂).toFinset, t.χ u₁ u₂ J x = (↑(𝓘 u₁)).indicator 1 xPart of Lemma 7.5.2. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) (xX : XType u_1) :
       JGrid X  (tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X).toFinsetSet.toFinset.{u_1} {α : Type u_1} (s : Set α) [Fintype ↑s] : Finset αConstruct a finset enumerating a set `s`, given a `Fintype` instance. ,
          tTileStructure.Forest X n.χTileStructure.Forest.χ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) (J : Grid X) (x : X) : NNRealThe definition of χ, defined in the proof of Lemma 7.5.2  u₁𝔓 X u₂𝔓 X JGrid X xX =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX
    Part of Lemma 7.5.2. 
  • theorem TileStructure.Forest.χ_le_indicator.{u_1}TileStructure.Forest.χ_le_indicator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u₁ u₂ : 𝔓 X} {x : X} {J : Grid X} (hJ : J ∈ t.𝓙₅ u₁ u₂) :
      t.χ u₁ u₂ J x ≤ (Metric.ball (c J) (8 * ↑(defaultD a) ^ s J)).indicator 1 xPart of Lemma 7.5.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX : XType u_1}
      {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X) :
      tTileStructure.Forest X n.χTileStructure.Forest.χ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) (J : Grid X) (x : X) : NNRealThe definition of χ, defined in the proof of Lemma 7.5.2  u₁𝔓 X u₂𝔓 X JGrid X xX LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX
    theorem TileStructure.Forest.χ_le_indicator.{u_1}TileStructure.Forest.χ_le_indicator.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u₁ u₂ : 𝔓 X} {x : X} {J : Grid X} (hJ : J ∈ t.𝓙₅ u₁ u₂) :
      t.χ u₁ u₂ J x ≤ (Metric.ball (c J) (8 * ↑(defaultD a) ^ s J)).indicator 1 xPart of Lemma 7.5.2. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX : XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X) :
      tTileStructure.Forest X n.χTileStructure.Forest.χ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) (J : Grid X) (x : X) : NNRealThe definition of χ, defined in the proof of Lemma 7.5.2  u₁𝔓 X u₂𝔓 X JGrid X xX LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                  ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
          1 xX
    Part of Lemma 7.5.2. 
  • theorem TileStructure.Forest.dist_χ_le.{u_1}TileStructure.Forest.dist_χ_le.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u₁ u₂ : 𝔓 X} {x x' : X} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t)
      (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂) (hJ : J ∈ t.𝓙₅ u₁ u₂) (mx : x ∈ 𝓘 u₁) (mx' : x' ∈ 𝓘 u₁) :
      dist (t.χ u₁ u₂ J x) (t.χ u₁ u₂ J x') ≤ ↑(TileStructure.Forest.C7_5_2 a) * dist x x' / ↑(defaultD a) ^ s JPart of Lemma 7.5.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1}
      {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X) (mxx ∈ 𝓘 u₁ : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)
      (mx'x' ∈ 𝓘 u₁ : x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X) :
      distDist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  (tTileStructure.Forest X n.χTileStructure.Forest.χ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) (J : Grid X) (x : X) : NNRealThe definition of χ, defined in the proof of Lemma 7.5.2  u₁𝔓 X u₂𝔓 X JGrid X xX) (tTileStructure.Forest X n.χTileStructure.Forest.χ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) (J : Grid X) (x : X) : NNRealThe definition of χ, defined in the proof of Lemma 7.5.2  u₁𝔓 X u₂𝔓 X JGrid X x'X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_5_2TileStructure.Forest.C7_5_2 (a : ℕ) : NNRealThe constant used in `dist_χ_le`.
    Has value `2 ^ (227 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. distDist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  xX x'X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X
    theorem TileStructure.Forest.dist_χ_le.{u_1}TileStructure.Forest.dist_χ_le.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u₁ u₂ : 𝔓 X} {x x' : X} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t)
      (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂) (hJ : J ∈ t.𝓙₅ u₁ u₂) (mx : x ∈ 𝓘 u₁) (mx' : x' ∈ 𝓘 u₁) :
      dist (t.χ u₁ u₂ J x) (t.χ u₁ u₂ J x') ≤ ↑(TileStructure.Forest.C7_5_2 a) * dist x x' / ↑(defaultD a) ^ s JPart of Lemma 7.5.2. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X) (mxx ∈ 𝓘 u₁ : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)
      (mx'x' ∈ 𝓘 u₁ : x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X) :
      distDist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  (tTileStructure.Forest X n.χTileStructure.Forest.χ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) (J : Grid X) (x : X) : NNRealThe definition of χ, defined in the proof of Lemma 7.5.2  u₁𝔓 X u₂𝔓 X JGrid X xX) (tTileStructure.Forest X n.χTileStructure.Forest.χ.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) (J : Grid X) (x : X) : NNRealThe definition of χ, defined in the proof of Lemma 7.5.2  u₁𝔓 X u₂𝔓 X JGrid X x'X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_5_2TileStructure.Forest.C7_5_2 (a : ℕ) : NNRealThe constant used in `dist_χ_le`.
    Has value `2 ^ (227 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            distDist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  xX x'X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
          (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X
    Part of Lemma 7.5.2. 

In the proof, we will use the following auxiliary lemma.

Lemma1.104
L∃∀Nused by 1

If J, J' \in \mathcal{J'} with B(J) \cap B(J') \ne \emptyset, then |s(J) - s(J')| \le 1.

Lean code for Lemma1.1041 theorem
  • theorem TileStructure.Forest.moderate_scale_change.{u_1}TileStructure.Forest.moderate_scale_change.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {J J' : Grid X} (hJ : J ∈ t.𝓙₅ u₁ u₂) (hJ' : J' ∈ t.𝓙₅ u₁ u₂)
      (hd : ¬Disjoint (Metric.ball (c J) (8 * ↑(defaultD a) ^ s J)) (Metric.ball (c J') (8 * ↑(defaultD a) ^ s J'))) :
      s J - 1 ≤ s J'Lemma 7.5.3 (stated somewhat differently).  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X J'Grid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X) (hJ'J' ∈ t.𝓙₅ u₁ u₂ : J'Grid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hd¬Disjoint (Metric.ball (c J) (8 * ↑(defaultD a) ^ s J)) (Metric.ball (c J') (8 * ↑(defaultD a) ^ s J')) :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
            (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X J'Grid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ J'Grid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)) :
      ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). 1 LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ J'Grid X
    theorem TileStructure.Forest.moderate_scale_change.{u_1}TileStructure.Forest.moderate_scale_change.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {J J' : Grid X} (hJ : J ∈ t.𝓙₅ u₁ u₂) (hJ' : J' ∈ t.𝓙₅ u₁ u₂)
      (hd : ¬Disjoint (Metric.ball (c J) (8 * ↑(defaultD a) ^ s J)) (Metric.ball (c J') (8 * ↑(defaultD a) ^ s J'))) :
      s J - 1 ≤ s J'Lemma 7.5.3 (stated somewhat differently). 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X J'Grid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hJ'J' ∈ t.𝓙₅ u₁ u₂ : J'Grid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hd¬Disjoint (Metric.ball (c J) (8 * ↑(defaultD a) ^ s J)) (Metric.ball (c J') (8 * ↑(defaultD a) ^ s J')) :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments. 
            (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
            (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X J'Grid X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ J'Grid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)) :
      ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). 1 LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ J'Grid X
    Lemma 7.5.3 (stated somewhat differently). 

Proof of Lemma 1.103. For each cube J \in \mathcal{J} let \tilde\chi_J(y) = \mathbf{1}_{\scI(\fu_1)}(y)\max\{0, 8 - D^{-s(J)} \rho(y, c(J))\}, and set a(y) = \sum_{J \in \mathcal{J}'} \tilde \chi_J(y). We define \chi_J(y) := \frac{\tilde \chi_J(y)}{a(y)}. Then, due to forest6 and def-BJ, the properties eq-pao-1 and eq-pao-2 are clearly true. Estimate eq-pao-3 follows from eq-pao-2 if y, y' \notin B(J). Thus we can assume that y \in B(J). We have by the triangle inequality |\chi_J(y) - \chi_J(y')| \le \frac{|\tilde \chi_J(y) - \tilde \chi_J(y')|}{a(y)} + \frac{\tilde \chi_J(y')|a(y) - a(y')|}{a(y)a(y')} Since \tilde \chi_J(z) \ge 4 for all z \in B(c(J),4D^{s(J)}) \supset J and by Lemma 1.102, we have that a(z) \ge 4 for all z \in \scI(\fu_1). So we can estimate the above further by \le 2^{-2}(|\tilde \chi_J(y) - \tilde \chi_J(y')| + \tilde \chi_J(y')|a(y) - a(y')|).

If y' \notin B(\pc(\fp), 8D^{\ps(\fp)}) then the second summand vanishes. Else, we can estimate the above, using also that |\tilde \chi_J(y')| \le 8, by \le 2^{-2} |\tilde \chi_J(y) - \tilde \chi_J(y')| + 2 \sum_{\substack{J' \in \mathcal{J}'\\ B(J') \cap B(J) \ne \emptyset}}|\tilde \chi_{J'}(y) - \tilde \chi_{J'} (y')|. By the triangle inequality, we have for all dyadic cubes I |\tilde \chi_I(y) - \tilde \chi_I(y')| \le \rho(y, y') D^{-s(I)}. Using this above, we obtain |\chi_J(y) - \chi_J(y')| \le \rho(y,y') \Big( \frac{1}{4} D^{-s(J)} + 2 \sum_{\substack{J' \in \mathcal{J}'\\ B(J') \cap B(J) \ne \emptyset}} D^{-s(J')}\Big). By Lemma 1.104, this is at most \frac{\rho(y,y')}{D^{s(J)}} \left( \frac{1}{4} + 2D |\{J' \in \mathcal{J}' \ : \ B(J') \cap B(J) \ne \emptyset\}|\right).

By eq-vol-sp-cube and Lemma 1.102, the balls B(c(J'), \frac{1}{4} D^{s(J')}) are pairwise disjoint. By the triangle inequality and Lemma 1.104, each such ball for J' in the set of the last display is contained in B(c(J), 9 D^{s(J) + 1}). By the doubling property doublingx, we further have \mu(B(c(J), 9 D^{s(J) + 1})) \le 2^{200a^3 + 7a} \mu\Big(B(c(J'), \frac{1}{4}D^{s(J')})\Big) for each such ball. Thus |\{J' \in \mathcal{J}' \ : \ B(J') \cap B(J) \ne \emptyset\}| \le 2^{200a^3 + 7a}. Recalling that D=2^{100a^2}, we obtain \frac{1}{4} + 2D |\{J' \in \mathcal{J}' \ : \ B(J') \cap B(J) \ne \emptyset\}|\leq 2^{200a^3 + 100a^2 + 7a + 2}. Since a\ge 4, eq-pao-3 follows.

Proof of Lemma 1.104. Suppose that s(J') < s(J) - 1. Then s(J) > -S. Thus, by the definition of \mathcal{J}' there exists no \fp \in \mathfrak{S} with \scI(\fp) \subset B(c(J), 100D^{s(J) + 1}). Since s(J') < s(J), there exists a cube J'' \in \mathcal{D} with J \subset J'' and s(J'') = s(J') + 1. By the definition of \mathcal{J}', there exists a tile \fp \in \mathfrak{S} with \scI(\fp) \subset B(c(J''), 100 D^{s(J')+2}). But by the triangle inequality and defineD, we have B(c(J''), 100 D^{s(J')+2}) \subset B(c(J), 100D^{s(J) + 1}), which contradicts eq-tile-incl-1 and tile-incl-2.

1.5.15.2. Holder estimates for adjoint tree operators🔗

Let g_1, g_2:X \to \mathbb{C} be bounded with bounded support. Define for J \in \mathcal{J}' h_J(y) := \chi_J(y)\cdot(e(\fcc(\fu_1)(y)) T_{\fT(\fu_1)}^* g_1(y)) \cdot \overline{(e(\fcc(\fu_2)(y)) T_{\fT(\fu_2) \cap \mathfrak{S}}^* g_2(y))}. The main result of this subsubsection is the following \tau-Holder estimate for h_J, where \tau = 1/a.

Lemma1.105
L∃∀Nused by 1

Uses Lemma 1.111. We have for all J \in \mathcal{J}' that \|h_J\|_{C^{\tau}(B(c(J), 16D^{s(J)}))} \le 2^{485a^3} \prod_{j = 1,2} (\inf_{B(c(J), \frac{1}{8}D^{s(J)})} |T_{\fT(\fu_j)}^* g_j| + \inf_J M_{\mathcal{B}, 1} |g_j|).

Lean code for Lemma1.1051 theorem
  • theorem TileStructure.Forest.holder_correlation_tree.{u_1}TileStructure.Forest.holder_correlation_tree.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f₁ f₂ : X → ℂ} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hJ : J ∈ t.𝓙₅ u₁ u₂) (hf₁ : MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume)
      (hf₂ : MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume) :
      iHolENorm (t.holderFunction u₁ u₂ f₁ f₂ J) (c J) (16 * ↑(defaultD a) ^ s J) (defaultτ a) ≤
        ↑(TileStructure.Forest.C7_5_4 a) * t.P7_5_4 u₁ u₂ f₁ f₂ JLemma 7.5.4.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {f₁X → ℂ f₂X → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hf₁MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₁X → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hf₂MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₂X → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      iHolENormiHolENorm.{u_1, u_2} {𝕜 : Type u_1} {X : Type u_2} [PseudoMetricSpace X] [NormedField 𝕜] (φ : X → 𝕜) (x₀ : X)
      (R t : ℝ) : ENNRealthe L^∞-normalized t-Hölder norm. Defined in ℝ≥0∞ to avoid sup-related issues.  (tTileStructure.Forest X n.holderFunctionTileStructure.Forest.holderFunction.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) (f₁ f₂ : X → ℂ) (J : Grid X) (x : X) : ℂThe definition of h_J, defined in the proof of Section 7.5.2  u₁𝔓 X u₂𝔓 X f₁X → ℂ f₂X → ℂ JGrid X) (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultτdefaultτ (a : ℕ) : ℝ`defaultτ` is the inverse of `a`.  a) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_5_4TileStructure.Forest.C7_5_4 (a : ℕ) : NNRealThe constant used in `holder_correlation_tree`.
    Has value `2 ^ (485 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. tTileStructure.Forest X n.P7_5_4TileStructure.Forest.P7_5_4.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) (f₁ f₂ : X → ℂ) (J : Grid X) : ENNRealThe product on the right-hand side of Lemma 7.5.4.  u₁𝔓 X u₂𝔓 X f₁X → ℂ f₂X → ℂ JGrid X
    theorem TileStructure.Forest.holder_correlation_tree.{u_1}TileStructure.Forest.holder_correlation_tree.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f₁ f₂ : X → ℂ} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hJ : J ∈ t.𝓙₅ u₁ u₂) (hf₁ : MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume)
      (hf₂ : MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume) :
      iHolENorm (t.holderFunction u₁ u₂ f₁ f₂ J) (c J) (16 * ↑(defaultD a) ^ s J) (defaultτ a) ≤
        ↑(TileStructure.Forest.C7_5_4 a) * t.P7_5_4 u₁ u₂ f₁ f₂ JLemma 7.5.4. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {f₁X → ℂ f₂X → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hf₁MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₁X → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hf₂MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₂X → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      iHolENormiHolENorm.{u_1, u_2} {𝕜 : Type u_1} {X : Type u_2} [PseudoMetricSpace X] [NormedField 𝕜] (φ : X → 𝕜) (x₀ : X)
      (R t : ℝ) : ENNRealthe L^∞-normalized t-Hölder norm. Defined in ℝ≥0∞ to avoid sup-related issues. 
          (tTileStructure.Forest X n.holderFunctionTileStructure.Forest.holderFunction.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) (f₁ f₂ : X → ℂ) (J : Grid X) (x : X) : ℂThe definition of h_J, defined in the proof of Section 7.5.2  u₁𝔓 X u₂𝔓 X f₁X → ℂ f₂X → ℂ JGrid X)
          (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (defaultτdefaultτ (a : ℕ) : ℝ`defaultτ` is the inverse of `a`.  a) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_5_4TileStructure.Forest.C7_5_4 (a : ℕ) : NNRealThe constant used in `holder_correlation_tree`.
    Has value `2 ^ (485 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          tTileStructure.Forest X n.P7_5_4TileStructure.Forest.P7_5_4.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) (f₁ f₂ : X → ℂ) (J : Grid X) : ENNRealThe product on the right-hand side of Lemma 7.5.4.  u₁𝔓 X u₂𝔓 X f₁X → ℂ f₂X → ℂ JGrid X
    Lemma 7.5.4. 

We will prove this lemma at the end of this section, after establishing several auxiliary results.

We begin with the following Holder continuity estimate for adjoints of operators associated to tiles.

Lemma1.106
L∃∀Nused by 1

Uses Lemma 1.95. Let \fu \in \fU and \fp \in \fT(\fu). Then for all y, y' \in X and all bounded g with bounded support, we have |e(\fcc(\fu)(y)) T_{\fp}^* g(y) - e(\fcc(\fu)(y')) T_{\fp}^* g(y')| \le \frac{2^{128a^3}}{\mu(B(\pc(\fp), 4D^{\ps(\fp)}))} \left(\frac{\rho(y, y')}{D^{\ps(\fp)}}\right)^{1/a} \int_{E(\fp)} |g(x)| \, \mathrm{d}\mu(x).

Lean code for Lemma1.1061 theorem
  • theorem TileStructure.Forest.holder_correlation_tile.{u_1}TileStructure.Forest.holder_correlation_tile.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u p : 𝔓 X} {x x' : X} {f : X → ℂ} (hu : u ∈ t) (hp : p ∈ (fun x ↦ t.𝔗 x) u)
      (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      edist (Complex.exp (Complex.I * ↑((𝒬 u) x)) * adjointCarleson p f x)
          (Complex.exp (Complex.I * ↑((𝒬 u) x')) * adjointCarleson p f x') ≤
        ↑(TileStructure.Forest.C7_5_5 a) / MeasureTheory.volume (Metric.ball (𝔠 p) (4 * ↑(defaultD a) ^ 𝔰 p)) *
            (edist x x' / ↑(defaultD a) ^ 𝔰 p) ^ (↑a)⁻¹ *
          ∫⁻ (x : X) in E p, ‖f x‖ₑLemma 7.5.5.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u𝔓 X p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1}
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hpp ∈ (fun x ↦ t.𝔗 x) u : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      edistEDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series  (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X) xX))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X fX → ℂ xX)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series  (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X) x'X))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X fX → ℂ x'X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_5_5TileStructure.Forest.C7_5_5 (a : ℕ) : NNRealThe constant used in `holder_correlation_tile`.
    Has value `2 ^ (128 * a ^ 3)` in the blueprint.  a) /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
              MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
                (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.4 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            (HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.edistEDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  xX x'X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (↑a)⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          ∫⁻MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  (xX : XType u_1) inMeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X,MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. 
    theorem TileStructure.Forest.holder_correlation_tile.{u_1}TileStructure.Forest.holder_correlation_tile.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u p : 𝔓 X} {x x' : X} {f : X → ℂ} (hu : u ∈ t) (hp : p ∈ (fun x ↦ t.𝔗 x) u)
      (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      edist (Complex.exp (Complex.I * ↑((𝒬 u) x)) * adjointCarleson p f x)
          (Complex.exp (Complex.I * ↑((𝒬 u) x')) * adjointCarleson p f x') ≤
        ↑(TileStructure.Forest.C7_5_5 a) / MeasureTheory.volume (Metric.ball (𝔠 p) (4 * ↑(defaultD a) ^ 𝔰 p)) *
            (edist x x' / ↑(defaultD a) ^ 𝔰 p) ^ (↑a)⁻¹ *
          ∫⁻ (x : X) in E p, ‖f x‖ₑLemma 7.5.5. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u𝔓 X p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (huu ∈ t : u𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hpp ∈ (fun x ↦ t.𝔗 x) u : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      edistEDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series 
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X) xX))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X fX → ℂ xX)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series 
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u𝔓 X) x'X))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            adjointCarlesonadjointCarleson.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X)
      (f : X → ℂ) (x : X) : ℂThe definition of `Tₚ*g(x)`, defined above Lemma 7.4.1  p𝔓 X fX → ℂ x'X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_5_5TileStructure.Forest.C7_5_5 (a : ℕ) : NNRealThe constant used in `holder_correlation_tile`.
    Has value `2 ^ (128 * a ^ 3)` in the blueprint.  a) /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
              MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
                (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X)
                  (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.4 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            (HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.edistEDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  xX x'X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
                (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
              (↑a)⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          ∫⁻MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  (xX : XType u_1) inMeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  EE.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (p : 𝔓 X) : Set XThe set `E` defined in Proposition 2.0.2.  p𝔓 X,MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. 
    Lemma 7.5.5. 

Proof. By definetp*, we have |e(\fcc(\fu)(y)) T_{\fp}^* g(y) - e(\fcc(\fu)(y')) T_{\fp}^* g(y')| =\bigg| \int_{E(\fp)} e(\tQ(x)(x) - \tQ(x)(y) + \fcc(\fu)(y)) \overline{K_{\ps(\fp)}(x, y)} g(x) - e(\tQ(x)(x) - \tQ(x)(y') + \fcc(\fu)(y')) \overline{K_{\ps(\fp)}(x, y')} g(x) \, \mathrm{d}\mu(x)\bigg| \leq\int_{E(\fp)} |g(x)| |e(\tQ(x)(y) - \tQ(x)(y') - \fcc(\fu)(y) + \fcc(\fu)(y'))\overline{K_{\ps(\fp)}(x, y)} - \overline{K_{\ps(\fp)}(x, y')}| \, \mathrm{d}\mu(x) \leq\int_{E(\fp)} |g(x)| |e(-\tQ(x)(y) + \tQ(x)(y') + \fcc(\fu)(y) - \fcc(\fu)(y')) - 1| \times |\overline{K_{\ps(\fp)}(x, y)}|\, \mathrm{d}\mu(x) + \int_{E(\fp)} |g(x)| |\overline{K_{\ps(\fp)}(x, y)} - \overline{K_{\ps(\fp)}(x, y')} |\, \mathrm{d}\mu(x). By the oscillation estimate osccontrol, we have |-\tQ(x)(y) + \tQ(x)(y') + \fcc(\fu)(y) - \fcc(\fu)(y')| \le d_{B(y, 1.6\rho(y,y'))}(\tQ(x), \fcc(\fu)).

Suppose that y, y' \in B(\pc(\fp), 5D^{\ps(\fp)}), so that \rho(y,y') \le 10D^{\ps(\fp)}. Let k \in \mathbb{Z} be such that 2^{ak}\rho(y,y') \le 10D^{\ps(\fp)} but 2^{a(k+1)} \rho(y,y') > 10D^{\ps(\fp)}. In particular, k \ge 0. Then, using seconddb followed by firstdb, we can bound eq-lem-tile-Holder-comp from above by 2^{-k} d_{B(\pc(\fp), 16 D^{\ps(\fp)})}(\tQ(x), \fcc(\fu)) \le 2^{6a - k} d_{\fp}(\tQ(x), \fcc(\fu)). Since x \in E(\fp) we have \tQ(x) \in \Omega(\fp) \subset B_{\fp}(\fcc(\fp), 1), and since \fp \in \fT(\fu) we have \fcc(\fu) \in B_{\fp}(\fcc(\fp), 4), so this is estimated by \le 5 \cdot 2^{6a - k}. By definition of k, we have -k < 1 - \frac{1}{a} \log_2\left(\frac{10 D^{\ps(\fp)}}{\rho(y,y')}\right), which gives |-\tQ(x)(y) + \tQ(x)(y') + \fcc(\fu)(y) - \fcc(\fu)(y')| \le 10 \cdot 2^{6a} \left(\frac{\rho(y,y')}{10 D^{\ps(\fp)}}\right)^{1/a}. For all x \in \scI(\fp), we have by doublingx that \mu(B(x, D^{\ps(\fp)})) \ge 2^{-3a} \mu(B(\pc(\fp), 4D^{\ps(\fp)})). Combining the above with eq-Ks-size, eq-Ks-smooth and eq-lem-Tile-holder-im1, we obtain that the sum of the terms in T*Holder1b and T*Holder1 is bounded by \frac{2^{3a}}{\mu(B(\pc(\fp), 4D^{\ps(\fp)}))} \int_{E(\fp)}|g(x)| \, \mathrm{d}\mu(x) \times (2^{102a^3} \cdot 10 \cdot 2^{6a} \left(\frac{\rho(y,y')}{ D^{\ps(\fp)}}\right)^{1/a} + 2^{127a^3} \left(\frac{\rho(y,y')}{D^{\ps(\fp)}}\right)^{1/a}) Since \rho(y,y') \le 10 D^{\ps(\fp)}, we conclude that the sum of the terms in T*Holder1b and T*Holder1 is bounded by \frac{2^{128a^3}}{\mu(B(\pc(\fp), 4D^{\ps(\fp)}))} \left(\frac{\rho(y,y')}{D^{\ps(\fp)}}\right)^{1/a} \int_{E(\fp)}|g(x)| \, \mathrm{d}\mu(x).

Next, if y,y' \notin B(\pc(\fp), 5D^{\ps(\fp)}), then T_{\fp}^*g(y) = T_{\fp}^*g(y') = 0, by Lemma 1.95. Then T*Holder2 holds.

Finally, if y \in B(\pc(\fp), 5D^{\ps(\fp)}) and y' \notin B(\pc(\fp), 5D^{\ps(\fp)}), then |e(\fcc(\fu)(y)) T_{\fp}^* g(y) - e(\fcc(\fu)(y')) T_{\fp}^* g(y')| = |T_{\fp}^* g(y)| \le \int_{E(\fp)} |K_{\ps(\fp)}(x,y)| |g(x)| \, \mathrm{d}\mu(x). By the same argument used to prove eq-Ks-aux, this is bounded by \le 2^{102a^3} \int_{E(\fp)} \frac{1}{\mu(B(x, D^s))} \psi(D^{-s} \rho(x,y)) |g(x)| \, \mathrm{d}\mu(x). It follows from the definition of \psi that \psi(x) \le \max\{0, (2 - 4x)^{1/a}\}. Now for all x\in E(\fp), it follows by the triangle inequality and eq-vol-sp-cube that 2 - 4D^{-\ps(\fp)}\rho(x,y)\leq 2 - 4D^{-\ps(\fp)}\rho(y, \pc(\fp)) + 4 D^{-\ps(\fp)}\rho(x, \pc(\fp)) \leq 18 - 4 D^{-\ps(\fp)} \rho(y, \pc(\fp)) \leq 4 D^{-\ps(\fp)}\rho(y,y') - 2. Combining the above with the previous estimate on \psi, we get \psi(D^{-\ps(\fp)}\rho(x,y)) \le 4 (D^{-\ps(\fp)}\rho(y,y'))^{1/a}. Further, we obtain from the doubling property doublingx and eq-vol-sp-cube that \mu(B(x, D^{\ps(\fp)})) \ge 2^{-3a} \mu(B(\pc(\fp), 4D^{\ps(\fp)})). Plugging this into eq-lem-Tile-holder-im2 and using a \ge 4, we get |T_{\fp}^* g(y)| \le \frac{2^{103a^3}}{\mu(B(\pc(\fp), 4D^{\ps(\fp)}))} \left(\frac{\rho(y,y')}{D^{\ps(\fp)}}\right)^{1/a} \int_{E(\fp)} |g(x)| \, \mathrm{d}\mu(y), which completes the proof of the lemma.

Recall that B(J) := B(c(J), 8D^{s(J)}). We also denote B'(J) := B(c(J), 16D^{s(J)}), B^\circ{}(J) := B(c(J), \frac{1}{8}D^{s(J)}).

Lemma1.107
L∃∀Nused by 1

Uses Lemma 1.101. Let \fp \in \fT(\fu_2) \setminus \mathfrak{S}, J \in \mathcal{J}' and suppose that B(\scI(\fp)) \cap B^\circ(J) \ne \emptyset. Then s(J) \le \ps(\fp) \le s(J) +3.

Lean code for Lemma1.1071 theorem
  • theorem TileStructure.Forest.limited_scale_impact.{u_1}TileStructure.Forest.limited_scale_impact.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ p : 𝔓 X} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hp : p ∈ (fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂) (hJ : J ∈ t.𝓙₅ u₁ u₂)
      (h : ¬Disjoint (Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p)) (Metric.ball (c J) (8⁻¹ * ↑(defaultD a) ^ s J))) :
      𝔰 p ∈ Set.Icc (s J) (s J + 3)Lemma 7.5.6.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hpp ∈ (fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂ : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X) (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (h¬Disjoint (Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p)) (Metric.ball (c J) (8⁻¹ * ↑(defaultD a) ^ s J)) :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
            (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)) :
      𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Set.IccSet.Icc.{u_1} {α : Type u_1} [Preorder α] (a b : α) : Set α`Icc a b` is the left-closed right-closed interval $[a, b]$.  (ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X) (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 3)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    theorem TileStructure.Forest.limited_scale_impact.{u_1}TileStructure.Forest.limited_scale_impact.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ p : 𝔓 X} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hp : p ∈ (fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂) (hJ : J ∈ t.𝓙₅ u₁ u₂)
      (h : ¬Disjoint (Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p)) (Metric.ball (c J) (8⁻¹ * ↑(defaultD a) ^ s J))) :
      𝔰 p ∈ Set.Icc (s J) (s J + 3)Lemma 7.5.6. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hpp ∈ (fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂ :
        p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (h¬Disjoint (Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p)) (Metric.ball (c J) (8⁻¹ * ↑(defaultD a) ^ s J)) :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments. 
            (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
            (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)) :
      𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Set.IccSet.Icc.{u_1} {α : Type u_1} [Preorder α] (a b : α) : Set α`Icc a b` is the left-closed right-closed interval $[a, b]$.  (ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X) (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 3)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    Lemma 7.5.6. 

Proof. For the first estimate, assume that \ps(\fp) < s(J), then in particular \ps(\fp) \le \ps(\fu_1). Since \fp \notin \mathfrak{S}, we have by Lemma 1.101 that \scI(\fp) \cap \scI(\fu_1) = \emptyset. Since B\Big(c(J), \frac{1}{4} D^{s(J)}\Big) \subset \scI(J) \subset \scI(\fu_1), this implies \rho(c(J), \pc(\fp)) \ge \frac{1}{4}D^{s(J)}. On the other hand \rho(c(J), \pc(\fp)) \le \frac{1}{8} D^{s(J)} + 8 D^{\ps(\fp)}, by our assumption. Thus D^{\ps(\fp)} \ge 64^{-1} D^{s(J)}, which contradicts defineD and a \ge 4.

For the second estimate, assume that \ps(\fp) > s(J) + 3. Since J \in \mathcal{J}', we have J \subsetneq \scI(\fu_1). Thus there exists J' \in \mathcal{D} with J \subset J' and s(J') = s(J) + 1, by coverdyadic and dyadicproperty. By definition of \mathcal{J}', there exists some \fp' \in \mathfrak{S} such that \scI(\fp') \subset B(c(J'), 100 D^{s(J) + 2}). On the other hand, since B(\scI(\fp)) \cap B^\circ(J) \ne \emptyset, by the triangle inequality it holds that B(c(J'), 100 D^{s(J) + 3}) \subset B(\pc(\fp), 10 D^{\ps(\fp)}). Using the definition of \mathfrak{S}, we have 2^{Zn/2} \le d_{\fp'}(\fcc(\fu_1), \fcc(\fu_2)) \le d_{B(c(J'), 100 D^{s(J) + 2})}(\fcc(\fu_1), \fcc(\fu_2)). By seconddb, this is \le 2^{-100a} d_{B(c(J'), 100 D^{s(J) + 3})}(\fcc(\fu_1), \fcc(\fu_2)) \le 2^{-100a} d_{B(\pc(\fp), 10 D^{\ps(\fp)})}(\fcc(\fu_1), \fcc(\fu_2)), and by firstdb and the definition of \mathfrak{S} \le 2^{-94a} d_{\fp}(\fcc(\fu_1), \fcc(\fu_2)) \le 2^{-94a} 2^{Zn/2}. This is a contradiction, the second estimate follows.

Lemma1.108
L∃∀Nused by 1

Uses Lemma 1.107. For all J \in \mathcal{J}' and all bounded g with bounded support \sup_{B^\circ{}(J)} |T_{\mathfrak{T}(\mathfrak{u}_2)\setminus\mathfrak{S}}^* g| \le 2^{104a^3} \inf_J M_{\mathcal{B},1}|g|

Lean code for Lemma1.1081 theorem
  • theorem TileStructure.Forest.local_tree_control.{u_1}TileStructure.Forest.local_tree_control.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f : X → ℂ} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hJ : J ∈ t.𝓙₅ u₁ u₂) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      ⨆ x ∈ Metric.ball (c J) (8⁻¹ * ↑(defaultD a) ^ s J), ‖adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂) f x‖ₑ ≤
        ↑(TileStructure.Forest.C7_5_7 a) *
          ⨅ x ∈ J, MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑 f xLemma 7.5.7.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
       xX  Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.,
          ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  (SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_5_7TileStructure.Forest.C7_5_7 (a : ℕ) : NNRealThe constant used in `local_tree_control`.
    Has value `2 ^ (104 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
           xX  JGrid X,
            MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
              TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑.  TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑.  fX → ℂ xX
    theorem TileStructure.Forest.local_tree_control.{u_1}TileStructure.Forest.local_tree_control.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f : X → ℂ} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hJ : J ∈ t.𝓙₅ u₁ u₂) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      ⨆ x ∈ Metric.ball (c J) (8⁻¹ * ↑(defaultD a) ^ s J), ‖adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂) f x‖ₑ ≤
        ↑(TileStructure.Forest.C7_5_7 a) *
          ⨅ x ∈ J, MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑 f xLemma 7.5.7. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      
          xX 
            Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.,
          ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
              (SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`.
                tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`.
              fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_5_7TileStructure.Forest.C7_5_7 (a : ℕ) : NNRealThe constant used in `local_tree_control`.
    Has value `2 ^ (104 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
           xX  JGrid X,
            MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
              TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
              TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑. 
              TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑.  fX → ℂ xX
    Lemma 7.5.7. 

Proof. By the triangle inequality and since T_{\fp}^* g = \mathbf{1}_{B(\pc(\fp), 5D^{\ps(\fp)})} T_{\fp}^* g, we have \sup_{B^\circ{}(J)} |T_{\fT(\fu_2) \setminus\mathfrak{S}}^* g| \leq \sup_{B^\circ{}(J)} \sum_{\substack{\fp \in \fT(\fu_2) \setminus \mathfrak{S}\\ B(\scI(\fp)) \cap B^\circ(J) \ne \emptyset}} |T_{\fp}^*g|. By Lemma 1.107, this is at most \sum_{s = s(J)}^{s(J) + 3} \sum_{\substack{\fp \in \fP, \ps(\fp) = s\\ B(\scI(\fp)) \cap B^\circ(J) \ne \emptyset}} \sup_{B^\circ{}(J)} |T_{\fp}^* g|. If x \in E(\fp) and B(\scI(\fp)) \cap B^\circ(J) \ne \emptyset, then B(c(J), 16D^{\ps(\fp)}) \subset B(x, 32 D^{\ps(\fp)}), by eq-vol-sp-cube and the triangle inequality. Using the doubling property doublingx, it follows that \mu(B(x, D^{\ps(\fp)})) \ge 2^{-5a} \mu(B(c(J), 16D^{\ps(\fp)})).

Using definetp*, eq-Ks-size and that a \ge 4, we bound eq-sep-tree-aux-3 by 2^{103a^3}\sum_{s = s(J)}^{s(J) + 3} \sum_{\substack{\fp \in \fP, \ps(\fp) = s\\B(\scI(\fp)) \cap B^\circ(J) \ne \emptyset}} \frac{1}{\mu(B(c(J), 16 D^s)} \int_{E(\fp)} |g| \, \mathrm{d}\mu. For each I \in \mathcal{D}, the sets E(\fp) for \fp \in \fP with \scI(\fp) = I are pairwise disjoint by defineep and eq-dis-freq-cover. Further, if B(\scI(\fp)) \cap B^\circ(J) \ne \emptyset and \ps(\fp) \ge s(J), then E(\fp) \subset B(c(J), 16 D^{\ps(\fp)}). Thus the last display is bounded by 2^{103a^3}\sum_{s = s(J)}^{s(J) + 3} \frac{1}{\mu(B(c(J), 16 D^s))} \int_{B(c(J), 16 D^s)} |g| \, \mathrm{d}\mu. \le \inf_{x' \in J} 2^{103a^3 +2} M_{\mathcal{B}, 1} |g|. The lemma follows since a \ge 4.

Lemma1.109
L∃∀Nused by 1

Uses Lemma 1.101. Let \fC = \fT(\fu_1) or \fC = \fT(\fu_2) \cap \mathfrak{S}. Then for each J \in \mathcal{J}' and \fp \in \fC with B(\scI(\fp)) \cap B'(J) \neq \emptyset, we have \ps(\fp) \ge s(J).

Lean code for Lemma1.1091 theorem
  • theorem TileStructure.Forest.scales_impacting_interval.{u_1}TileStructure.Forest.scales_impacting_interval.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ p : 𝔓 X} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂) (hJ : J ∈ t.𝓙₅ u₁ u₂)
      (hp : p ∈ (fun x ↦ t.𝔗 x) u₁ ∪ (fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂)
      (h : ¬Disjoint (Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p)) (Metric.ball (c J) (16 * ↑(defaultD a) ^ s J))) :
      s J ≤ 𝔰 pLemma 7.5.8.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hpp ∈ (fun x ↦ t.𝔗 x) u₁ ∪ (fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂ : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X Union.union.{u} {α : Type u} [self : Union α] : α → α → α`a ∪ b` is the union of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∪` in identifiers is `union`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)
      (h¬Disjoint (Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p)) (Metric.ball (c J) (16 * ↑(defaultD a) ^ s J)) :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
            (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)) :
      ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X
    theorem TileStructure.Forest.scales_impacting_interval.{u_1}TileStructure.Forest.scales_impacting_interval.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ p : 𝔓 X} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂) (hJ : J ∈ t.𝓙₅ u₁ u₂)
      (hp : p ∈ (fun x ↦ t.𝔗 x) u₁ ∪ (fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂)
      (h : ¬Disjoint (Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p)) (Metric.ball (c J) (16 * ↑(defaultD a) ^ s J))) :
      s J ≤ 𝔰 pLemma 7.5.8. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hpp ∈ (fun x ↦ t.𝔗 x) u₁ ∪ (fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂ :
        p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X Union.union.{u} {α : Type u} [self : Union α] : α → α → α`a ∪ b` is the union of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∪` in identifiers is `union`.
            (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)
      (h¬Disjoint (Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p)) (Metric.ball (c J) (16 * ↑(defaultD a) ^ s J)) :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments. 
            (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
            (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)) :
      ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X
    Lemma 7.5.8. 

Proof. By Lemma 1.101, we have that in both cases, \fC \subset \mathfrak{S}. If \fp \in \fC with B(\scI(\fp)) \cap B'(J) \neq \emptyset and \ps(\fp) < s(J), then \scI(\fp) \subset B(c(J), 100 D^{s(J) + 1}). Since \fp \in \mathfrak{S}, it follows from the definition of \mathcal{J}' that s(J) = -S, which contradicts \ps(\fp) < s(J).

Lemma1.110
L∃∀Nused by 1

Uses Lemma 1.106 and Lemma 1.109. Let \fC_1 = \fT(\fu_1) and \fC_2 = \fT(\fu_2) \cap \mathfrak{S}. Then for i = 1,2 and each J \in \mathcal{J}' and all bounded g with bounded support, we have \sup_{B'(J)} |T_{\fC_i}^*g| \leq \inf_{B^\circ{}(J)} |T^*_{\fC_i} g| + 2^{128a^3+4a+3} \inf_{J} M_{\mathcal{B},1} |g| and for all y,y' \in B'(J) |e(\fcc(\fu_i)(y)) T_{\fC_i}^* g(y) - e(\fcc(\fu_i)(y')) T_{\fC_i}^* g(y')| \le 2^{128a^3+4a+1} \left(\frac{\rho(y,y')}{D^{s(J)}}\right)^{1/a} \inf_J M_{\mathcal{B},1} |g|.

Lean code for Lemma1.1103 theorems
  • theorem TileStructure.Forest.global_tree_control1_edist_left.{u_1}TileStructure.Forest.global_tree_control1_edist_left.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ}
      {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {x x' : X} {f : X → ℂ} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hJ : J ∈ t.𝓙₅ u₁ u₂) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume)
      (hx : x ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J)) (hx' : x' ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J)) :
      edist (Complex.exp (Complex.I * ↑((𝒬 u₁) x)) * adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₁) f x)
          (Complex.exp (Complex.I * ↑((𝒬 u₁) x')) * adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₁) f x') ≤
        ↑(TileStructure.Forest.C7_5_9d a) * (edist x x' / ↑(defaultD a) ^ s J) ^ (↑a)⁻¹ *
          ⨅ x ∈ J, MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑 f xEquation (7.5.18) of Lemma 7.5.9 for `ℭ = t u₁`. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1}
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hxx ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J) : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
      (hx'x' ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J) : x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      edistEDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series  (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u₁𝔓 X) xX))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X) fX → ℂ xX)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series  (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u₁𝔓 X) x'X))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X) fX → ℂ x'X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_5_9dTileStructure.Forest.C7_5_9d (a : ℕ) : NNRealThe constant used in `global_tree_control1_edist`.
    Has value `2 ^ (128 * a ^ 3 + 4 * a + 1)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            (HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.edistEDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  xX x'X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (↑a)⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
           xX  JGrid X,
            MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
              TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑.  TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑.  fX → ℂ xX
    theorem TileStructure.Forest.global_tree_control1_edist_left.{u_1}TileStructure.Forest.global_tree_control1_edist_left.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ}
      {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {x x' : X} {f : X → ℂ} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hJ : J ∈ t.𝓙₅ u₁ u₂) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume)
      (hx : x ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J)) (hx' : x' ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J)) :
      edist (Complex.exp (Complex.I * ↑((𝒬 u₁) x)) * adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₁) f x)
          (Complex.exp (Complex.I * ↑((𝒬 u₁) x')) * adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₁) f x') ≤
        ↑(TileStructure.Forest.C7_5_9d a) * (edist x x' / ↑(defaultD a) ^ s J) ^ (↑a)⁻¹ *
          ⨅ x ∈ J, MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑 f xEquation (7.5.18) of Lemma 7.5.9 for `ℭ = t u₁`. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hxx ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J) :
        xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
            (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
      (hx'x' ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J) :
        x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
            (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      edistEDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series 
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u₁𝔓 X) xX))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
              ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X) fX → ℂ xX)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series 
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u₁𝔓 X) x'X))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
              ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X) fX → ℂ x'X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_5_9dTileStructure.Forest.C7_5_9d (a : ℕ) : NNRealThe constant used in `global_tree_control1_edist`.
    Has value `2 ^ (128 * a ^ 3 + 4 * a + 1)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            (HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.edistEDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  xX x'X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
                (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
              (↑a)⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
           xX  JGrid X,
            MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
              TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
              TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑. 
              TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑.  fX → ℂ xX
    Equation (7.5.18) of Lemma 7.5.9 for `ℭ = t u₁`. 
  • theorem TileStructure.Forest.global_tree_control1_edist_right.{u_1}TileStructure.Forest.global_tree_control1_edist_right.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ}
      {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {x x' : X} {f : X → ℂ} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hJ : J ∈ t.𝓙₅ u₁ u₂) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume)
      (hx : x ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J)) (hx' : x' ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J)) :
      edist (Complex.exp (Complex.I * ↑((𝒬 u₂) x)) * adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂) f x)
          (Complex.exp (Complex.I * ↑((𝒬 u₂) x')) * adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂) f x') ≤
        ↑(TileStructure.Forest.C7_5_9d a) * (edist x x' / ↑(defaultD a) ^ s J) ^ (↑a)⁻¹ *
          ⨅ x ∈ J, MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑 f xEquation (7.5.18) of Lemma 7.5.9 for `ℭ = t u₂ ∩ 𝔖₀ t u₁ u₂`. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1}
      {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hxx ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J) : xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
      (hx'x' ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J) : x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      edistEDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series  (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u₂𝔓 X) xX))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. fX → ℂ xX)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series  (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u₂𝔓 X) x'X))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. fX → ℂ x'X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_5_9dTileStructure.Forest.C7_5_9d (a : ℕ) : NNRealThe constant used in `global_tree_control1_edist`.
    Has value `2 ^ (128 * a ^ 3 + 4 * a + 1)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            (HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.edistEDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  xX x'X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (↑a)⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
           xX  JGrid X,
            MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
              TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑.  TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑.  fX → ℂ xX
    theorem TileStructure.Forest.global_tree_control1_edist_right.{u_1}TileStructure.Forest.global_tree_control1_edist_right.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ}
      {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {x x' : X} {f : X → ℂ} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hJ : J ∈ t.𝓙₅ u₁ u₂) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume)
      (hx : x ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J)) (hx' : x' ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J)) :
      edist (Complex.exp (Complex.I * ↑((𝒬 u₂) x)) * adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂) f x)
          (Complex.exp (Complex.I * ↑((𝒬 u₂) x')) * adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂) f x') ≤
        ↑(TileStructure.Forest.C7_5_9d a) * (edist x x' / ↑(defaultD a) ^ s J) ^ (↑a)⁻¹ *
          ⨅ x ∈ J, MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑 f xEquation (7.5.18) of Lemma 7.5.9 for `ℭ = t u₂ ∩ 𝔖₀ t u₁ u₂`. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {xX x'X : XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (hxx ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J) :
        xX Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
            (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
      (hx'x' ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J) :
        x'X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
            (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      edistEDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points 
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series 
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u₂𝔓 X) xX))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
              (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.
                tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.
              fX → ℂ xX)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.expComplex.exp (z : ℂ) : ℂThe complex exponential function, defined via its Taylor series 
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.Complex.IComplex.I : ℂThe imaginary unit.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ((𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u₂𝔓 X) x'X))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
              (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.
                tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.
              fX → ℂ x'X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_5_9dTileStructure.Forest.C7_5_9d (a : ℕ) : NNRealThe constant used in `global_tree_control1_edist`.
    Has value `2 ^ (128 * a ^ 3 + 4 * a + 1)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            (HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.edistEDist.edist.{u_2} {α : Type u_2} [self : EDist α] : α → α → ENNRealExtended distance between two points  xX x'X /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
                (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
              (↑a)⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
           xX  JGrid X,
            MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
              TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
              TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑. 
              TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑.  fX → ℂ xX
    Equation (7.5.18) of Lemma 7.5.9 for `ℭ = t u₂ ∩ 𝔖₀ t u₁ u₂`. 
  • theorem TileStructure.Forest.global_tree_control1_supbound.{u_1}TileStructure.Forest.global_tree_control1_supbound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f : X → ℂ} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (ℭ : Set (𝔓 X)) (hℭ : ℭ = (fun x ↦ t.𝔗 x) u₁ ∨ ℭ = (fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂) (hJ : J ∈ t.𝓙₅ u₁ u₂)
      (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      ⨆ x ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J), ‖adjointCarlesonSum ℭ f x‖ₑ ≤
        (⨅ x ∈ Metric.ball (c J) (8⁻¹ * ↑(defaultD a) ^ s J), ‖adjointCarlesonSum ℭ f x‖ₑ) +
          ↑(TileStructure.Forest.C7_5_9s a) *
            ⨅ x ∈ J, MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑 f xEquation (7.5.17) of Lemma 7.5.9.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) (Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1))
      (hℭℭ = (fun x ↦ t.𝔗 x) u₁ ∨ ℭ = (fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂ : Set (𝔓 X) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X Or (a b : Prop) : Prop`Or a b`, or `a ∨ b`, is the disjunction of propositions. There are two
    constructors for `Or`, called `Or.inl : a → a ∨ b` and `Or.inr : b → a ∨ b`,
    and you can use `match` or `cases` to destruct an `Or` assumption into the
    two cases.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∨` in identifiers is `or`. Set (𝔓 X) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
       xX  Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.,
          ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  Set (𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (⨅ xX  Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.,
            ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  Set (𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          (TileStructure.Forest.C7_5_9sTileStructure.Forest.C7_5_9s (a : ℕ) : NNRealThe constant used in `global_tree_control1_supbound`.
    Has value `2 ^ (128 * a ^ 3 + 4 * a + 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
             xX  JGrid X,
              MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
                TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑.  TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑.  fX → ℂ xX
    theorem TileStructure.Forest.global_tree_control1_supbound.{u_1}TileStructure.Forest.global_tree_control1_supbound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f : X → ℂ} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (ℭ : Set (𝔓 X)) (hℭ : ℭ = (fun x ↦ t.𝔗 x) u₁ ∨ ℭ = (fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂) (hJ : J ∈ t.𝓙₅ u₁ u₂)
      (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      ⨆ x ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J), ‖adjointCarlesonSum ℭ f x‖ₑ ≤
        (⨅ x ∈ Metric.ball (c J) (8⁻¹ * ↑(defaultD a) ^ s J), ‖adjointCarlesonSum ℭ f x‖ₑ) +
          ↑(TileStructure.Forest.C7_5_9s a) *
            ⨅ x ∈ J, MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑 f xEquation (7.5.17) of Lemma 7.5.9. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (Set (𝔓 X) : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     (𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1))
      (hℭℭ = (fun x ↦ t.𝔗 x) u₁ ∨ ℭ = (fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂ :
        Set (𝔓 X) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₁𝔓 X Or (a b : Prop) : Prop`Or a b`, or `a ∨ b`, is the disjunction of propositions. There are two
    constructors for `Or`, called `Or.inl : a → a ∨ b` and `Or.inr : b → a ∨ b`,
    and you can use `match` or `cases` to destruct an `Or` assumption into the
    two cases.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∨` in identifiers is `or`.
          Set (𝔓 X) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      
          xX 
            Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.,
          ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  Set (𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (⨅
            xX 
              Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
                (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.,
            ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  Set (𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          (TileStructure.Forest.C7_5_9sTileStructure.Forest.C7_5_9s (a : ℕ) : NNRealThe constant used in `global_tree_control1_supbound`.
    Has value `2 ^ (128 * a ^ 3 + 4 * a + 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
             xX  JGrid X,
              MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
                TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
                TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑. 
                TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑.  fX → ℂ xX
    Equation (7.5.17) of Lemma 7.5.9. 

Proof. Note that TreeUB follows from TreeHolder, since for y' \in B^\circ{}(J), by the triangle inequality, \left(\frac{\rho(y,y')}{D^{s(J)}}\right)^{1/a}\le \Big(16 + \frac{1}8\Big)^{1/a}\le 2^2.

By the triangle inequality, Lemma 1.95 and Lemma 1.106, we have for all y, y' \in B'(J) |e(\fcc(\fu_i)(y)) T_{\fC_i}^* g(y) - e(\fcc(\fu_i)(y')) T_{\fC_i}^* g(y')| \le \sum_{\substack{\fp \in \fC_i\\ B(\scI(\fp)) \cap B'(J) \neq \emptyset}} |e(\fcc(\fu_i)(y)) T_{\fp}^* g(y) - e(\fcc(\fu_i)(y')) T_{\fp}^* g(y')| \le 2^{128a^3}\rho(y,y')^{1/a} \sum_{\substack{\fp \in \fC_i\\ B(\scI(\fp)) \cap B'(J) \neq \emptyset}} \frac{D^{- \ps(\fp)/a}}{\mu(B(\pc(\fp), 4D^{\ps(\fp)}))} \int_{E(\fp)} |g| \, \mathrm{d}\mu. By Lemma 1.109, we have \ps(\fp) \ge s(J) for all \fp occurring in the sum. Further, for each s \ge s(J), the sets E(\fp) for \fp \in \fP with \ps(\fp) = s are pairwise disjoint by defineep and eq-dis-freq-cover, and contained in B(c(J), 32D^{s}) by eq-vol-sp-cube and the triangle inequality. Using also the doubling estimate doublingx, we obtain that the expression in the last display can be estimated by 2^{128a^3}\rho(y,y')^{1/a} \sum_{S \ge s \ge s(J)} D^{-s/a} \frac{2^{4a}}{\mu(B(c(J), 32D^{s}))} \int_{B(c(J), 32D^{s})} |g| \, \mathrm{d}\mu \le 2^{128a^3+4a} \left(\frac{\rho(y,y')}{D^{s(J)}}\right)^{1/a} \sum_{S \ge s \ge s(J)} D^{(s(J) - s)/a} \inf_J M_{\mathcal{B},1} |g|. Since D^{-1/a}\le\frac12, we have \sum_{S \ge s \ge s(J)} D^{(s(J) - s)/a} \le 2. Estimate TreeHolder, and therefore the lemma, follow.

Lemma1.111
L∃∀Nused by 1

Uses Lemma 1.110 and Lemma 1.108. We have for all J \in \mathcal{J}' and all bounded g with bounded support \sup_{B'(J)} |T^*_{\fT(\fu_2) \cap \mathfrak{S}} g| \le \inf_{B^\circ{}(J)} |T^*_{\fT(\fu_2)} g| + 2^{129a^3} \inf_{J} M_{\mathcal{B},1}|g|.

Lean code for Lemma1.1111 theorem
  • theorem TileStructure.Forest.global_tree_control2.{u_1}TileStructure.Forest.global_tree_control2.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f : X → ℂ} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hJ : J ∈ t.𝓙₅ u₁ u₂) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      ⨆ x ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J), ‖adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂) f x‖ₑ ≤
        (⨅ x ∈ Metric.ball (c J) (8⁻¹ * ↑(defaultD a) ^ s J), ‖adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂) f x‖ₑ) +
          ↑(TileStructure.Forest.C7_5_10 a) *
            ⨅ x ∈ J, MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑 f xLemma 7.5.10  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X) (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
       xX  Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.,
          ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`. fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (⨅ xX  Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.,
            ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          (TileStructure.Forest.C7_5_10TileStructure.Forest.C7_5_10 (a : ℕ) : NNRealThe constant used in `global_tree_control2`.
    Has value `2 ^ (129 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
             xX  JGrid X,
              MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
                TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑.  TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑.  fX → ℂ xX
    theorem TileStructure.Forest.global_tree_control2.{u_1}TileStructure.Forest.global_tree_control2.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f : X → ℂ} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hJ : J ∈ t.𝓙₅ u₁ u₂) (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      ⨆ x ∈ Metric.ball (c J) (16 * ↑(defaultD a) ^ s J), ‖adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ ∩ t.𝔖₀ u₁ u₂) f x‖ₑ ≤
        (⨅ x ∈ Metric.ball (c J) (8⁻¹ * ↑(defaultD a) ^ s J), ‖adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂) f x‖ₑ) +
          ↑(TileStructure.Forest.C7_5_10 a) *
            ⨅ x ∈ J, MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑 f xLemma 7.5.10 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      
          xX 
            Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.16 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.,
          ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
              (Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.
                tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)Inter.inter.{u} {α : Type u} [self : Inter α] : α → α → α`a ∩ b` is the intersection of `a` and `b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∩` in identifiers is `inter`.
              fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (⨅
            xX 
              Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
                (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.,
            ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
                ((fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X) fX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          (TileStructure.Forest.C7_5_10TileStructure.Forest.C7_5_10 (a : ℕ) : NNRealThe constant used in `global_tree_control2`.
    Has value `2 ^ (129 * a ^ 3)` in the blueprint.  a) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
             xX  JGrid X,
              MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
                TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
                TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑. 
                TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑.  fX → ℂ xX
    Lemma 7.5.10 

Proof. By Lemma 1.110 \sup_{B'(J)} |T^*_{\fT(\fu_2) \cap \mathfrak{S}} g| \le \inf_{B^\circ{}(J)} |T_{\fT(\fu_2) \cap \mathfrak{S}}^* g| + 2^{128a^3+4a+3} \inf_{J} M_{\mathcal{B}, 1} |g| \le \inf_{B^\circ{}(J)} |T_{\fT(\fu_2)}^* g| + \sup_{B^\circ{}(J)} |T_{\fT(\fu_2) \setminus \mathfrak{S}}^* g| + 2^{128a^3+4a+3} \inf_{J} M_{\mathcal{B}, 1} |g|, and by Lemma 1.108 \le \inf_{B^\circ{}(J)} |T_{\fT(\fu_2)}^* g| + (2^{104a^3} + 2^{128a^3+4a+3}) \inf_{J} M_{\mathcal{B}, 1} |g|. This completes the proof.

Proof of Lemma 1.105. Let P be the product on the right-hand side of hHolder, and h_J be as defined in def-hj. By eq-pao-2 and Lemma 1.95, the function h_J is supported in B'(J) \cap \scI(\fu_1). By eq-pao-2, Lemma 1.110 and Lemma 1.111, we have for all y \in B'(J): |h_J(y)| \le 2^{257a^3+4a+3} P. We have by the triangle inequality |h_J(y) - h_J(y')| \le |\chi_J(y) - \chi_J(y')| |T_{\fT(\fu_1)}^* g_1(y)| |T_{\fT(\fu_2) \cap \mathfrak{S}}^* g_2(y)| + |\chi_J(y')| |e(\fcc(\fu_1)(y)) T_{\fT(\fu_1)}^* g_1(y) - e(\fcc(\fu_1)(y')) T_{\fT(\fu_1)}^* g_1(y')| |T_{\fT(\fu_2) \cap \mathfrak{S}}^* g_2(y)| + |\chi_J(y')| |T_{\fT(\fu_1)}^* g_1(y')| |e(\fcc(\fu_2)(y)) T_{\fT(\fu_2) \cap \mathfrak{S}}^* g_2(y) - e(\fcc(\fu_2)(y')) T_{\fT(\fu_2) \cap \mathfrak{S}}^* g_2(y')|.

As h_J is supported in \scI(\fu_1), we can assume without loss of generality that y' \in \scI(\fu_1). If y \notin \scI(\fu_1), then eq-h-Lip-1 vanishes. If y \in \scI(\fu_1) then we have by eq-pao-3, Lemma 1.110 and Lemma 1.111 that eq-h-Lip-1 is bounded by 2^{484a^3+4a+3} \frac{\rho(y,y')}{D^{s(J)}} P, where P denotes the product on the right hand side of hHolder.

By eq-pao-2, Lemma 1.110 and Lemma 1.111, we have the bound 2^{257a^3+4a+1} \left(\frac{\rho(y,y')}{D^{s(J)}}\right)^{1/a} P.

By eq-pao-2, and twice Lemma 1.110, we have the bound 2^{256a^3+8a+5} \left(\frac{\rho(y,y')}{D^{s(J)}}\right)^{1/a} P. Using that \rho(y,y') \le 32D^{s(J)} and a \ge 4, the lemma follows.

1.5.15.3. The van der Corput estimate🔗

Lemma1.112
L∃∀Nused by 1

Uses Lemma 1.101. For all J \in \mathcal{J}', we have that d_{B(J)}(\fcc(\fu_1), \fcc(\fu_2)) \ge 2^{-201a^3} 2^{Zn/2}.

Lean code for Lemma1.1121 theorem
  • theorem TileStructure.Forest.lower_oscillation_bound.{u_1}TileStructure.Forest.lower_oscillation_bound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂) (hJ : J ∈ t.𝓙₅ u₁ u₂) :
      ↑(TileStructure.Forest.C7_5_11 a n) ≤ dist_{c J, 8 * ↑(defaultD a) ^ s J} (𝒬 u₁) (𝒬 u₂)Lemma 7.5.11  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X) :
      (TileStructure.Forest.C7_5_11TileStructure.Forest.C7_5_11 (a n : ℕ) : NNRealThe constant used in `lower_oscillation_bound`.
    Has value `2 ^ (Z * n / 2 - 201 * a ^ 3)` in the blueprint.  a n) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        dist_{Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X,Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X}Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u₁𝔓 X) (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u₂𝔓 X)
    theorem TileStructure.Forest.lower_oscillation_bound.{u_1}TileStructure.Forest.lower_oscillation_bound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂) (hJ : J ∈ t.𝓙₅ u₁ u₂) :
      ↑(TileStructure.Forest.C7_5_11 a n) ≤ dist_{c J, 8 * ↑(defaultD a) ^ s J} (𝒬 u₁) (𝒬 u₂)Lemma 7.5.11 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hJJ ∈ t.𝓙₅ u₁ u₂ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₅TileStructure.Forest.𝓙₅.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.5.1.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.6  u₁𝔓 X u₂𝔓 X) :
      (TileStructure.Forest.C7_5_11TileStructure.Forest.C7_5_11 (a n : ℕ) : NNRealThe constant used in `lower_oscillation_bound`.
    Has value `2 ^ (Z * n / 2 - 201 * a ^ 3)` in the blueprint.  a n) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        dist_{Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X,Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points  8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X}Dist.dist.{u_3} {α : Type u_3} [self : Dist α] : α → α → ℝDistance between two points 
          (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u₁𝔓 X) (𝒬PreTileStructure.𝒬.{u, u_1, u_2} {𝕜 : Type u_1} {inst✝ : RCLike 𝕜} {X : Type u} {A : outParam NNReal}
      {inst✝¹ : PseudoMetricSpace X} {inst✝² : MeasureTheory.DoublingMeasure X A} {inst✝³ : FunctionDistances 𝕜 X}
      {Q : outParam (MeasureTheory.SimpleFunc X (Θ X))} {D : outParam ℕ} {κ : outParam ℝ} {S : outParam ℕ} {o : outParam X}
      [self : PreTileStructure Q D κ S o] : PreTileStructure.𝔓 𝕜 X → Θ X u₂𝔓 X)
    Lemma 7.5.11 

Proof. Since \emptyset \ne \fT(\fu_1) \subset \mathfrak{S} by Lemma 1.101, there exists at least one tile \fp \in \mathcal{S} with \scI(\fp) \subsetneq \scI(\fu_1). Thus \scI(\fu_1) \notin \mathcal{J}', so J \subsetneq \scI(\fu_1). Thus there exists a cube J' \in \mathcal{D} with J \subset J' and s(J') = s(J) + 1, by coverdyadic and dyadicproperty. By definition of \mathcal{J'} and the triangle inequality, there exists \fp \in \mathfrak{S} such that \scI(\fp) \subset B(c(J'), 100 D^{s(J') + 1}) \subset B(c(J), 128 D^{s(J)+2}). Thus, by definition of \mathfrak{S}: 2^{Zn/2} \le d_{\fp}(\fcc(\fu_1), \fcc(\fu_2)) \le d_{B(c(J), 128 D^{s(J)+2})}(\fcc(\fu_1), \fcc(\fu_2)). By the doubling property firstdb, this is \le 2^{200a^3 + 4a} d_{B(J)}(\fcc(\fu_1), \fcc(\fu_2)), which gives the lemma using a \ge 4.

Now we are ready to prove Lemma 1.99.

Proof of Lemma 1.99. The left-hand side of eq-lhs-big-sep-tree equals \left| \int_{X} T_{\fT(\fu_1)}^* g_1 \overline{T_{\fT(\fu_2) \cap \mathfrak{S}}^* g_2 }\right|. By Lemma 1.95, the right hand side is supported in \scI(\fu_1). Using eq-pao-1 of Lemma 1.103 and the definition def-hj of h_J, we thus have \le \sum_{J \in \mathcal{J}'} \left|\int_{X} e(\fcc(\fu_2)(y) - \fcc(\fu_1)(y)) h_J(y) \, \mathrm{d}\mu(y) \right|. Using Theorem 1.8 with the ball B(J), we bound this by \le 2^{7a} \sum_{J \in \mathcal{J}'} \mu(B(J)) \|h_J\|_{C^{\tau}(B'(J))} (1 + d_{B(J)}(\fcc(\fu_2), \fcc(\fu_1)))^{-1/(2a^2+a^3)}. Using Lemma 1.105, Lemma 1.112 and a \ge 4, we bound the above by \le 2^{485a^3+7a+3a^3+3a} 2^{-Zn/(4a^2 + 2a^3)} \sum_{J \in \mathcal{J}'} \mu(B(J)) \times \prod_{j=1}^2 (\inf_{B^\circ{}(J)} |T_{\fT(\fu_j)}^* g_j| + \inf_J M_{\mathcal{B}, 1} g_j). By the doubling property doublingx \mu(B(J)) \le 2^{6a} \mu(B^\circ{}(J)), thus \mu(B(J)) \prod_{j=1}^2 (\inf_{B^\circ{}(J)} |T_{\fT(\fu_j)}^* g_j| + \inf_J M_{\mathcal{B}, 1} g_j) \le 2^{6a} \int_{B^\circ{}(J)} \prod_{j=1}^2 ( |T_{\fT(\fu_j)}^* g_j|(x) + M_{\mathcal{B},1} g_j(x)) \, \mathrm{d}\mu(x) \le 2^{6a} \int_J \prod_{j=1}^2 ( |T_{\fT(\fu_j)}^* g_j|(x) + M_{\mathcal{B},1} g_j(x)) \, \mathrm{d}\mu(x). Summing over J \in \mathcal{J}', we obtain the estimate eq-big-sep-1: 2^{499a^3} 2^{-Zn/(4a^2 + 2a^3)} \int_X \prod_{j=1}^2 ( |T_{\fT(\fu_j)}^* g_j|(x) + M_{\mathcal{B},1} g_j(x)) \, \mathrm{d}\mu(x). Applying the Cauchy-Schwarz inequality, Lemma 1.99 follows.

1.5.16. Proof of The Remaining Tiles Lemma🔗

Lemma1.113
L∃∀N
Used by 2
Hover a use site to preview it.
Preview
Lemma 1.100
Loading preview
Hover a use site to preview it.

Uses Lemma 1.83. We have \scI(\fu_1) = \dot{\bigcup_{J \in \mathcal{J}'}} J.

Lean code for Lemma1.1132 theorems
  • complete
    theorem TileStructure.Forest.union_𝓙₆.{u_1}TileStructure.Forest.union_𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u₁ : 𝔓 X} (hu₁ : u₁ ∈ t) : ⋃ J ∈ t.𝓙₆ u₁, ↑J = ↑(𝓘 u₁)Part of Lemma 7.6.1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
       JGrid X  tTileStructure.Forest X n.𝓙₆TileStructure.Forest.𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.6.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.5  u₁𝔓 X, JGrid X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)
    theorem TileStructure.Forest.union_𝓙₆.{u_1}TileStructure.Forest.union_𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} {t : TileStructure.Forest X n} {u₁ : 𝔓 X} (hu₁ : u₁ ∈ t) : ⋃ J ∈ t.𝓙₆ u₁, ↑J = ↑(𝓘 u₁)Part of Lemma 7.6.1. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) :
       JGrid X  tTileStructure.Forest X n.𝓙₆TileStructure.Forest.𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.6.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.5  u₁𝔓 X, JGrid X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)
    Part of Lemma 7.6.1. 
  • complete
    theorem TileStructure.Forest.pairwiseDisjoint_𝓙₆.{u_1}TileStructure.Forest.pairwiseDisjoint_𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ : 𝔓 X} : (t.𝓙₆ u₁).PairwiseDisjoint fun I ↦ ↑IPart of Lemma 7.6.1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} :
      (tTileStructure.Forest X n.𝓙₆TileStructure.Forest.𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.6.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.5  u₁𝔓 X).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely.  fun IGrid X  IGrid X
    theorem TileStructure.Forest.pairwiseDisjoint_𝓙₆.{u_1}TileStructure.Forest.pairwiseDisjoint_𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ : 𝔓 X} : (t.𝓙₆ u₁).PairwiseDisjoint fun I ↦ ↑IPart of Lemma 7.6.1. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} :
      (tTileStructure.Forest X n.𝓙₆TileStructure.Forest.𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.6.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.5  u₁𝔓 X).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely.  fun IGrid X  IGrid X
    Part of Lemma 7.6.1. 

Proof. By Lemma 1.83, it remains only to show that each J \in \mathcal{J}(\fT(\fu_1)) with J \cap \scI(\fu_1) \ne \emptyset is in \mathcal{J}'. But if J \notin \mathcal{J}', then by dyadicproperty \scI(\fu_1) \subsetneq J. Pick \fp \in \fT(\fu_1). Then \scI(\fp) \subsetneq J. This contradicts the definition of \mathcal{J}(\fT(\fu_1)).

Lemma 1.100 follows from the following key estimate.

Lemma1.114
L∃∀Nused by 1

Uses Lemma 1.95, Lemma 1.101, Lemma 1.113, Lemma 1.115, and Lemma 1.116. We have for all bounded f with bounded support \|P_{\mathcal{J}'}|T_{\fT(\fu_2) \setminus \mathfrak{S}}^* g_2|\|_2 \le 2^{102a^3+21a+5} 2^{-\frac{25}{101a}Zn\kappa} \|\mathbf{1}_{\scI(\fu_1)} M_{\mathcal{B},1} |g_2|\|_2.

Lean code for Lemma1.1141 theorem
  • complete
    theorem TileStructure.Forest.bound_for_tree_projection.{u_1}TileStructure.Forest.bound_for_tree_projection.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f : X → ℂ} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      MeasureTheory.eLpNorm
          (TileStructure.Forest.approxOnCube (t.𝓙₆ u₁) fun x ↦ ‖adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂) f x‖) 2
          MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_6_2 a n) *
          MeasureTheory.eLpNorm
            ((↑(𝓘 u₁)).indicator fun x ↦
              MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑 f x)
            2 MeasureTheory.volumeLemma 7.6.2.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`.  (tTileStructure.Forest X n.𝓙₆TileStructure.Forest.𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.6.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.5  u₁𝔓 X) fun xX 
            Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4  (SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
          2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_6_2TileStructure.Forest.C7_6_2 (a n : ℕ) : NNRealThe constant used in `bound_for_tree_projection`.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
            ((↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  fun xX 
              MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
                TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑.  TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑.  fX → ℂ xX)
            2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.bound_for_tree_projection.{u_1}TileStructure.Forest.bound_for_tree_projection.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ : 𝔓 X} {f : X → ℂ} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hf : MeasureTheory.BoundedCompactSupport f MeasureTheory.volume) :
      MeasureTheory.eLpNorm
          (TileStructure.Forest.approxOnCube (t.𝓙₆ u₁) fun x ↦ ‖adjointCarlesonSum ((fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂) f x‖) 2
          MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_6_2 a n) *
          MeasureTheory.eLpNorm
            ((↑(𝓘 u₁)).indicator fun x ↦
              MB MeasureTheory.volume TileStructure.Forest.𝓑 TileStructure.Forest.c𝓑 TileStructure.Forest.r𝓑 f x)
            2 MeasureTheory.volumeLemma 7.6.2. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {fX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X)
      (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hfMeasureTheory.BoundedCompactSupport f MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  fX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. ) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (TileStructure.Forest.approxOnCubeTileStructure.Forest.approxOnCube.{u_1, u_2} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {E' : Type u_2} [NormedAddCommGroup E']
      [NormedSpace ℝ E'] (C : Set (Grid X)) (f : X → E') (x : X) : E'The projection operator `P_𝓒 f(x)`, given above Lemma 7.1.3.
    In lemmas the `c` will be pairwise disjoint on `C`. 
            (tTileStructure.Forest X n.𝓙₆TileStructure.Forest.𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.6.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.5  u₁𝔓 X) fun xX 
            Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. adjointCarlesonSumadjointCarlesonSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (ℭ : Set (𝔓 X))
      (f : X → ℂ) (x : X) : ℂThe definition of `T_ℭ*g(x)`, defined at the bottom of Section 7.4 
                (SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`.(fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`.
                  tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`.
                fX → ℂ xXNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. )
          2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_6_2TileStructure.Forest.C7_6_2 (a n : ℕ) : NNRealThe constant used in `bound_for_tree_projection`.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
            ((↑(𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X)).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  fun xX 
              MBMB.{u_1, u_2, u_3} {X : Type u_1} {E : Type u_2} [MetricSpace X] [MeasurableSpace X] [NormedAddCommGroup E]
      {ι : Type u_3} (μ : MeasureTheory.Measure X) (𝓑 : Set ι) (c : ι → X) (r : ι → ℝ) (u : X → E) (x : X) : ENNRealThe Hardy-Littlewood maximal function w.r.t. a collection of balls 𝓑 with exponent 1.
    M_𝓑 in the blueprint.  MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
                TileStructure.Forest.𝓑TileStructure.Forest.𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] :
      Set (ℕ × ℕ × Grid X)The indexing set for the collection of balls 𝓑, defined above Lemma 7.1.3. 
                TileStructure.Forest.c𝓑TileStructure.Forest.c𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : XThe center function for the collection of balls 𝓑. 
                TileStructure.Forest.r𝓑TileStructure.Forest.r𝓑.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (z : ℕ × ℕ × Grid X) : ℝThe radius function for the collection of balls 𝓑.  fX → ℂ xX)
            2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Lemma 7.6.2. 

We prove this lemma below. First, we deduce Lemma 1.100.

Proof of Lemma 1.100. By Lemma 1.88 and Lemma 1.95, we have that the left-hand side of eq-lhs-small-sep-tree is bounded by 2^{130a^3} \|P_{\mathcal{L}(\fT(\fu_1))} |\mathbf{1}_{\scI(\fu_1)}g_1| \|_2 \|P_{\mathcal{J}(\fT(\fu_1) )}|\mathbf{1}_{\scI(\fu_1)} T_{\fT(\fu_2) \setminus \mathfrak{S}}^* g_2|\|_2. It follows from the definition of the projection operator P and Jensen's inequality that \|P_{\mathcal{L}(\fT(\fu_1))} |g_1\mathbf{1}_{\scI(\fu_1)}| \|_2 \le \|g_1 \mathbf{1}_{\scI(\fu_1)}\|_2. By Lemma 1.113, a cube J \in \mathcal{J}(\fT(\fu_1)) intersects \scI(\fu_1) if and only if J \in \mathcal{J}'. Thus P_{\mathcal{J}(\fT(\fu_1) )}|\mathbf{1}_{\scI(\fu_1)} T_{\fT(\fu_2) \setminus \mathfrak{S}}^* g_2| = P_{\mathcal{J}'}|T_{\fT(\fu_2) \setminus \mathfrak{S}}^* g_2|. Combining this with Lemma 1.114, the definition definekappa and a \ge 4 proves the lemma.

We need two more auxiliary lemmas before we prove Lemma 1.114.

Lemma1.115
L∃∀Nused by 1

If \fp \in \fT(\fu_2) \setminus \mathfrak{S} and J \in \mathcal{J'} with B(\scI(\fp)) \cap B(J) \ne \emptyset, then \ps(\fp) \le s(J) + 2 - \frac{Zn}{202a^3}.

Lean code for Lemma1.1151 theorem
  • complete
    theorem TileStructure.Forest.thin_scale_impact.{u_1}TileStructure.Forest.thin_scale_impact.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ p : 𝔓 X} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hp : p ∈ (fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂) (hJ : J ∈ t.𝓙₆ u₁)
      (hd : ¬Disjoint (Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p)) (Metric.ball (c J) (8 * ↑(defaultD a) ^ s J))) :
      ↑(𝔰 p) ≤ ↑(s J) - TileStructure.Forest.C7_6_3 a nLemma 7.6.3.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X u₂𝔓 X p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hpp ∈ (fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂ : p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X) (hJJ ∈ t.𝓙₆ u₁ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₆TileStructure.Forest.𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.6.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.5  u₁𝔓 X)
      (hd¬Disjoint (Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p)) (Metric.ball (c J) (8 * ↑(defaultD a) ^ s J)) :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
            (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)) :
      (𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. (ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). TileStructure.Forest.C7_6_3TileStructure.Forest.C7_6_3 (a n : ℕ) : ℝThe constant used in `thin_scale_impact`. This is denoted `s₁` in the proof of Lemma 7.6.3.
    Has value `Z * n / (202 * a ^ 3) - 2` in the blueprint.  a n
    theorem TileStructure.Forest.thin_scale_impact.{u_1}TileStructure.Forest.thin_scale_impact.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ u₂ p : 𝔓 X} {J : Grid X} (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂) (h2u : 𝓘 u₁ ≤ 𝓘 u₂)
      (hp : p ∈ (fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂) (hJ : J ∈ t.𝓙₆ u₁)
      (hd : ¬Disjoint (Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p)) (Metric.ball (c J) (8 * ↑(defaultD a) ^ s J))) :
      ↑(𝔰 p) ≤ ↑(s J) - TileStructure.Forest.C7_6_3 a nLemma 7.6.3. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X u₂𝔓 X p𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hu₁u₁ ∈ t : u₁𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n) (hu₂u₂ ∈ t : u₂𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n)
      (huu₁ ≠ u₂ : u₁𝔓 X Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. u₂𝔓 X) (h2u𝓘 u₁ ≤ 𝓘 u₂ : 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₂𝔓 X)
      (hpp ∈ (fun x ↦ t.𝔗 x) u₂ \ t.𝔖₀ u₁ u₂ :
        p𝔓 X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u₂𝔓 X \SDiff.sdiff.{u} {α : Type u} [self : SDiff α] : α → α → α`a \ b` is the set difference of `a` and `b`,
    consisting of all elements in `a` that are not in `b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `\` in identifiers is `sdiff`. tTileStructure.Forest X n.𝔖₀TileStructure.Forest.𝔖₀.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ u₂ : 𝔓 X) : Set (𝔓 X)The set `𝔖` defined in the proof of Lemma 7.4.4.
    We append a subscript 0 to distinguish it from the section variable.  u₁𝔓 X u₂𝔓 X)
      (hJJ ∈ t.𝓙₆ u₁ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₆TileStructure.Forest.𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.6.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.5  u₁𝔓 X)
      (hd¬Disjoint (Metric.ball (𝔠 p) (8 * ↑(defaultD a) ^ 𝔰 p)) (Metric.ball (c J) (8 * ↑(defaultD a) ^ s J)) :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments. 
            (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (𝔠𝔠.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : X p𝔓 X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
            (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X JGrid X)
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)) :
      (𝔰𝔰.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] (p : 𝔓 X) : ℤ p𝔓 X) LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
          TileStructure.Forest.C7_6_3TileStructure.Forest.C7_6_3 (a n : ℕ) : ℝThe constant used in `thin_scale_impact`. This is denoted `s₁` in the proof of Lemma 7.6.3.
    Has value `Z * n / (202 * a ^ 3) - 2` in the blueprint.  a n
    Lemma 7.6.3. 

Proof. Suppose that \ps(\fp) > s(J) + 2 -\frac{Zn}{202a^3} =: s(J) - s_1. Then, we have s_1 + 2 \ge 0 so \rho(\pc(\fp), c(J)) \le 8D^{s(J)}+8D^{\ps(\fp)} \le 16 D^{\ps(\fp) + s_1 + 2}. There exists a tile \fq \in \fT(\fu_1). By forest1, it satisfies \scI(\fq) \subsetneq \scI(\fu_1). Thus \scI(\fu_1) \notin \mathcal{J}'. It follows that J \subsetneq \scI(\fu_1). By coverdyadic and dyadicproperty, there exists a cube J' \in \mathcal{D} with J \subset J' and s(J') = s(J) + 1. By definition of \mathcal{J}', there exists a tile \fp' \in \fT(\fu_1) with \scI(\fp') \subset B(c(J'), 100 D^{s(J') + 1}). By the triangle inequality, the definition defineD and a \ge 4, we have B(c(J'), 100 D^{s(J')+1}) \subset B(\pc(\fp), 128 D^{\ps(\fp) + s_1 + 2}). Since \fp' \in \fT(\fu_1) and \scI(\fu_1) \subset \scI(\fu_2), we have by forest5 d_{\fp'}(\fcc(\fp'), \fcc(\fu_2)) > 2^{Z(n+1)}. Hence, by forest1, the triangle inequality and using that by defineZ Z(n+1) = 2^{12a}(n+1) \ge 3 d_{\fp'}(\fcc(\fu_1), \fcc(\fu_2)) > 2^{Z(n+1)} - 4 \ge 2^{Z(n+1) - 1}. It follows that 2^{Z(n+1)-1} \le d_{\fp'}(\fcc(\fu_1), \fcc(\fu_2)) \le d_{B(\pc(\fp), 128 D^{\ps(\fp) + s_1+ 2})}(\fcc(\fu_1), \fcc(\fu_2)). Using firstdb, we obtain \le 2^{9a + 100a^3 (s_1+3)} d_{\fp}(\fcc(\fu_1), \fcc(\fu_2)). Since \fp' \notin \mathfrak{S} this is bounded by \le 2^{9a + 100a^3 (s_1+3)} 2^{Zn/2}. Thus Z n/2 + Z - 1 \le 9a + 100a^3(s_1 + 3), contradicting the definition of s_1.

Lemma1.116
L∃∀Nused by 1

For each J \in \mathcal{J}' and all s, we have \frac{1}{\mu(J)} \int_J \Bigg(\sum_{\substack{I \in \mathcal{D}, s(I) = s(J) - s\\ I \cap \scI(\fu_1) = \emptyset\\ J \cap B(I) \ne \emptyset}} \mathbf{1}_{B(I)}\bigg)^2 \, \mathrm{d}\mu \le 2^{14a+1} (8 D^{-s})^\kappa.

Lean code for Lemma1.1161 theorem
  • complete
    theorem TileStructure.Forest.square_function_count.{u_1}TileStructure.Forest.square_function_count.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ : 𝔓 X} {J : Grid X} (hJ : J ∈ t.𝓙₆ u₁) {s' : ℤ} :
      ⨍⁻ (x : X) in ↑J,
          (∑ I with s I = s J - s' ∧ Disjoint ↑I ↑(𝓘 u₁) ∧ ¬Disjoint (↑J) (Metric.ball (c I) (8 * ↑(defaultD a) ^ s I)),
              (Metric.ball (c I) (8 * ↑(defaultD a) ^ s I)).indicator 1 x) ^
            2 ∂MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_6_4 a s')Lemma 7.6.4.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {u₁𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hJJ ∈ t.𝓙₆ u₁ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₆TileStructure.Forest.𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.6.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.5  u₁𝔓 X) {s' : Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } :
      ⨍⁻MeasureTheory.laverage.{u_1} {α : Type u_1} {m0 : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealAverage value of an `ℝ≥0∞`-valued function `f` w.r.t. a measure `μ`, denoted `⨍⁻ x, f x ∂μ`.
    
    It is equal to `(μ univ)⁻¹ * ∫⁻ x, f x ∂μ`, so it takes value zero if `μ` is an infinite measure. If
    `μ` is a probability measure, then the average of any function is equal to its integral.
    
    For the average on a set, use `⨍⁻ x in s, f x ∂μ`, defined as `⨍⁻ x, f x ∂(μ.restrict s)`. For the
    average w.r.t. the volume, one can omit `∂volume`.  (xX : XType u_1) inMeasureTheory.laverage.{u_1} {α : Type u_1} {m0 : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealAverage value of an `ℝ≥0∞`-valued function `f` w.r.t. a measure `μ`, denoted `⨍⁻ x, f x ∂μ`.
    
    It is equal to `(μ univ)⁻¹ * ∫⁻ x, f x ∂μ`, so it takes value zero if `μ` is an infinite measure. If
    `μ` is a probability measure, then the average of any function is equal to its integral.
    
    For the average on a set, use `⨍⁻ x in s, f x ∂μ`, defined as `⨍⁻ x, f x ∂(μ.restrict s)`. For the
    average w.r.t. the volume, one can omit `∂volume`.  JGrid X,MeasureTheory.laverage.{u_1} {α : Type u_1} {m0 : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealAverage value of an `ℝ≥0∞`-valued function `f` w.r.t. a measure `μ`, denoted `⨍⁻ x, f x ∂μ`.
    
    It is equal to `(μ univ)⁻¹ * ∫⁻ x, f x ∂μ`, so it takes value zero if `μ` is an infinite measure. If
    `μ` is a probability measure, then the average of any function is equal to its integral.
    
    For the average on a set, use `⨍⁻ x in s, f x ∂μ`, defined as `⨍⁻ x, f x ∂(μ.restrict s)`. For the
    average w.r.t. the volume, one can omit `∂volume`. 
          (∑ IGrid X with
              ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ IGrid X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). s' And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
                DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  IGrid X (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
                  ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  (↑JGrid X)
                      (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X IGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ IGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.),
              (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X IGrid X) (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ IGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  1 xX) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
            2 MeasureTheory.laverage.{u_1} {α : Type u_1} {m0 : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealAverage value of an `ℝ≥0∞`-valued function `f` w.r.t. a measure `μ`, denoted `⨍⁻ x, f x ∂μ`.
    
    It is equal to `(μ univ)⁻¹ * ∫⁻ x, f x ∂μ`, so it takes value zero if `μ` is an infinite measure. If
    `μ` is a probability measure, then the average of any function is equal to its integral.
    
    For the average on a set, use `⨍⁻ x in s, f x ∂μ`, defined as `⨍⁻ x, f x ∂(μ.restrict s)`. For the
    average w.r.t. the volume, one can omit `∂volume`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_6_4TileStructure.Forest.C7_6_4 (a : ℕ) (s : ℤ) : NNRealThe constant used in `square_function_count`.  a s')
    theorem TileStructure.Forest.square_function_count.{u_1}TileStructure.Forest.square_function_count.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n}
      {u₁ : 𝔓 X} {J : Grid X} (hJ : J ∈ t.𝓙₆ u₁) {s' : ℤ} :
      ⨍⁻ (x : X) in ↑J,
          (∑ I with s I = s J - s' ∧ Disjoint ↑I ↑(𝓘 u₁) ∧ ¬Disjoint (↑J) (Metric.ball (c I) (8 * ↑(defaultD a) ^ s I)),
              (Metric.ball (c I) (8 * ↑(defaultD a) ^ s I)).indicator 1 x) ^
            2 ∂MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_6_4 a s')Lemma 7.6.4. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {u₁𝔓 X : 𝔓𝔓.{u, u_1, u_2} {𝕜 : Type u_1} [RCLike 𝕜] (X : Type u) {A : NNReal} [PseudoMetricSpace X]
      [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X]
      {Q : MeasureTheory.SimpleFunc X (Θ X)} [PreTileStructure Q D κ S o] : Type u XType u_1} {JGrid X : GridGrid.{u} (X : Type u) {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Type uThe indexing type of the grid structure. Elements are called (dyadic) cubes.
    Note that this type has instances for both `≤` and `⊆`, but they do *not* coincide.  XType u_1}
      (hJJ ∈ t.𝓙₆ u₁ : JGrid X Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. tTileStructure.Forest X n.𝓙₆TileStructure.Forest.𝓙₆.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (u₁ : 𝔓 X) : Set (Grid X)The definition `𝓙'` at the start of Section 7.6.
    We use a different notation to distinguish it from the 𝓙' used in Section 7.5  u₁𝔓 X) {s' : Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } :
      ⨍⁻MeasureTheory.laverage.{u_1} {α : Type u_1} {m0 : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealAverage value of an `ℝ≥0∞`-valued function `f` w.r.t. a measure `μ`, denoted `⨍⁻ x, f x ∂μ`.
    
    It is equal to `(μ univ)⁻¹ * ∫⁻ x, f x ∂μ`, so it takes value zero if `μ` is an infinite measure. If
    `μ` is a probability measure, then the average of any function is equal to its integral.
    
    For the average on a set, use `⨍⁻ x in s, f x ∂μ`, defined as `⨍⁻ x, f x ∂(μ.restrict s)`. For the
    average w.r.t. the volume, one can omit `∂volume`.  (xX : XType u_1) inMeasureTheory.laverage.{u_1} {α : Type u_1} {m0 : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealAverage value of an `ℝ≥0∞`-valued function `f` w.r.t. a measure `μ`, denoted `⨍⁻ x, f x ∂μ`.
    
    It is equal to `(μ univ)⁻¹ * ∫⁻ x, f x ∂μ`, so it takes value zero if `μ` is an infinite measure. If
    `μ` is a probability measure, then the average of any function is equal to its integral.
    
    For the average on a set, use `⨍⁻ x in s, f x ∂μ`, defined as `⨍⁻ x, f x ∂(μ.restrict s)`. For the
    average w.r.t. the volume, one can omit `∂volume`.  JGrid X,MeasureTheory.laverage.{u_1} {α : Type u_1} {m0 : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealAverage value of an `ℝ≥0∞`-valued function `f` w.r.t. a measure `μ`, denoted `⨍⁻ x, f x ∂μ`.
    
    It is equal to `(μ univ)⁻¹ * ∫⁻ x, f x ∂μ`, so it takes value zero if `μ` is an infinite measure. If
    `μ` is a probability measure, then the average of any function is equal to its integral.
    
    For the average on a set, use `⨍⁻ x in s, f x ∂μ`, defined as `⨍⁻ x, f x ∂(μ.restrict s)`. For the
    average w.r.t. the volume, one can omit `∂volume`. 
          (∑ IGrid X with
              ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ IGrid X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ JGrid X -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). s' And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
                DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  IGrid X (𝓘𝓘.{u, u_1} {𝕜 : Type u_1} [RCLike 𝕜] {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      {D : ℕ} {κ : ℝ} {S : ℕ} {o : X} [FunctionDistances 𝕜 X] {Q : MeasureTheory.SimpleFunc X (Θ X)}
      [PreTileStructure Q D κ S o] : 𝔓 X → Grid X u₁𝔓 X) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
                  ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.DisjointDisjoint.{u_1} {α : Type u_1} [PartialOrder α] [OrderBot α] (a b : α) : PropTwo elements of a lattice are disjoint if their inf is the bottom element.
      (This generalizes disjoint sets, viewed as members of the subset lattice.)
    
    Note that we define this without reference to `⊓`, as this allows us to talk about orders where
    the infimum is not unique, or where implementing `Inf` would require additional `Decidable`
    arguments.  (↑JGrid X)
                      (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X IGrid X)
                        (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                          (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                            ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ IGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.),
              (Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  (cc.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → X IGrid X)
                    (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                      (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                        ss.{u} {X : Type u} {A : NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A] {D : ℕ} {κ : ℝ} {S : ℕ}
      {o : X} [GridStructure X D κ S o] : Grid X → ℤ IGrid X)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.).indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
                1 xX) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
            2 MeasureTheory.laverage.{u_1} {α : Type u_1} {m0 : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealAverage value of an `ℝ≥0∞`-valued function `f` w.r.t. a measure `μ`, denoted `⨍⁻ x, f x ∂μ`.
    
    It is equal to `(μ univ)⁻¹ * ∫⁻ x, f x ∂μ`, so it takes value zero if `μ` is an infinite measure. If
    `μ` is a probability measure, then the average of any function is equal to its integral.
    
    For the average on a set, use `⨍⁻ x in s, f x ∂μ`, defined as `⨍⁻ x, f x ∂(μ.restrict s)`. For the
    average w.r.t. the volume, one can omit `∂volume`. MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_6_4TileStructure.Forest.C7_6_4 (a : ℕ) (s : ℤ) : NNRealThe constant used in `square_function_count`.  a s')
    Lemma 7.6.4. 

Proof. Since J \in \mathcal{J}' we have J \subset \scI(\fu_1). Thus, if B(I) \cap J \ne \emptyset then B(I) \cap J \subset \{x \in J \ : \ \rho(x, X \setminus J) \le 8D^{s(I)}\}. Furthermore, for each s the balls B(I) with s(I) = s have bounded overlap: Consider the collection \mathcal{D}_{s,x} of all I \in \mathcal{D} with x \in B(I) and s(I) = s. By eq-vol-sp-cube and dyadicproperty, the balls B(c(I), \frac{1}{4} D^{s(I)}), I \in \mathcal{D}_{s,x} are disjoint, and by the triangle inequality, they are contained in B(x, 9 D^{s}). By the doubling property doublingx, we have \mu(B(x, 9D^{s})) \le 2^{7a} \mu(B(c(I), \frac{1}{4} D^{s(I)})) for each I \in \mathcal{D}_{s,x}. Thus \mu(B(x, 9D^{s})) \ge \sum_{I \in \mathcal{D}_{s,x}} \mu(B(c(I), \frac{1}{4} D^{s(I)})) \ge 2^{-7a} |\mathcal{D}_{s,x}| \mu(B(x, 9D^{s})). Dividing by the positive \mu(B(x, 9D^{s})), we obtain that for each x \Bigg(\sum_{\substack{I \in \mathcal{D}, s(I) = s(J) - s\\ I \cap \scI(\fu_1) = \emptyset\\ J \cap B(I) \ne \emptyset}} \mathbf{1}_{B(I)}(x) \bigg)^2 \le |\mathcal{D}_{s(J) - s,x}|^2 \le 2^{14a}. Combining this with the previous inclusion and the small boundary property eq-small-boundary, noting that 8D^{s(I)}=8D^{-s}D^{s(J)}, the lemma follows.

Proof of Lemma 1.114. Expanding the definition of P_{\mathcal{J}'}, we have \|P_{\mathcal{J}'}|T_{\fT(\fu_2) \setminus \mathfrak{S}}^* g_2|\|_2 = \left(\sum_{J \in \mathcal{J}'} \frac{1}{\mu(J)} \left(\int_J \left| \sum_{\fp \in \fT(\fu_2) \setminus \mathfrak{S}} T_{\fp}^* g_2(y) \right| \, \mathrm{d}\mu(y) \right)^2 \right)^{1/2}. By Lemma 1.95, the innermost sum in the last display is 0 if J \cap B(\scI(\fp)) = \emptyset. Then we split that sum according to the scale of \fp relative to the scale of J. By Lemma 1.115, s_1 \le s(J) - \ps(\fp) \le 2S with s_1 := \lfloor\frac{Zn}{202a^3} - 2\rfloor = \left(\sum_{J \in \mathcal{J}'} \frac{1}{\mu(J)} \left(\int_J \left| \sum_{s=s_1}^{2S} \sum_{\substack{\fp \in \fT(\fu_2) \setminus \mathfrak{S}\\ \ps(\fp) = s(J) - s\\ J \cap B(\scI(\fp)) \ne \emptyset}} T_{\fp}^* g_2(y) \right| \, \mathrm{d}\mu(y) \right)^2 \right)^{1/2}. Then we apply the triangle inequality and Minkowski's inequality to get \le \sum_{s=s_1}^{2S} \left( \sum_{J \in \mathcal{J}'} \frac{1}{\mu(J)} \left(\int_J \sum_{\substack{\fp \in \fT(\fu_2) \setminus \mathfrak{S}\\ \ps(\fp) = s(J) - s\\ J \cap B(\scI(\fp)) \ne \emptyset}} |T_{\fp}^* g_2(y)| \, \mathrm{d}\mu(y) \right)^2\right)^{1/2}. We have by Lemma 1.95 and eq-Ks-size |T_{\fp}^* g_2(y)| \le 2^{102a^3} \mathbf{1}_{B(\pc(\fp), 8D^{\ps(\fp)})}(y) \int_{E(\fp)} \frac{1}{\mu(B(x, D^{\ps(\fp)}))} |g_2(x)| \, \mathrm{d}\mu(x). Using the doubling property doublingx, it follows that \mu(B(\pc(\fp), 8D^{\ps(\fp)})) \le 2^{4a} \mu(B(x, D^{\ps(\fp)})). Thus, using also a \ge 4 |T_{\fp}^* g_2(y)| \le 2^{102a^3+4a} \mathbf{1}_{B(\pc(\fp), 8D^{\ps(\fp)})}(y) \frac{1}{\mu(B(\pc(\fp), 8D^{\ps(\fp)}))} \int_{E(\fp)} |g_2(x)| \, \mathrm{d}\mu(x). Since for each I \in \mathcal{D} the sets E(\fp), \fp \in \fP(I) are disjoint, it follows that \int_J \sum_{\substack{\fp \in \fT(\fu_2) \setminus \mathfrak{S}\\ \scI(\fp) = I\\ J \cap B(\scI(\fp)) \ne \emptyset}} |T_{\fp}^* g_2(y)| \, \mathrm{d}\mu \le 2^{102a^3+4a} \int_J \mathbf{1}_{B(I)} \frac{1}{\mu(B(\pc(\fp), 8D^{\ps(\fp)}))} \int_{B(\pc(\fp), 8D^{\ps(\fp)})} |g_2(x)| \, \mathrm{d}\mu(x) \le 2^{102a^3+4a} \int_J M_{\mathcal{B},1} |g_2|(y) \mathbf{1}_{B(I)}(y) \, \mathrm{d}\mu(y). By Lemma 1.101, we have \scI(\fp) \cap \scI(\fu_1) = \emptyset for all \fp \in \fT(\fu_2) \setminus \mathfrak{S}. Thus we can estimate eq-sep-tree-small-1 by 2^{102a^3+4a} \sum_{s=s_1}^{2S} \left( \sum_{J \in \mathcal{J}'} \frac{1}{\mu(J)} \left(\int_J \sum_{\substack{I \in \mathcal{D}, s(I) = s(J) - s\\ I \cap \scI(\fu_1) = \emptyset\\ J \cap B(I) \ne \emptyset}} M_{\mathcal{B},1} |g_2| \mathbf{1}_{B(I)} \, \mathrm{d}\mu \right)^2\right)^{1/2}\,, which is by Cauchy-Schwarz at most 2^{102a^3+4a} \sum_{s=s_1}^{2S} \left( \sum_{J \in \mathcal{J}'} \int_J ( M_{\mathcal{B},1} |g_2|)^2 \, \mathrm{d}\mu \times \frac{1}{\mu(J)} \int_J \left(\sum_{\substack{I \in \mathcal{D}, s(I) = s(J) - s\\ I \cap \scI(\fu_1) = \emptyset\\ J \cap B(I) \ne \emptyset}} \mathbf{1}_{B(I)}\right)^2 \, \mathrm{d}\mu \right)^{1/2}. Using Lemma 1.116, we bound this by 2^{102a^3+4a} \sum_{s=s_1}^{2S} \left(2^{14a+1} (8 D^{-s})^\kappa \sum_{J \in \mathcal{J}'} \int_J (M_{\mathcal{B},1} |g_2|)^2\right)^{1/2}, and since dyadic cubes in \mathcal{J}' form a partition of \scI(\fu_1) by Lemma 1.113, \kappa \le 1 by definekappa, and a \ge 4 \le 2^{102a^3+11a+2} \sum_{s=s_1}^{2S} D^{-s\kappa/2} \|\mathbf{1}_{\scI(\fu_1)} M_{\mathcal{B},1} |g_2|\|_2 \le 2^{102a^3+11a+2} D^{-s_1 \kappa /2} \frac{1}{1 - D^{-\kappa/2}} \|\mathbf{1}_{\scI(\fu_1)} M_{\mathcal{B},1} |g_2|\|_2. By convexity of t \mapsto D^{-t} and since D \ge 2, we have for all 0 \le t \le 1 D^{-t} \le 1 - t(1 - 1/D) \le 1 - \frac{1}{2}t. Using this for t = \kappa/2 and using that s_1 = \frac{Zn}{202a^3} - 2 and the definitions defineD and definekappa of \kappa and D \le 2^{102a^3+11a+2} 2^{-100a^2(\frac{Zn}{202a^3} - 3) \frac{\kappa}{2}} \frac{2}{\kappa} \|\mathbf{1}_{\scI(\fu_1)} M_{\mathcal{B},1} |g_2|\|_2 = 2^{102a^3+21a+4} 2^{150a^2\kappa} 2^{-\frac{100}{404a}Zn\kappa} \|\mathbf{1}_{\scI(\fu_1)} M_{\mathcal{B},1} |g_2|\|_2. Using the definition definekappa of \kappa and a \ge 4, the lemma follows.

1.5.17. Forests🔗

In this subsection, we complete the proof of Theorem 1.7 from the results of the previous subsections.

Define an n-row to be an n-forest (\fU, \fT), i.e. satisfying conditions forest1 - forest6, such that in addition the sets \scI(\fu), \fu \in \fU are pairwise disjoint.

Lemma1.117
L∃∀Nused by 1

Let (\fU, \fT) be an n-forest. Then there exists a decomposition \fU = \dot{\bigcup_{1 \le j \le 2^n}} \fU_j such that for all j = 1, \dotsc, 2^n the pair (\fU_j, \fT|_{\fU_j}) is an n-row.

Lean code for Lemma1.1173 declarations
  • complete
    def TileStructure.Forest.rowDecomp.{u_1}TileStructure.Forest.rowDecomp.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ) : TileStructure.Row X nThe row-decomposition of a tree, defined in the proof of Lemma 7.7.1.
    The indexing is off-by-one compared to the blueprint.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } (tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n) (j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) : TileStructure.RowTileStructure.Row.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-row  XType u_1 n
    def TileStructure.Forest.rowDecomp.{u_1}TileStructure.Forest.rowDecomp.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ) : TileStructure.Row X nThe row-decomposition of a tree, defined in the proof of Lemma 7.7.1.
    The indexing is off-by-one compared to the blueprint. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } (tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n)
      (j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) : TileStructure.RowTileStructure.Row.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-row  XType u_1 n
    The row-decomposition of a tree, defined in the proof of Lemma 7.7.1.
    The indexing is off-by-one compared to the blueprint. 
  • complete
    theorem TileStructure.Forest.biUnion_rowDecomp.{u_1}TileStructure.Forest.biUnion_rowDecomp.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} :
      ⋃ j, ⋃ (_ : j < 2 ^ n), (t.rowDecomp j).𝔘 = t.𝔘Part of Lemma 7.7.1  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} :
       j,  (_ : j <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. n), (tTileStructure.Forest X n.rowDecompTileStructure.Forest.rowDecomp.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ) : TileStructure.Row X nThe row-decomposition of a tree, defined in the proof of Lemma 7.7.1.
    The indexing is off-by-one compared to the blueprint.  j).𝔘TileStructure.Forest.𝔘.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : Set (𝔓 X) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. tTileStructure.Forest X n.𝔘TileStructure.Forest.𝔘.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : Set (𝔓 X)
    theorem TileStructure.Forest.biUnion_rowDecomp.{u_1}TileStructure.Forest.biUnion_rowDecomp.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} :
      ⋃ j, ⋃ (_ : j < 2 ^ n), (t.rowDecomp j).𝔘 = t.𝔘Part of Lemma 7.7.1 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} :
       j,
           (_ : j <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. n),
            (tTileStructure.Forest X n.rowDecompTileStructure.Forest.rowDecomp.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ) : TileStructure.Row X nThe row-decomposition of a tree, defined in the proof of Lemma 7.7.1.
    The indexing is off-by-one compared to the blueprint.  j).𝔘TileStructure.Forest.𝔘.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : Set (𝔓 X) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        tTileStructure.Forest X n.𝔘TileStructure.Forest.𝔘.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : Set (𝔓 X)
    Part of Lemma 7.7.1 
  • complete
    theorem TileStructure.Forest.pairwiseDisjoint_rowDecomp.{u_1}TileStructure.Forest.pairwiseDisjoint_rowDecomp.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} :
      (Set.Iio (2 ^ n)).PairwiseDisjoint fun x ↦ (t.rowDecomp x).𝔘Part of Lemma 7.7.1  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} :
      (Set.IioSet.Iio.{u_1} {α : Type u_1} [Preorder α] (b : α) : Set α`Iio b` is the left-infinite right-open interval $(-∞, b)$.  (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. n)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely.  fun x  (tTileStructure.Forest X n.rowDecompTileStructure.Forest.rowDecomp.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ) : TileStructure.Row X nThe row-decomposition of a tree, defined in the proof of Lemma 7.7.1.
    The indexing is off-by-one compared to the blueprint.  x).𝔘TileStructure.Forest.𝔘.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : Set (𝔓 X)
    theorem TileStructure.Forest.pairwiseDisjoint_rowDecomp.{u_1}TileStructure.Forest.pairwiseDisjoint_rowDecomp.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} :
      (Set.Iio (2 ^ n)).PairwiseDisjoint fun x ↦ (t.rowDecomp x).𝔘Part of Lemma 7.7.1 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} :
      (Set.IioSet.Iio.{u_1} {α : Type u_1} [Preorder α] (b : α) : Set α`Iio b` is the left-infinite right-open interval $(-∞, b)$.  (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. n)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely. 
        fun x  (tTileStructure.Forest X n.rowDecompTileStructure.Forest.rowDecomp.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ) : TileStructure.Row X nThe row-decomposition of a tree, defined in the proof of Lemma 7.7.1.
    The indexing is off-by-one compared to the blueprint.  x).𝔘TileStructure.Forest.𝔘.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : Set (𝔓 X)
    Part of Lemma 7.7.1 

Proof. Define recursively \fU_j to be a maximal disjoint set of tiles \fu in \fU \setminus \bigcup_{j' < j} \fU_{j'} with inclusion maximal \scI(\fu). Properties forest1, -forest6 for (\fU_j, \fT|_{\fU_k}) follow immediately from the corresponding properties for (\fU, \fT), and the cubes \scI(\fu), \fu \in \fU_j are disjoint by definition. The collections \fU_j are also disjoint by definition.

Now we show by induction on j that each point is contained in at most 2^n - j cubes \scI(\fu) with \fu \in \fU \setminus \bigcup_{j' \le j} \fU_{j'}. This implies that \bigcup_{j = 1}^{2^n} \fU_j = \fU, which completes the proof of the Lemma. For j = 0 each point is contained in at most 2^n cubes by forest3. For larger j, if x is contained in any cube \scI(\fu) with \fu \in \fU \setminus \bigcup_{j' < j} \fU_{j'}, then it is contained in a maximal such cube. Thus it is contained in a cube in \scI(\fu) with \fu \in \fU_j. Thus the number \fu \in \fU \setminus \bigcup_{j' \le j} \fU_{j'} with x\in \scI(\fu) is zero, or is less than the number of \fu \in \fU \setminus \bigcup_{j' \le j-1} \fU_{j'} with x \in \scI(\fu) by at least one.

We pick a decomposition of the forest (\fU, \fT) into 2^n n-rows (\fU_j, \fT_j) := (\fU_j, \fT|_{\fU_j}) as in Lemma 1.117. To save some space in the proofs of the remaining lemmas in this section we will write T_{\fC} = \sum_{\fp \in \fC} T_{\fp},\qquad T_{\fC}^* = \sum_{\fp \in \fC} T_{\fp}^*, T_{\mathfrak{R}_j} = \sum_{\fu \in \fU_j} T_{\fT(\fu)},\qquad T_{\mathfrak{R}_j}^* = \sum_{\fu \in \fU_j} T_{\fT(\fu)}^*.

Lemma1.118
L∃∀Nused by 1

Uses Lemma 1.95 and Lemma 1.96. For each 1 \le j \le 2^n and each bounded g supported on G we have \left\| T_{\mathfrak{R}_j}^*g \right\|_2 \le 2^{182a^3} 2^{-n/2} \|g\|_2 and \left\| \mathbf{1}_F T_{\mathfrak{R}_j}^*g \right\|_2 \le 2^{283a^3} 2^{-n/2} \dens_2(\bigcup_{\fu\in \fU}\fT(\fu))^{1/2} \|g\|_2.

Lean code for Lemma1.1182 theorems
  • complete
    theorem TileStructure.Forest.row_bound.{u_1}TileStructure.Forest.row_bound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n j : ℕ} {t : TileStructure.Forest X n} {g : X → ℂ} (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume)
      (h2g : Function.support g ⊆ G) :
      MeasureTheory.eLpNorm (t.adjointCarlesonRowSum j g) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_7_2_1 a n) * MeasureTheory.eLpNorm g 2 MeasureTheory.volume {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2gFunction.support g ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  gX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  (tTileStructure.Forest X n.adjointCarlesonRowSumTileStructure.Forest.adjointCarlesonRowSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ)
      (f : X → ℂ) (x : X) : ℂThe definition of `T_{ℜ_j}*f(x)`, defined above Lemma 7.7.2.  j gX → ℂ) 2
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_7_2_1TileStructure.Forest.C7_7_2_1 (a n : ℕ) : NNRealThe constant used in `row_bound`.
    Has value `2 ^ (182 * a ^ 3 - n / 2)` in the blueprint.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.row_bound.{u_1}TileStructure.Forest.row_bound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n j : ℕ} {t : TileStructure.Forest X n} {g : X → ℂ} (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume)
      (h2g : Function.support g ⊆ G) :
      MeasureTheory.eLpNorm (t.adjointCarlesonRowSum j g) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_7_2_1 a n) * MeasureTheory.eLpNorm g 2 MeasureTheory.volume
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2gFunction.support g ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  gX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (tTileStructure.Forest X n.adjointCarlesonRowSumTileStructure.Forest.adjointCarlesonRowSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ)
      (f : X → ℂ) (x : X) : ℂThe definition of `T_{ℜ_j}*f(x)`, defined above Lemma 7.7.2.  j gX → ℂ) 2
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_7_2_1TileStructure.Forest.C7_7_2_1 (a n : ℕ) : NNRealThe constant used in `row_bound`.
    Has value `2 ^ (182 * a ^ 3 - n / 2)` in the blueprint.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
  • complete
    theorem TileStructure.Forest.indicator_row_bound.{u_1}TileStructure.Forest.indicator_row_bound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n j : ℕ} {t : TileStructure.Forest X n}
      {g : X → ℂ} (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume) (h2g : Function.support g ⊆ G) :
      MeasureTheory.eLpNorm (F.indicator (t.adjointCarlesonRowSum j g)) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_7_2_2 a n) * dens₂ (⋃ u ∈ t, (fun x ↦ t.𝔗 x) u) ^ 2⁻¹ *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volume {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2gFunction.support g ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  gX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  (FSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  (tTileStructure.Forest X n.adjointCarlesonRowSumTileStructure.Forest.adjointCarlesonRowSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ)
      (f : X → ℂ) (x : X) : ℂThe definition of `T_{ℜ_j}*f(x)`, defined above Lemma 7.7.2.  j gX → ℂ)) 2
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_7_2_2TileStructure.Forest.C7_7_2_2 (a n : ℕ) : NNRealThe constant used in `indicator_row_bound`.
    Has value `2 ^ (283 * a ^ 3 - n / 2)` in the blueprint.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            dens₂dens₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number.  (⋃ u𝔓 X  tTileStructure.Forest X n, (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. 2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.indicator_row_bound.{u_1}TileStructure.Forest.indicator_row_bound.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n j : ℕ} {t : TileStructure.Forest X n}
      {g : X → ℂ} (hg : MeasureTheory.BoundedCompactSupport g MeasureTheory.volume) (h2g : Function.support g ⊆ G) :
      MeasureTheory.eLpNorm (F.indicator (t.adjointCarlesonRowSum j g)) 2 MeasureTheory.volume ≤
        ↑(TileStructure.Forest.C7_7_2_2 a n) * dens₂ (⋃ u ∈ t, (fun x ↦ t.𝔗 x) u) ^ 2⁻¹ *
          MeasureTheory.eLpNorm g 2 MeasureTheory.volume
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n j : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {gX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (hgMeasureTheory.BoundedCompactSupport g MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  gX → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (h2gFunction.support g ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  gX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`. 
          (FSet X.indicatorSet.indicator.{u_1, u_3} {α : Type u_1} {M : Type u_3} [Zero M] (s : Set α) (f : α → M) (x : α) : M`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise. 
            (tTileStructure.Forest X n.adjointCarlesonRowSumTileStructure.Forest.adjointCarlesonRowSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ)
      (f : X → ℂ) (x : X) : ℂThe definition of `T_{ℜ_j}*f(x)`, defined above Lemma 7.7.2.  j gX → ℂ))
          2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_7_2_2TileStructure.Forest.C7_7_2_2 (a n : ℕ) : NNRealThe constant used in `indicator_row_bound`.
    Has value `2 ^ (283 * a ^ 3 - n / 2)` in the blueprint.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            dens₂dens₂.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] (𝔓' : Set (𝔓 X)) :
      ENNRealThis density is defined to live in `ℝ≥0∞`. Use `ENNReal.toReal` to get a real number. 
                (⋃ u𝔓 X  tTileStructure.Forest X n, (fun x𝔓 X  tTileStructure.Forest X n.𝔗TileStructure.Forest.𝔗.{u_1} {X : Type u_1} [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (self : TileStructure.Forest X n) : 𝔓 X → Set (𝔓 X)The value of `𝔗 u` only matters when `u ∈ 𝔘`.  x𝔓 X) u𝔓 X) ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
              2⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  gX → ℂ 2
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 

Proof. Since for each j the top cubes \scI(\fu), \fu \in \fU_j are disjoint, we have for all bounded g supported on G by Lemma 1.95 \left\|\mathbf{1}_F \sum_{\fu \in \fU_j} \sum_{\fp \in \fT(\fu)} T_{\fp}^* g\right\|_2^2 = \left\|\mathbf{1}_F \sum_{\fu \in \fU_j} \sum_{\fp \in \fT(\fu)} \mathbf{1}_{\scI(\fu)} T_{\fp}^* \mathbf{1}_{\scI(\fu)} g\right\|_2^2 = \sum_{\fu \in \fU_j} \int_{\scI(\fu)} \left| \mathbf{1}_F \sum_{\fp \in \fT(\fu)} T_{\fp}^* \mathbf{1}_{\scI(\fu)} g\right|^2 \, \mathrm{d}\mu \le \sum_{\fu \in \fU_j} \left\|\mathbf{1}_F \sum_{\fp \in \fT(\fu)} T_{\fp}^* \mathbf{1}_G \mathbf{1}_{\scI(\fu)} g\right\|_2^2. Applying Lemma 1.96 and the density assumption forest4, then taking square roots, we obtain \left\| \mathbf{1}_F T_{\mathfrak{R}_j}^*g \right\|_2 \le 2^{282a^3} 2^{(4a+1-n)/2} \dens_2(\bigcup_{\fu\in \fU}\fT(\fu))^{1/2} \left( \sum_{\fu \in \fU_j} \left\| \mathbf{1}_{\scI(\fu)} g\right\|_2^2 \right)^{1/2}. Again by disjointedness of the cubes \scI(\fu), this is estimated by 2^{282a^3} 2^{(4a+1-n)/2} \dens_2(\bigcup_{\fu\in \fU}\fT(\fu))^{1/2} \|g\|_2. Thus eq-row-bound-2 follows, since a \ge 4. The proof of eq-row-bound-1 is the same up to replacing F by X.

Lemma1.119
L∃∀Nused by 1

Uses Lemma 1.97 and Lemma 1.98. For all 1 \le j,j' \le 2^n with j\ne j' and for all bounded g_1, g_2 supported on G, it holds that \left| \int T_{\mathfrak{R}_j}^*g_1 \overline{T_{\mathfrak{R}_{j'}}^*g_2} \, \mathrm{d}\mu \right| \le 2^{876a^3-4n}\|g_1\|_2 \|g_2\|_2.

Lean code for Lemma1.1191 theorem
  • complete
    theorem TileStructure.Forest.row_correlation.{u_1}TileStructure.Forest.row_correlation.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n j j' : ℕ} {t : TileStructure.Forest X n} {f₁ f₂ : X → ℂ} (lj : j < 2 ^ n) (lj' : j' < 2 ^ n) (hn : j ≠ j')
      (hf₁ : MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume) (nf₁ : Function.support f₁ ⊆ G)
      (hf₂ : MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume) (nf₂ : Function.support f₂ ⊆ G) :
      ‖∫ (x : X), t.adjointCarlesonRowSum j f₁ x * (starRingEnd ℂ) (t.adjointCarlesonRowSum j' f₂ x)‖ₑ ≤
        ↑(TileStructure.Forest.C7_7_3 a n) * MeasureTheory.eLpNorm f₁ 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm f₂ 2 MeasureTheory.volumeLemma 7.7.3.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n j j' : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} {f₁X → ℂ f₂X → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (ljj < 2 ^ n : j <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. n) (lj'j' < 2 ^ n : j' <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. n) (hnj ≠ j' : j Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. j')
      (hf₁MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₁X → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (nf₁Function.support f₁ ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  f₁X → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X)
      (hf₂MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume : MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₂X → ℂ MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (nf₂Function.support f₂ ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  f₂X → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            tTileStructure.Forest X n.adjointCarlesonRowSumTileStructure.Forest.adjointCarlesonRowSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ)
      (f : X → ℂ) (x : X) : ℂThe definition of `T_{ℜ_j}*f(x)`, defined above Lemma 7.7.2.  j f₁X → ℂ xX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) (tTileStructure.Forest X n.adjointCarlesonRowSumTileStructure.Forest.adjointCarlesonRowSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ)
      (f : X → ℂ) (x : X) : ℂThe definition of `T_{ℜ_j}*f(x)`, defined above Lemma 7.7.2.  j' f₂X → ℂ xX)‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_7_3TileStructure.Forest.C7_7_3 (a n : ℕ) : NNRealThe constant used in `row_correlation`.
    Has value `2 ^ (876 * a ^ 3 - 4 * n)` in the blueprint.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  f₁X → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  f₂X → ℂ 2 MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    theorem TileStructure.Forest.row_correlation.{u_1}TileStructure.Forest.row_correlation.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n j j' : ℕ} {t : TileStructure.Forest X n} {f₁ f₂ : X → ℂ} (lj : j < 2 ^ n) (lj' : j' < 2 ^ n) (hn : j ≠ j')
      (hf₁ : MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume) (nf₁ : Function.support f₁ ⊆ G)
      (hf₂ : MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume) (nf₂ : Function.support f₂ ⊆ G) :
      ‖∫ (x : X), t.adjointCarlesonRowSum j f₁ x * (starRingEnd ℂ) (t.adjointCarlesonRowSum j' f₂ x)‖ₑ ≤
        ↑(TileStructure.Forest.C7_7_3 a n) * MeasureTheory.eLpNorm f₁ 2 MeasureTheory.volume *
          MeasureTheory.eLpNorm f₂ 2 MeasureTheory.volumeLemma 7.7.3. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n j j' : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    }
      {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n}
      {f₁X → ℂ f₂X → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } (ljj < 2 ^ n : j <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. n)
      (lj'j' < 2 ^ n : j' <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. n) (hnj ≠ j' : j Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. j')
      (hf₁MeasureTheory.BoundedCompactSupport f₁ MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₁X → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (nf₁Function.support f₁ ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  f₁X → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X)
      (hf₂MeasureTheory.BoundedCompactSupport f₂ MeasureTheory.volume :
        MeasureTheory.BoundedCompactSupportMeasureTheory.BoundedCompactSupport.{u_1, u_2} {X : Type u_1} {E : Type u_2} [TopologicalSpace X] [MeasurableSpace X]
      [TopologicalSpace E] [ENorm E] [Zero E] (f : X → E) (μ : MeasureTheory.Measure X := by volume_tac) : PropBounded compactly supported measurable functions  f₂X → ℂ
          MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. )
      (nf₂Function.support f₂ ⊆ G : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  f₂X → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. GSet X) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral  (xX : XType u_1),MeasureTheory.integral.{u_6, u_7} {α : Type u_6} {G : Type u_7} [NormedAddCommGroup G] [NormedSpace ℝ G]
      {x✝ : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → G) : GThe Bochner integral 
            tTileStructure.Forest X n.adjointCarlesonRowSumTileStructure.Forest.adjointCarlesonRowSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ)
      (f : X → ℂ) (x : X) : ℂThe definition of `T_{ℜ_j}*f(x)`, defined above Lemma 7.7.2.  j f₁X → ℂ xX *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (starRingEndstarRingEnd.{u} (R : Type u) [CommSemiring R] [StarRing R] : R →+* R`star` as a ring endomorphism, for commutative `R`. This is used to denote complex
    conjugation, and is available under the notation `conj` in the scope `ComplexConjugate`.
    
    Note that this is the preferred form (over `starRingAut`, available under the same hypotheses)
    because the notation `E →ₗ⋆[R] F` for an `R`-conjugate-linear map (short for
    `E →ₛₗ[starRingEnd R] F`) does not pretty-print if there is a coercion involved, as would be the
    case for `(↑starRingAut : R →* R)`.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. )
                (tTileStructure.Forest X n.adjointCarlesonRowSumTileStructure.Forest.adjointCarlesonRowSum.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ)
      (f : X → ℂ) (x : X) : ℂThe definition of `T_{ℜ_j}*f(x)`, defined above Lemma 7.7.2.  j' f₂X → ℂ
                  xX)‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        (TileStructure.Forest.C7_7_3TileStructure.Forest.C7_7_3 (a n : ℕ) : NNRealThe constant used in `row_correlation`.
    Has value `2 ^ (876 * a ^ 3 - 4 * n)` in the blueprint.  a n) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  f₁X → ℂ 2
              MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  f₂X → ℂ 2
            MeasureTheory.volumeMeasureTheory.MeasureSpace.volume.{u_6} {α : Type u_6} [self : MeasureTheory.MeasureSpace α] : MeasureTheory.Measure α`volume` is the canonical measure on `α`. 
    Lemma 7.7.3. 

Proof. We have by Lemma 1.95 and the triangle inequality that \left| \int T_{\mathfrak{R}_j}^*g_1 \overline{T_{\mathfrak{R}_{j'}}^*g_2} \, \mathrm{d}\mu \right| \le \sum_{\fu \in \fU_j} \sum_{\fu' \in \fU_{j'}} \left| \int T^*_{\fT_j(\fu)} (\mathbf{1}_{\scI(\fu)} g_1) \overline{T^*_{\fT_{j'}(\fu')} (\mathbf{1}_{\scI(\fu')} g_2)} \, \mathrm{d}\mu \right|. By Lemma 1.98, this is bounded by 2^{512a^3-4n} \sum_{\fu \in \fU_j} \sum_{\fu' \in \fU_{j'}} \|S_{2,\fu} (\mathbf{1}_{\scI(\fu)}g_1)\|_{L^2(\scI(\fu')\cap \scI(\fu)} \|S_{2, \fu'} (\mathbf{1}_{\scI(\fu')}g_2)\|_{L^2(\scI(\fu')\cap\scI(\fu))}. We apply the Cauchy-Schwarz inequality in the form \sum_{i \in M} a_i b_i \le (\sum_{i \in M} a_i^2 )^{1/2}(\sum_{i \in M} b_i^2 )^{1/2} to the outer two sums: \le 2^{512a^3-4n} \left(\sum_{\fu \in \fU_j} \sum_{\fu' \in \fU_{j'}} \|S_{2,\fu} (\mathbf{1}_{\scI(\fu)}g_1)\|_{L^2(\scI(\fu')\cap \scI(\fu))}^2 \right)^{1/2} \left(\sum_{\fu \in \fU_j} \sum_{\fu' \in \fU_{j'}} \|S_{2,\fu'} (\mathbf{1}_{\scI(\fu')}g_2)\|_{L^2(\scI(\fu')\cap\scI(\fu))}^2 \right)^{1/2}. We can now estimate the factor involving g_1 as follows: \sum_{\fu \in \fU_j}\sum_{\fu' \in \fU_{j'}} \|S_{2,\fu} (\mathbf{1}_{\scI(\fu)}g_1)\|_{L^2(\scI(\fu')\cap \scI(\fu))}^2 = \sum_{\fu \in \fU_j}\sum_{\fu' \in \fU_{j'}} \int_{\scI(\fu) \cap \scI(\fu')} |S_{2,\fu} (\mathbf{1}_{\scI(\fu)}(y)g_1(y))|^2 \, \mathrm{d}\mu(y). By pairwise disjointedness of the sets \scI(\fu') for \fu' \in \fU_{j'}, we have \le \sum_{\fu \in \fU_j}\int_{\scI(\fu)} |S_{2,\fu} (\mathbf{1}_{\scI(\fu)}(y)g_1(y))|^2 \, \mathrm{d}\mu(y) \le \sum_{\fu \in \fU_j}\int_{X} |S_{2,\fu} (\mathbf{1}_{\scI(\fu)}(y)g_1(y))|^2 \, \mathrm{d}\mu(y) = \sum_{\fu \in \fU_j}\|S_{2,\fu} (\mathbf{1}_{\scI(\fu)}g_1)\|_2^2. By Lemma 1.97 we now estimate: \le \sum_{\fu \in \fU_j}(2^{182a^3})^2 \|\mathbf{1}_{\scI(\fu)}g_1\|_2^2. By pairwise disjointedness of the sets \scI(\fu) for \fu \in \fU_j (and writing out the definition of L^2-norms), we have \le (2^{182a^3})^2 \|g_1\|_2^2. Arguing similarly for g_2, we obtain the desired inequality.

Define for 1 \le j \le 2^n E_j := \bigcup_{\fu \in \fU_j} \bigcup_{\fp \in \fT(\fu)} E(\fp).

Lemma1.120
L∃∀Nused by 1

The sets E_j, 1 \le j \le 2^n are pairwise disjoint.

Lean code for Lemma1.1201 theorem
  • complete
    theorem TileStructure.Forest.pairwiseDisjoint_rowSupport.{u_1}TileStructure.Forest.pairwiseDisjoint_rowSupport.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} :
      (Set.Iio (2 ^ n)).PairwiseDisjoint t.rowSupportLemma 7.7.4  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1}
      [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1] [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a) (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1) (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} :
      (Set.IioSet.Iio.{u_1} {α : Type u_1} [Preorder α] (b : α) : Set α`Iio b` is the left-infinite right-open interval $(-∞, b)$.  (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. n)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely.  tTileStructure.Forest X n.rowSupportTileStructure.Forest.rowSupport.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ) : Set XThe definition of `Eⱼ` defined above Lemma 7.7.4. 
    theorem TileStructure.Forest.pairwiseDisjoint_rowSupport.{u_1}TileStructure.Forest.pairwiseDisjoint_rowSupport.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [MetricSpace X] [ProofData a q K σ₁ σ₂ F G]
      [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)] {n : ℕ} {t : TileStructure.Forest X n} :
      (Set.Iio (2 ^ n)).PairwiseDisjoint t.rowSupportLemma 7.7.4 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X]
      [TileStructureTileStructure.{u} {X : Type u} {A : outParam NNReal} [PseudoMetricSpace X] [MeasureTheory.DoublingMeasure X A]
      [FunctionDistances ℝ X] (Q : outParam (MeasureTheory.SimpleFunc X (Θ X))) (D : outParam ℕ) (κ : outParam ℝ)
      (S : outParam ℕ) (o : outParam X) : Type (u + 1)A tile structure.  QProofData.Q.{u_1} {X : Type u_1} {a : outParam ℕ} {q : outParam ℝ} {K : outParam (X → X → ℂ)} {σ₁ σ₂ : outParam (X → ℤ)}
      {F G : outParam (Set X)} {inst✝ : PseudoMetricSpace X} [self : ProofData a q K σ₁ σ₂ F G] :
      MeasureTheory.SimpleFunc X (Θ X) (defaultDdefaultD (a : ℕ) : ℕThe constant `D` from (2.0.1).  a)
          (defaultκdefaultκ (a : ℕ) : ℝThe constant `κ` from (2.0.2).  a) (defaultSdefaultS.{u_1} (X : Type u_1) {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [PseudoMetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] : ℕ XType u_1)
          (cancelPtcancelPt.{u_1, u_2} {𝕜 : Type u_1} (X : Type u_2) {A : ℕ} [RCLike 𝕜] [PseudoMetricSpace X] [CompatibleFunctions 𝕜 X A] :
      XThe point `o` in the blueprint  XType u_1)]
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {tTileStructure.Forest X n : TileStructure.ForestTileStructure.Forest.{u_1} (X : Type u_1) [PseudoMetricSpace X] {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ}
      {F G : Set X} [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      (n : ℕ) : Type u_1An `n`-forest  XType u_1 n} :
      (Set.IioSet.Iio.{u_1} {α : Type u_1} [Preorder α] (b : α) : Set α`Iio b` is the left-infinite right-open interval $(-∞, b)$.  (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. n)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.).PairwiseDisjointSet.PairwiseDisjoint.{u_1, u_4} {α : Type u_1} {ι : Type u_4} [PartialOrder α] [OrderBot α] (s : Set ι) (f : ι → α) :
      PropA set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
    are disjoint.
    
    `s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
    in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
    nicely. 
        tTileStructure.Forest X n.rowSupportTileStructure.Forest.rowSupport.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] [TileStructure Q (defaultD a) (defaultκ a) (defaultS X) (cancelPt X)]
      {n : ℕ} (t : TileStructure.Forest X n) (j : ℕ) : Set XThe definition of `Eⱼ` defined above Lemma 7.7.4. 
    Lemma 7.7.4 

Proof. Suppose that \fp \in \fT(\fu) and \fp' \in \fT(\fu') with \fu \ne \fu' and x \in E(\fp) \cap E(\fp'). Suppose without loss of generality that \ps(\fp) \le \ps(\fp'). Then x \in \scI(\fp) \cap \scI(\fp') \subset \scI(\fu'). By dyadicproperty it follows that \scI(\fp) \subset \scI(\fu'). By forest5, it follows that d_{\fp}(\fcc(\fp), \fcc(\fu')) > 2^{Z(n+1)}. By the triangle inequality. Lemma 1.11 and forest1 it follows that d_{\fp}(\fcc(\fp), \fcc(\fp')) \ge d_{\fp}(\fcc(\fp), \fcc(\fu')) - d_{\fp}(\fcc(\fp'), \fcc(\fu')) > 2^{Z(n+1)} - d_{\fp'}(\fcc(\fp'), \fcc(\fu')) \ge 2^{Z(n+1)} - 4. Since Z \ge 3 by defineZ, it follows that \fcc(\fp') \notin B_{\fp}(\fcc(\fp), 1), so \Omega(\fp') \not\subset \Omega(\fp) by eq-freq-comp-ball. Hence, by eq-freq-dyadic, \Omega(\fp) \cap \Omega(\fp') = \emptyset. But if x \in E(\fp) \cap E(\fp') then Q(x) \in \Omega(\fp) \cap \Omega(\fp'). This is a contradiction, and the lemma follows.

Now we prove Theorem 1.7.

Proof of Theorem 1.7. By definetp*, we have for each j T_{\mathfrak{R}_j}^*g = \sum_{\fu \in \fU_j} \sum_{\fp \in \fT(\fu)} T_{\fp}^* g = \sum_{\fu \in \fU_j} \sum_{\fp \in \fT(\fu)} T_{\fp}^* \mathbf{1}_{E_j} g = T_{\mathfrak{R}_j}^* \mathbf{1}_{E_j} g. Hence, by Lemma 1.117 and the triangle inequality, \left\|\sum_{\fu \in \fU} \sum_{\fp \in \fT(\fu)} T^*_{\fp} g\right\|_2^2 = \left\|\sum_{j = 1}^{2^n} T^*_{\mathfrak{R}_{j}} g\right\|_2^2 = \left\|\sum_{j=1}^{2^n} T^*_{\mathfrak{R}_{j}} \mathbf{1}_{E_j} g\right\|_2^2 = \int_X \left|\sum_{j=1}^{2^n} T^*_{\mathfrak{R}_{j}} \mathbf{1}_{E_j} g\right|^2 \, \mathrm{d}\mu \le \sum_{j=1}^{2^n} \|T_{\mathfrak{R}_j}^* \mathbf{1}_{E_j} g\|_2^2 + \sum_{j =1}^{2^n} \sum_{\substack{j' = 1\\j' \ne j}}^{2^n} \left| \int_X \overline{ T_{\mathfrak{R}_j}^* \mathbf{1}_{E_j} g} T_{\mathfrak{R}_{j'}}^* \mathbf{1}_{E_{j'}} g \right| \, \mathrm{d}\mu\, . We use Lemma 1.118 to estimate each term in the first sum, and Lemma 1.119 to bound each term in the second sum: \le 2^{566a^3-n} \sum_{j = 1}^{2^n} \|\mathbf{1}_{E_j} g\|_2^2 + 2^{876a^3-4n}\sum_{j=1}^{2^n}\sum_{j' = 1}^{2^n} \|\mathbf{1}_{E_j} g\|_2 \|\mathbf{1}_{E_{j'}}g\|_2. By Cauchy-Schwarz in the second two sums, this is at most 2^{876a^3} (2^{-n} + 2^{n}2^{-4n}) \sum_{j = 1}^n \|\mathbf{1}_{E_j} g\|_2^2, and by disjointedness of the sets E_j, this is at most 2^{877a^3 - n} \|g\|_2^2. Taking square roots, it follows that for all g \left\|\sum_{\fu \in \fU} \sum_{\fp \in \fT(\fu)} T_{\fp}^* g\right\|_2 \le 2^{439a^3-\frac{n}{2}} \|g\|_2. On the other hand, we have by disjointedness of the sets E_j from Lemma 1.120 and the triangle inequality \left\|\mathbf{1}_G \sum_{\fu \in \fU} \sum_{\fp \in \fT(\fu)} T_{\fp} f\right\|_2^2 = \left\|\sum_{j=1}^{2^n} \mathbf{1}_{E_j} \mathbf{1}_G T_{\mathfrak{R}_{j}} f\right\|_2^2 \le \sum_{j = 1}^{2^n} \|\mathbf{1}_{E_j} \mathbf{1}_G T_{\mathfrak{R}_{j}} f\|_2^2 \le \sum_{j = 1}^{2^n} \|\mathbf{1}_G T_{\mathfrak{R}_{j}} f\|_2^2. Now with |f| \le \mathbf{1}_F and Lemma 1.118 we obtain \| \mathbf{1}_G T_{\mathfrak{R}_j} f \|_2^2 = \left| \int_X \overline{\mathbf{1}_G T_{\mathfrak{R}_j} f} T_{\mathfrak{R}_j} f \right| = \left| \int_X \overline{T_{\mathfrak{R}_j}^* \mathbf{1}_G T_{\mathfrak{R}_j} f} \mathbf{1}_F f \right| \le \|f\|_2 \| \mathbf{1}_F T_{\mathfrak{R}_j}^* \mathbf{1}_G T_{\mathfrak{R}_j} f \|_2 \le 2^{283a^3-n/2} \dens_2(\bigcup_{\fu\in \fU}\fT(\fu))^{1/2} \| \mathbf{1}_G T_{\mathfrak{R}_j} f \|_2 \|f\|_2. Dividing this last inequality by the finite \| \mathbf{1}_G T_{\mathfrak{R}_j} f \|_2, substituting back and taking square roots we get \left\|\mathbf{1}_G \sum_{\fu \in \fU} \sum_{\fp \in \fT(\fu)} T_{\fp} f\right\|_2 \le 2^{283a^3} \dens_2(\bigcup_{\fu\in \fU}\fT(\fu))^{\frac{1}{2}} 2^{-\frac{n}{2}} (\sum_{j = 1}^{2^n} \|f\|_2^2)^{\frac{1}{2}} = 2^{283a^3} \dens_2(\bigcup_{\fu\in \fU}\fT(\fu))^{\frac{1}{2}} \|f\|_2. Theorem 1.7 follows by taking the product of the (2 - \frac{2}{q})-th power of eq-forest-bound-1 and the (\frac{2}{q} - 1)-st power of eq-forest-bound-2.

1.5.18. Proof of the H"older cancellative condition🔗

We need the following auxiliary lemma. Recall that \tau = 1/a.

Lemma1.121
L∃∀Nused by 1

Let z\in X and R>0. Let \varphi: X \to \mathbb{C} be a function supported in the ball B:=B(z,R) with finite norm \|\varphi\|_{C^\tau(B(z, 2R))}. Let 0<t \leq 1 . There exists a function \tilde \varphi : X \to \mathbb{C}, supported in B(z,2R), such that for every x\in X |\varphi(x) - \tilde \varphi(x)| \leq (t/2)^{\tau} \|\varphi\|_{C^\tau(B(z,2R))} and \|\tilde \varphi\|_{\Lip(B(z,2R))} \leq 2^{4a}t^{-1-a} \|\varphi\|_{C^{\tau}(B(z,2R))}.

Lean code for Lemma1.1213 theorems
  • complete
    theorem support_holderApprox_subset.{u_1}support_holderApprox_subset.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] {z : X} {R t : ℝ} (hR : 0 < R) {φ : X → ℂ}
      (hφ : Function.support φ ⊆ Metric.ball z R) (ht : t ∈ Set.Ioc 0 1) :
      Function.support (holderApprox R t φ) ⊆ Metric.ball z (2 * R)Part of Lemma 8.0.1.  {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X] {zX : XType u_1} {R t : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } (hR0 < R : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. R) {φX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (Function.support φ ⊆ Metric.ball z R : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  φX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  zX R) (htt ∈ Set.Ioc 0 1 : t Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Set.IocSet.Ioc.{u_1} {α : Type u_1} [Preorder α] (a b : α) : Set α`Ioc a b` is the left-open right-closed interval $(a, b]$.  0 1) :
      Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  (holderApproxholderApprox.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (R t : ℝ) (φ : X → ℂ) (x : X) : ℂ`φ ↦ \tilde{φ}` in the proof of Lemma 8.0.1.  R t φX → ℂ) HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  zX (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. R)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    theorem support_holderApprox_subset.{u_1}support_holderApprox_subset.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] {z : X} {R t : ℝ} (hR : 0 < R) {φ : X → ℂ}
      (hφ : Function.support φ ⊆ Metric.ball z R) (ht : t ∈ Set.Ioc 0 1) :
      Function.support (holderApprox R t φ) ⊆ Metric.ball z (2 * R)Part of Lemma 8.0.1. 
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X] {zX : XType u_1}
      {R t : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } (hR0 < R : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. R) {φX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (Function.support φ ⊆ Metric.ball z R :
        Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  φX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  zX R)
      (htt ∈ Set.Ioc 0 1 : t Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Set.IocSet.Ioc.{u_1} {α : Type u_1} [Preorder α] (a b : α) : Set α`Ioc a b` is the left-open right-closed interval $(a, b]$.  0 1) :
      Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  (holderApproxholderApprox.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (R t : ℝ) (φ : X → ℂ) (x : X) : ℂ`φ ↦ \tilde{φ}` in the proof of Lemma 8.0.1.  R t φX → ℂ) HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`.
        Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  zX (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. R)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    Part of Lemma 8.0.1. 
  • complete
    theorem enorm_holderApprox_sub_le.{u_1}enorm_holderApprox_sub_le.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] {z : X} {R t : ℝ} (hR : 0 < R) (ht : 0 < t) (h't : t ≤ 1) {φ : X → ℂ}
      (hφ : Function.support φ ⊆ Metric.ball z R) (x : X) :
      ‖φ x - holderApprox R t φ x‖ₑ ≤ ENNReal.ofReal (t / 2) ^ defaultτ a * iHolENorm φ z (2 * R) (defaultτ a) {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X] {zX : XType u_1} {R t : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } (hR0 < R : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. R)
      (ht0 < t : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. t) (h'tt ≤ 1 : t LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 1) {φX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (Function.support φ ⊆ Metric.ball z R : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  φX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  zX R) (xX : XType u_1) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. φX → ℂ xX -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). holderApproxholderApprox.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (R t : ℝ) (φ : X → ℂ) (x : X) : ℂ`φ ↦ \tilde{φ}` in the proof of Lemma 8.0.1.  R t φX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        ENNReal.ofRealENNReal.ofReal (r : ℝ) : ENNReal`ofReal x` returns `x` if it is nonnegative, `0` otherwise.  (HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.t /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 2)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. defaultτdefaultτ (a : ℕ) : ℝ`defaultτ` is the inverse of `a`.  a *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          iHolENormiHolENorm.{u_1, u_2} {𝕜 : Type u_1} {X : Type u_2} [PseudoMetricSpace X] [NormedField 𝕜] (φ : X → 𝕜) (x₀ : X)
      (R t : ℝ) : ENNRealthe L^∞-normalized t-Hölder norm. Defined in ℝ≥0∞ to avoid sup-related issues.  φX → ℂ zX (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. R)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultτdefaultτ (a : ℕ) : ℝ`defaultτ` is the inverse of `a`.  a)
    theorem enorm_holderApprox_sub_le.{u_1}enorm_holderApprox_sub_le.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] {z : X} {R t : ℝ} (hR : 0 < R) (ht : 0 < t) (h't : t ≤ 1) {φ : X → ℂ}
      (hφ : Function.support φ ⊆ Metric.ball z R) (x : X) :
      ‖φ x - holderApprox R t φ x‖ₑ ≤ ENNReal.ofReal (t / 2) ^ defaultτ a * iHolENorm φ z (2 * R) (defaultτ a)
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X] {zX : XType u_1}
      {R t : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } (hR0 < R : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. R) (ht0 < t : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. t)
      (h'tt ≤ 1 : t LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 1) {φX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (Function.support φ ⊆ Metric.ball z R :
        Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  φX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  zX R)
      (xX : XType u_1) :
      ENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function. φX → ℂ xX -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). holderApproxholderApprox.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (R t : ℝ) (φ : X → ℂ) (x : X) : ℂ`φ ↦ \tilde{φ}` in the proof of Lemma 8.0.1.  R t φX → ℂ xX‖ₑENorm.enorm.{u_8} {E : Type u_8} [self : ENorm E] : E → ENNRealthe `ℝ≥0∞`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        ENNReal.ofRealENNReal.ofReal (r : ℝ) : ENNReal`ofReal x` returns `x` if it is nonnegative, `0` otherwise.  (HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.t /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 2)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. defaultτdefaultτ (a : ℕ) : ℝ`defaultτ` is the inverse of `a`.  a *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          iHolENormiHolENorm.{u_1, u_2} {𝕜 : Type u_1} {X : Type u_2} [PseudoMetricSpace X] [NormedField 𝕜] (φ : X → 𝕜) (x₀ : X)
      (R t : ℝ) : ENNRealthe L^∞-normalized t-Hölder norm. Defined in ℝ≥0∞ to avoid sup-related issues.  φX → ℂ zX (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. R)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultτdefaultτ (a : ℕ) : ℝ`defaultτ` is the inverse of `a`.  a)
  • complete
    theorem iLipENorm_holderApprox_le.{u_1}iLipENorm_holderApprox_le.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] {z : X} {R t : ℝ} (ht : 0 < t) (h't : t ≤ 1) {φ : X → ℂ}
      (hφ : Function.support φ ⊆ Metric.ball z R) :
      iLipENorm (holderApprox R t φ) z (2 * R) ≤
        2 ^ (4 * a) * ENNReal.ofReal t ^ (-1 - ↑a) * iHolENorm φ z (2 * R) (defaultτ a) {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    } {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X] {zX : XType u_1} {R t : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } (ht0 < t : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. t)
      (h'tt ≤ 1 : t LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 1) {φX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (Function.support φ ⊆ Metric.ball z R : Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  φX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`. Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  zX R) :
      iLipENormiLipENorm.{u_3, u_4} {𝕜 : Type u_3} {X : Type u_4} [NormedField 𝕜] [PseudoMetricSpace X] (φ : X → 𝕜) (x₀ : X) (R : ℝ) :
      ENNRealThe inhomogeneous Lipschitz norm on a ball.  (holderApproxholderApprox.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (R t : ℝ) (φ : X → ℂ) (x : X) : ℂ`φ ↦ \tilde{φ}` in the proof of Lemma 8.0.1.  R t φX → ℂ) zX (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. R)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.4 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ENNReal.ofRealENNReal.ofReal (r : ℝ) : ENNReal`ofReal x` returns `x` if it is nonnegative, `0` otherwise.  t ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).-1 -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). a)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          iHolENormiHolENorm.{u_1, u_2} {𝕜 : Type u_1} {X : Type u_2} [PseudoMetricSpace X] [NormedField 𝕜] (φ : X → 𝕜) (x₀ : X)
      (R t : ℝ) : ENNRealthe L^∞-normalized t-Hölder norm. Defined in ℝ≥0∞ to avoid sup-related issues.  φX → ℂ zX (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. R)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultτdefaultτ (a : ℕ) : ℝ`defaultτ` is the inverse of `a`.  a)
    theorem iLipENorm_holderApprox_le.{u_1}iLipENorm_holderApprox_le.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X}
      [MetricSpace X] [ProofData a q K σ₁ σ₂ F G] {z : X} {R t : ℝ} (ht : 0 < t) (h't : t ≤ 1) {φ : X → ℂ}
      (hφ : Function.support φ ⊆ Metric.ball z R) :
      iLipENorm (holderApprox R t φ) z (2 * R) ≤
        2 ^ (4 * a) * ENNReal.ofReal t ^ (-1 - ↑a) * iHolENorm φ z (2 * R) (defaultτ a)
      {XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {a : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } {q : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. }
      {KX → X → ℂ : XType u_1  XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. } {σ₁X → ℤ σ₂X → ℤ : XType u_1  Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
    }
      {FSet X GSet X : SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`.
    
    Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be
    relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets
    and predicates.
     XType u_1} [MetricSpaceMetricSpace.{u} (α : Type u) : Type uA metric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    `dist x y = 0 ↔ x = y`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    See pseudometric spaces (`PseudoMetricSpace`) for the similar class with the `dist x y = 0 ↔ x = y`
    assumption weakened to `dist x x = 0`.
    
    Any metric space is a T1 topological space and a uniform space (see `TopologicalSpace`, `T1Space`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric.
    This e.g. ensures that we do not get a diamond when doing
    `[MetricSpace α] [MetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [ProofDataProofData.{u_1} {X : Type u_1} (a : outParam ℕ) (q : outParam ℝ) (K : outParam (X → X → ℂ)) (σ₁ σ₂ : outParam (X → ℤ))
      (F G : outParam (Set X)) [PseudoMetricSpace X] : Type (u_1 + 1)Data common through most of chapters 2-7 (except 3).  a q KX → X → ℂ σ₁X → ℤ σ₂X → ℤ FSet X GSet X] {zX : XType u_1}
      {R t : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. } (ht0 < t : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. t) (h'tt ≤ 1 : t LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. 1)
      {φX → ℂ : XType u_1  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. }
      (Function.support φ ⊆ Metric.ball z R :
        Function.supportFunction.support.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [Zero M] (f : ι → M) : Set ι`support` of a function is the set of points `x` such that `f x ≠ 0`.  φX → ℂ HasSubset.Subset.{u} {α : Type u} [self : HasSubset α] : α → α → PropSubset relation: `a ⊆ b`  
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⊆` in identifiers is `subset`.
          Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  zX R) :
      iLipENormiLipENorm.{u_3, u_4} {𝕜 : Type u_3} {X : Type u_4} [NormedField 𝕜] [PseudoMetricSpace X] (φ : X → 𝕜) (x₀ : X) (R : ℝ) :
      ENNRealThe inhomogeneous Lipschitz norm on a ball.  (holderApproxholderApprox.{u_1} {X : Type u_1} {a : ℕ} {q : ℝ} {K : X → X → ℂ} {σ₁ σ₂ : X → ℤ} {F G : Set X} [MetricSpace X]
      [ProofData a q K σ₁ σ₂ F G] (R t : ℝ) (φ : X → ℂ) (x : X) : ℂ`φ ↦ \tilde{φ}` in the proof of Lemma 8.0.1.  R t φX → ℂ) zX
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. R)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.4 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            ENNReal.ofRealENNReal.ofReal (r : ℝ) : ENNReal`ofReal x` returns `x` if it is nonnegative, `0` otherwise.  t ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).-1 -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). a)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          iHolENormiHolENorm.{u_1, u_2} {𝕜 : Type u_1} {X : Type u_2} [PseudoMetricSpace X] [NormedField 𝕜] (φ : X → 𝕜) (x₀ : X)
      (R t : ℝ) : ENNRealthe L^∞-normalized t-Hölder norm. Defined in ℝ≥0∞ to avoid sup-related issues.  φX → ℂ zX (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. R)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (defaultτdefaultτ (a : ℕ) : ℝ`defaultτ` is the inverse of `a`.  a)

Proof. Define for x,y\in X the Lipschitz and thus measurable function L(x,y) := \max\{0, 1 - \frac{\rho(x,y)}{tR}\}. We have that L(x,y)\neq 0 implies y\in B(x, tR). We have for y\in B(x, 2^{-1}tR) that |L(x,y)|\ge 2^{-1}. Hence \int L(x,y) \, \mathrm{d}\mu(y)\ge 2^{-1}\mu(B(x, 2^{-1}tR)). Let n be the smallest integer so that 2^n t\ge 1. Iterating n+2 times the doubling condition doublingx, we obtain \int L(x,y) \, \mathrm{d}\mu(y)\ge 2^{-1-a(n+2)}\mu(B(x, 2R)).

Now define \tilde \varphi(x) := \left(\int L(x,y) \, \mathrm{d}\mu(y)\right)^{-1}\int L(x,y) \varphi(y) \, \mathrm{d}\mu(y). Using that \varphi is supported in B(z,R) and eql01, we have that \tilde{\varphi} is supported in B(z,2R).

We prove eq-firstt. For any x\in X, using that L is nonnegative, \left(\int L(x,y) \, \mathrm{d}\mu(y)\right) |\varphi(x) - \tilde \varphi(x)| = \left| \int L(x,y)(\varphi(x) - \varphi(y)) \, \mathrm{d}\mu(y)\right|. Using eql01, we estimate the last display by \le \int_{B(x, tR)} L(x,y)|\varphi(x) - \varphi(y)| \, \mathrm{d}\mu(y). We claim that in this integral, |\varphi(x) - \varphi(y)|\le \rho(x,y)^\tau \|\varphi\|_{C^\tau(B(z, 2R))}(2R)^{-\tau}. Indeed, if x or y does not belong to B(z, 2R), then the other point is not in B(z,R) as \rho(x,y)\le tR \le R. Therefore, \varphi(x)=\varphi(y)=0 since \varphi is supported in B (z, R). Otherwise, both points are in B(z, 2R), and the inequality follows from the definition of \|\varphi\|_{C^\tau(B(z, 2R))}.

Therefore, we can estimate the last display further by \le \left(\int_{B(x, tR)} L(x,y) \rho(x,y)^\tau \, \mathrm{d}\mu(y) \right)\|\varphi\|_{C^\tau(B(z, 2R))}(2R)^{-\tau}. Using the condition on the domain of integration to estimate \rho(x,y) by tR and then expanding the domain by positivity of the integrand, we estimate this further by \le \left(\int L(x,y) \, \mathrm{d}\mu(y)\right) \|\varphi\|_{C^\tau(B(z, 2R))} (t/2)^{\tau}. Dividing the string of inequalities from eql1 to eql5 by the positive integral of L proves eq-firstt.

We turn to eq-secondt. For every x\in X, we have \left|\int L(x,y) \, \mathrm{d}\mu(y)\right||\tilde{\varphi}(x)| =\left|\int L(x,y) {\varphi}(y)\, \mathrm{d}\mu(y)\right| \le \left|\int L(x,y) \, \mathrm{d}\mu(y)\right| \sup_{x'\in X} |{\varphi}(x')|. As \varphi is supported on B, dividing by the integral of L, we obtain |\tilde{\varphi}(x)|\le \sup_{x'\in B} |{\varphi}(x')|\le \|\varphi\|_{C^\tau(B(z, 2R))}. If \rho(x,x')\ge R, then we have by the triangle inequality R\frac{|\tilde{\varphi}(x') - \tilde \varphi(x)|}{\rho(x,x')} \le 2\sup_{x''\in X} |\tilde{\varphi}(x'')|\le 2\|\varphi\|_{C^\tau(B(z, 2R))}.

Now assume \rho(x,x')< R. For y\in X we have by the triangle inequality and a two fold case distinction for the maximum in the definition of L, |L(x,y) - L(x',y)| \le \frac{\rho(x,x')}{tR}. We compute with eql10, first adding and subtracting a term in the integral, \left(\int L(x,y) \, \mathrm{d}\mu(y)\right) |\tilde{\varphi}(x') - \tilde \varphi(x)|= \left|\int L(x,y) \tilde{\varphi}(x') -L(x,y) \tilde{\varphi}(x) +L(x',y) \tilde{\varphi}(x')- L(x',y) \tilde{\varphi}(x') \, \mathrm{d}\mu(y)\right|. Grouping the second and third and the first and fourth term, we obtain using the definition of \tilde \varphi and Fubini, \le \left| \int (L(x',y)-L(x,y)) \varphi(y) \, \mathrm{d}\mu(y)\right| + \left| \int L(x,y) \, \mathrm{d}\mu(y)-\int L(x',y) \, \mathrm{d}\mu(y)\right||\tilde{\varphi}(x')| \le 2 \int |L(x,y) -L(x',y)| \, \mathrm{d}\mu(y) \|\varphi\|_{C^\tau(B(z, 2R))}, where in the last inequality we have used eql42. Using further eql10 and the support of L, we estimate the last display by \le 2 \frac{\rho(x,x')} {tR}\mu(B(x,tR)\cup B(x',tR)) \|\varphi\|_{C^\tau(B(z, 2R))}. Using \rho(x,x')<R and the triangle inequality, we estimate the last display by \le 2 \frac{\rho(x,x')} {tR} \mu(B(x,2R)) \|\varphi\|_{C^\tau(B(z, 2R))}. Dividing by the integral over L and using eql32 and 2nt1, we obtain \frac {R |\tilde{\varphi}(x') - \tilde \varphi(x)|}{\rho(x,x')} \le 2^{2+a(n+2)}t^{-1}\|\varphi\|_{C^\tau(B(z, 2R))} \le 2^{2+3a} t^{-1-a} \|\varphi\|_{C^\tau(B(z, 2R))}. Combining eql52 and eql226 using a\ge 4 and t\le 1 and adding eql42 proves eq-secondt and completes the proof of Lemma 1.121.

We turn to the proof of Theorem 1.8.

Proof of Theorem 1.8. Let z\in X and R>0 and set B=B(z,R). Let \varphi be given as in Theorem 1.8. Set t:=(1+d_B(\mfa,\mfb))^{-\frac{\tau}{2+a}} and define \tilde{\varphi} as in Lemma 1.121. Let \mfa and \mfb be in \Mf. Then \left|\int e(\mfa(x)-{\mfb(x)}) \varphi (x)\, \mathrm{d}\mu(x)\right| \le \left|\int e(\mfa(x)-{\mfb(x)}) \tilde{\varphi} (x)\, \mathrm{d}\mu(x)\right| + \left|\int e(\mfa(x)-{\mfb(x)}) (\varphi (x)-\tilde{\varphi}(x))\, \mathrm{d}\mu(x)\right|.

Using the cancellative condition eq-vdc-cond of \Mf on the ball B(z,2R), the term eql61 is bounded above by 2^a \mu(B(z,2R)) \|\tilde{\varphi}\|_{\Lip(B(z,2R))} (1 + d_{B(z,2R)}(\mfa,\mfb))^{-\tau}. Using the doubling condition doublingx, the inequality eq-secondt, and the estimate d_B\le d_{B(z,2R)} from the definition, we estimate eql63 from above by 2^{6a}t^{-1-a} \mu(B) \|{\varphi}\|_{C^\tau(B)} (1 + d_{B}(\mfa,\mfb))^{-\tau}.

The term eql62 we estimate using eq-firstt and that \mfa and \mfb are real and thus e(\mfa) and e(\mfb) bounded in absolute value by 1. We obtain for eql62 with doublingx the upper bound 2^a \mu(B) t^{\tau} \|\varphi\|_{C^\tau(B)}.

Using the definition eql69 of t and adding eql64 and eql65 estimates eql60 from above by 2^{6a} \mu(B) \|{\varphi}\|_{C^\tau(B)} (1 + d_{B}(\mfa,\mfb))^{-\frac{\tau}{2+a}} + 2^a \mu(B) \|{\varphi}\|_{C^\tau(B)} (1 + d_{B}(\mfa,\mfb))^{-\frac{\tau^2}{2+a}}. This is \le 2^{1+6a} \mu(B) \|{\varphi}\|_{C^\tau(B)} (1 + d_{B}(\mfa,\mfb))^{-\frac{\tau^2}{2+a}}, where we used \tau\le 1. This completes the proof of Theorem 1.8.

1.5.19. Proof of Vitali covering and Hardy--Littlewood🔗

We begin with a classical representation of the Lebesgue norm.

Lemma1.122
L∃∀Nused by 1

Let 1\le p< \infty. Then for any measurable function u:X\to [0,\infty) on the measure space X relative to the measure \mu we have \|u\|_p^p=p\int_0^\infty \lambda^{p-1}\mu(\{x: u(x)\ge \lambda\})\, d\lambda.

Lean code for Lemma1.1221 theorem
  • complete
    theorem MeasureTheory.eLpNorm_pow_eq_distribution.{u_1, u_3}MeasureTheory.eLpNorm_pow_eq_distribution.{u_1, u_3} {α : Type u_1} {ε : Type u_3} {m : MeasurableSpace α}
      {μ : MeasureTheory.Measure α} [TopologicalSpace ε] [ContinuousENorm ε] {f : α → ε}
      (hf : MeasureTheory.AEStronglyMeasurable f μ) {p : NNReal} (hp : 0 < p) :
      MeasureTheory.eLpNorm f (↑p) μ ^ ↑p =
        ∫⁻ (t : ℝ) in Set.Ioi 0, ↑p * ENNReal.ofReal (t ^ (↑p - 1)) * MeasureTheory.distribution f (ENNReal.ofReal t) μThe layer-cake theorem, or Cavalieri's principle, written using `eLpNorm`.  {αType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {εType u_3 : Type u_3A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {mMeasurableSpace α : MeasurableSpaceMeasurableSpace.{u_7} (α : Type u_7) : Type u_7A measurable space is a space equipped with a σ-algebra.  αType u_1} {μMeasureTheory.Measure α : MeasureTheory.MeasureMeasureTheory.Measure.{u_6} (α : Type u_6) [MeasurableSpace α] : Type u_6A measure is defined to be an outer measure that is countably additive on
    measurable sets, with the additional assumption that the outer measure is the canonical
    extension of the restricted measure.
    
    The measure of a set `s`, denoted `μ s`, is an extended nonnegative real. The real-valued version
    is written `μ.real s`.
     αType u_1}
      [TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.  εType u_3] [ContinuousENormContinuousENorm.{u_8} (E : Type u_8) [TopologicalSpace E] : Type u_8A type `E` equipped with a continuous map `‖·‖ₑ : E → ℝ≥0∞`
    
    NB. We do not demand that the topology is somehow defined by the enorm:
    for `ℝ≥0∞` (the motivating example behind this definition), this is not true.  εType u_3] {fα → ε : αType u_1  εType u_3}
      (hfMeasureTheory.AEStronglyMeasurable f μ : MeasureTheory.AEStronglyMeasurableMeasureTheory.AEStronglyMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [TopologicalSpace β] [m : MeasurableSpace α]
      {m₀ : MeasurableSpace α} (f : α → β) (μ : MeasureTheory.Measure α := by volume_tac) : PropA function is `AEStronglyMeasurable` with respect to a measure `μ` if it is almost everywhere
    equal to the limit of a sequence of simple functions.
    
    One can specify the sigma-algebra according to which simple functions are taken using the
    `AEStronglyMeasurable[m]` notation in the `MeasureTheory` scope.  fα → ε μMeasureTheory.Measure α) {pNNReal : NNRealNNReal : TypeNonnegative real numbers, denoted as `ℝ≥0` within the NNReal namespace }
      (hp0 < p : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. pNNReal) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fα → ε (↑pNNReal) μMeasureTheory.Measure α ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. pNNReal =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        ∫⁻MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  (t : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. ) inMeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  Set.IoiSet.Ioi.{u_1} {α : Type u_1} [Preorder α] (b : α) : Set α`Ioi a` is the left-open right-infinite interval $(a, ∞)$.  0,MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`. 
          pNNReal *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ENNReal.ofRealENNReal.ofReal (r : ℝ) : ENNReal`ofReal x` returns `x` if it is nonnegative, `0` otherwise.  (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.t ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).pNNReal -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). 1)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.distributionMeasureTheory.distribution.{u_1, u_3} {α : Type u_1} {ε : Type u_3} {m : MeasurableSpace α} [ENorm ε] (f : α → ε)
      (t : ENNReal) (μ : MeasureTheory.Measure α) : ENNRealThe distribution function of a function `f`.
    Todo: rename to something more Mathlib-appropriate.  fα → ε (ENNReal.ofRealENNReal.ofReal (r : ℝ) : ENNReal`ofReal x` returns `x` if it is nonnegative, `0` otherwise.  t) μMeasureTheory.Measure α
    theorem MeasureTheory.eLpNorm_pow_eq_distribution.{u_1,
        u_3}MeasureTheory.eLpNorm_pow_eq_distribution.{u_1, u_3} {α : Type u_1} {ε : Type u_3} {m : MeasurableSpace α}
      {μ : MeasureTheory.Measure α} [TopologicalSpace ε] [ContinuousENorm ε] {f : α → ε}
      (hf : MeasureTheory.AEStronglyMeasurable f μ) {p : NNReal} (hp : 0 < p) :
      MeasureTheory.eLpNorm f (↑p) μ ^ ↑p =
        ∫⁻ (t : ℝ) in Set.Ioi 0, ↑p * ENNReal.ofReal (t ^ (↑p - 1)) * MeasureTheory.distribution f (ENNReal.ofReal t) μThe layer-cake theorem, or Cavalieri's principle, written using `eLpNorm`. 
      {αType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {εType u_3 : Type u_3A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {mMeasurableSpace α : MeasurableSpaceMeasurableSpace.{u_7} (α : Type u_7) : Type u_7A measurable space is a space equipped with a σ-algebra.  αType u_1}
      {μMeasureTheory.Measure α : MeasureTheory.MeasureMeasureTheory.Measure.{u_6} (α : Type u_6) [MeasurableSpace α] : Type u_6A measure is defined to be an outer measure that is countably additive on
    measurable sets, with the additional assumption that the outer measure is the canonical
    extension of the restricted measure.
    
    The measure of a set `s`, denoted `μ s`, is an extended nonnegative real. The real-valued version
    is written `μ.real s`.
     αType u_1}
      [TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.  εType u_3] [ContinuousENormContinuousENorm.{u_8} (E : Type u_8) [TopologicalSpace E] : Type u_8A type `E` equipped with a continuous map `‖·‖ₑ : E → ℝ≥0∞`
    
    NB. We do not demand that the topology is somehow defined by the enorm:
    for `ℝ≥0∞` (the motivating example behind this definition), this is not true.  εType u_3]
      {fα → ε : αType u_1  εType u_3}
      (hfMeasureTheory.AEStronglyMeasurable f μ :
        MeasureTheory.AEStronglyMeasurableMeasureTheory.AEStronglyMeasurable.{u_1, u_2} {α : Type u_1} {β : Type u_2} [TopologicalSpace β] [m : MeasurableSpace α]
      {m₀ : MeasurableSpace α} (f : α → β) (μ : MeasureTheory.Measure α := by volume_tac) : PropA function is `AEStronglyMeasurable` with respect to a measure `μ` if it is almost everywhere
    equal to the limit of a sequence of simple functions.
    
    One can specify the sigma-algebra according to which simple functions are taken using the
    `AEStronglyMeasurable[m]` notation in the `MeasureTheory` scope.  fα → ε
          μMeasureTheory.Measure α)
      {pNNReal : NNRealNNReal : TypeNonnegative real numbers, denoted as `ℝ≥0` within the NNReal namespace } (hp0 < p : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. pNNReal) :
      MeasureTheory.eLpNormMeasureTheory.eLpNorm.{u_1, u_2} {α : Type u_1} {ε : Type u_2} [ENorm ε] {x✝ : MeasurableSpace α} (f : α → ε)
      (p : ENNReal) (μ : MeasureTheory.Measure α := by volume_tac) : ENNReal`ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
    `essSup ‖f‖ μ` for `p = ∞`.  fα → ε (↑pNNReal) μMeasureTheory.Measure α ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. pNNReal =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        ∫⁻MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  (t : Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. ) inMeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`.  Set.IoiSet.Ioi.{u_1} {α : Type u_1} [Preorder α] (b : α) : Set α`Ioi a` is the left-open right-infinite interval $(a, ∞)$.  0,MeasureTheory.lintegral.{u_4} {α : Type u_4} {m : MeasurableSpace α} (μ : MeasureTheory.Measure α) (f : α → ENNReal) :
      ENNRealThe **lower Lebesgue integral** of a function `f` with respect to a measure `μ`. 
          pNNReal *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. ENNReal.ofRealENNReal.ofReal (r : ℝ) : ENNReal`ofReal x` returns `x` if it is nonnegative, `0` otherwise.  (HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.t ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).pNNReal -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). 1)HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).)HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            MeasureTheory.distributionMeasureTheory.distribution.{u_1, u_3} {α : Type u_1} {ε : Type u_3} {m : MeasurableSpace α} [ENorm ε] (f : α → ε)
      (t : ENNReal) (μ : MeasureTheory.Measure α) : ENNRealThe distribution function of a function `f`.
    Todo: rename to something more Mathlib-appropriate.  fα → ε
              (ENNReal.ofRealENNReal.ofReal (r : ℝ) : ENNReal`ofReal x` returns `x` if it is nonnegative, `0` otherwise.  t) μMeasureTheory.Measure α
    The layer-cake theorem, or Cavalieri's principle, written using `eLpNorm`. 

Proof. The left-hand side of eq-layercake is by definition \int_X u(x)^p \, d\mu(x). Writing u(x) as an elementary integral in \lambda and then using Fubini, we write for the last display =\int_X \int _0^{u(x)} p \lambda^{p-1} d\lambda\, d\mu(x) =p\int _0^{\infty} \lambda^{p-1} \mu(\{x: u(x)\ge \lambda\}) d\lambda. This proves the lemma.

The following lemma will be used to define M in the proof of Theorem 1.9.

Lemma1.123
L∃∀Nused by 1

For each r > 0, there exists a countable collection C(r) \subset X of points such that X \subset \bigcup_{c \in C(r)} B(c, r).

Lean code for Lemma1.1231 theorem
  • complete
    theorem covering_separable_space.{u_1}covering_separable_space.{u_1} (X : Type u_1) [PseudoMetricSpace X] [TopologicalSpace.SeparableSpace X] :
      ∃ C, C.Countable ∧ ∀ r > 0, ⋃ c ∈ C, Metric.ball c r = Set.univLemma 9.0.2  (XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. ) [PseudoMetricSpacePseudoMetricSpace.{u} (α : Type u) : Type uA pseudometric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    reflexivity `dist x x = 0`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    Note that we do not require `dist x y = 0 → x = y`. See metric spaces (`MetricSpace`) for the
    similar class with that stronger assumption.
    
    Any pseudometric space is a topological space and a uniform space (see `TopologicalSpace`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    Note that a T1 pseudometric space is just a metric space.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric. This e.g.
    ensures that we do not get a diamond when doing
    `[PseudoMetricSpace α] [PseudoMetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [TopologicalSpace.SeparableSpaceTopologicalSpace.SeparableSpace.{u} (α : Type u) [t : TopologicalSpace α] : PropA separable space is one with a countable dense subset, available through
    `TopologicalSpace.exists_countable_dense`. If `α` is also known to be nonempty, then
    `TopologicalSpace.denseSeq` provides a sequence `ℕ → α` with dense range, see
    `TopologicalSpace.denseRange_denseSeq`.
    
    If `α` is a uniform space with countably generated uniformity filter (e.g., an `EMetricSpace`), then
    this condition is equivalent to `SecondCountableTopology α`. In this case the
    latter should be used as a typeclass argument in theorems because Lean can automatically deduce
    `TopologicalSpace.SeparableSpace` from `SecondCountableTopology` using
    `TopologicalSpace.SecondCountableTopology.to_separableSpace`, but deducing
    `SecondCountableTopology` from `TopologicalSpace.SeparableSpace` requires more assumptions.
     XType u_1] :
       CSet X, CSet X.CountableSet.Countable.{u} {α : Type u} (s : Set α) : PropA set `s` is countable if the corresponding subtype is countable,
    i.e., there exists an injective map `f : s → ℕ`.
    
    Note that this is an abbreviation, so `hs : Set.Countable s` in the proof context
    is the same as an instance `Countable s`.
    For a constructive version, see `Encodable`.
     And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.  r > 0,  cX  CSet X, Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  cX r =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. Set.univSet.univ.{u} {α : Type u} : Set αThe universal set on a type `α` is the set containing all elements of `α`.
    
    This is conceptually the "same as" `α` (in set theory, it is actually the same), but type theory
    makes the distinction that `α` is a type while `Set.univ` is a term of type `Set α`. `Set.univ` can
    itself be coerced to a type `↥Set.univ` which is in bijection with (but distinct from) `α`. 
    theorem covering_separable_space.{u_1}covering_separable_space.{u_1} (X : Type u_1) [PseudoMetricSpace X] [TopologicalSpace.SeparableSpace X] :
      ∃ C, C.Countable ∧ ∀ r > 0, ⋃ c ∈ C, Metric.ball c r = Set.univLemma 9.0.2 
      (XType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. ) [PseudoMetricSpacePseudoMetricSpace.{u} (α : Type u) : Type uA pseudometric space is a type endowed with a `ℝ`-valued distance `dist` satisfying
    reflexivity `dist x x = 0`, commutativity `dist x y = dist y x`, and the triangle inequality
    `dist x z ≤ dist x y + dist y z`.
    
    Note that we do not require `dist x y = 0 → x = y`. See metric spaces (`MetricSpace`) for the
    similar class with that stronger assumption.
    
    Any pseudometric space is a topological space and a uniform space (see `TopologicalSpace`,
    `UniformSpace`), where the topology and uniformity come from the metric.
    Note that a T1 pseudometric space is just a metric space.
    
    We make the uniformity/topology part of the data instead of deriving it from the metric. This e.g.
    ensures that we do not get a diamond when doing
    `[PseudoMetricSpace α] [PseudoMetricSpace β] : TopologicalSpace (α × β)`:
    The product metric and product topology agree, but not definitionally so.
    See Note [forgetful inheritance].  XType u_1]
      [TopologicalSpace.SeparableSpaceTopologicalSpace.SeparableSpace.{u} (α : Type u) [t : TopologicalSpace α] : PropA separable space is one with a countable dense subset, available through
    `TopologicalSpace.exists_countable_dense`. If `α` is also known to be nonempty, then
    `TopologicalSpace.denseSeq` provides a sequence `ℕ → α` with dense range, see
    `TopologicalSpace.denseRange_denseSeq`.
    
    If `α` is a uniform space with countably generated uniformity filter (e.g., an `EMetricSpace`), then
    this condition is equivalent to `SecondCountableTopology α`. In this case the
    latter should be used as a typeclass argument in theorems because Lean can automatically deduce
    `TopologicalSpace.SeparableSpace` from `SecondCountableTopology` using
    `TopologicalSpace.SecondCountableTopology.to_separableSpace`, but deducing
    `SecondCountableTopology` from `TopologicalSpace.SeparableSpace` requires more assumptions.
     XType u_1] :
       CSet X,
        CSet X.CountableSet.Countable.{u} {α : Type u} (s : Set α) : PropA set `s` is countable if the corresponding subtype is countable,
    i.e., there exists an injective map `f : s → ℕ`.
    
    Note that this is an abbreviation, so `hs : Set.Countable s` in the proof context
    is the same as an instance `Countable s`.
    For a constructive version, see `Encodable`.
     And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
           r > 0,
             cX  CSet X, Metric.ballMetric.ball.{u} {α : Type u} [PseudoMetricSpace α] (x : α) (ε : ℝ) : Set α`ball x ε` is the set of all points `y` with `dist y x < ε`  cX r =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
              Set.univSet.univ.{u} {α : Type u} : Set αThe universal set on a type `α` is the set containing all elements of `α`.
    
    This is conceptually the "same as" `α` (in set theory, it is actually the same), but type theory
    makes the distinction that `α` is a type while `Set.univ` is a term of type `Set α`. `Set.univ` can
    itself be coerced to a type `↥Set.univ` which is in bijection with (but distinct from) `α`. 
    Lemma 9.0.2 

Proof. It clearly suffices to construct finite collections C(r,k) such that B(o, r2^k) \subset \bigcup_{c \in C(r,k)} B(c,r), since then the collection C(r) = \bigcup_{k \in \mathbb{N}} C(r,k) has the desired property.

Suppose that Y \subset B(o, r2^k) is a collection of points such that for all y, y' \in Y with y \ne y', we have \rho(y,y') \ge r. Then the balls B(y, r/2) are pairwise disjoint and contained in B(o, r2^{k+1}). If y \in B(o, r), then B(o, r2^{k+1}) \subset B(y, r2^{k+2}). Thus, by the doubling property doublingx, \mu(B(y, \frac{r}{2})) \ge 2^{-(k+2)a} \mu(B(o, r2^{k+1})). Thus, we have \mu(B(o, r2^{k+1})) \ge \sum_{y \in Y} \mu(B(y, \frac{r}{2})) \ge |Y| 2^{-(k+2)a} \mu(B(o, r2^{k+1})). We conclude that |Y| \le 2^{(k+2)a}. In particular, there exists a set Y of maximal cardinality. Define C(r,k) to be such a set.

If x \in B(o, r2^k) and x \notin C(r,k), then there must exist y \in C(r,k) with \rho(x,y) < r. Thus C(r,k) has the desired property.

We turn to the proof of Theorem 1.9.

Proof of Hardy-Littlewood. Let the collection \mathcal{B} be given. We first show eq-besico.

We recursively choose a finite sequence B_i\in \mathcal{B} for i\ge 0 as follows. Assume B_{i'} is already chosen for 0\le i'<i. If there exists a ball B_{i}\in \mathcal{B} so that B_{i} is disjoint from all B_{i'} with 0\le i'<i, then choose such a ball B_i=B(x_i,r_i) with maximal r_i.

If there is no such ball, stop the selection and set i'':=i.

By disjointedness of the chosen balls and since 0 \le u, we have \sum_{0\le i<i''}\int_{B_i} u(x)\, d\mu(x) \le \int_X u(x)\, d\mu(x). By eq-ball-assumption, we conclude \lambda \sum_{0\le i<i''}\mu(B_i) \le \int_X u(x)\, d\mu(x).

Let x\in \bigcup \mathcal{B}. Choose a ball B'=B(x',r')\in \mathcal{B} such that x\in B'. If B' is one of the selected balls, then x\in \bigcup _{0\le i< i''}B_i\subset \bigcup _{0\le i< i''}B(x_i,3r_i). If B' is not one of the selected balls, then as it is not selected at time i'', there is a selected ball B_i with B'\cap B_i\neq \emptyset. Choose such B_i with minimal index i. As B' is therefore disjoint from all balls B_{i'} with i'<i and as it was not selected in place of B_i, we have r_i\ge r'.

Using a point y in the intersection of B_i and B', we conclude by the triangle inequality \rho(x_i,x')\le \rho(x_i,y)+\rho(x',y)\le r_i+r'\le 2r_i. By the triangle inequality again, we further conclude \rho(x_i,x)\le \rho(x_i,x')+\rho(x',x)\le 2r_i+r'\le 3r_i. It follows that x\in \bigcup _{0\le i< i''}B(x_i,3r_i). With 3rone and 3rtwo, we conclude \bigcup \mathcal{B}\subset \bigcup _{0\le i< i''}B(x_i,3r_i). With the doubling property doublingx applied twice, we conclude \mu(\bigcup{\mathcal{B}}) \le \sum _{0\le i< i''}\mu (B(x_i,3r_i)) \le 2^{2a}\sum _{0\le i< i''}\mu (B_i). With eqbes1 and eqbes2 we conclude eq-besico.

We turn to the proof of eq-hlm. We first consider the case p_1=1 and recall M_{\mathcal{B}}=M_{\mathcal{B},1}. We write for the p_2-th power of left-hand side of eq-hlm with Lemma 1.122 and a change of variables \|M_{\mathcal{B}}u(x)\|_{p_2}^{p_2} =p_2\int _0^{\infty} \lambda^{p_2-1} \mu(\{x: M_{\mathcal{B}}u(x)\ge \lambda\}) d\lambda =2^{p_2} p_2\int _0^{\infty} \lambda^{p_2-1} \mu(\{x: M_{\mathcal{B}}u(x)\ge 2\lambda\}) d\lambda.

Using Lemma 1.122 and a change of variables, fix \lambda\ge 0 and let x\in X satisfy M_{\mathcal{B}}u(x)\ge 2\lambda. By definition of M_{\mathcal{B}}, there is a ball B'\in \mathcal{B} such that x\in B' and \int_{B'} u(y)\, d\mu(y)\ge 2\lambda \mu({B'}). Define u_\lambda(y):=0 if |u(y)|<\lambda and u_\lambda(y):=u(y) if |u(y)|\ge \lambda. Then with eqbesi10 \int_{B'} u_\lambda (y)\, d\mu(y) =\int_{B'} u (y)\, d\mu(y)- \int_{B'} (u-u_\lambda) (y) d\mu(y) \ge 2\lambda \mu({B'})- \int_{B'} (u-u_\lambda) (y) d\mu(y). As (u-u_\lambda)(y)\le \lambda by definition, we can estimate the last display by \ge 2\lambda \mu({B'})- \int_{B'} \lambda \, d\mu(y) =\lambda \mu({B'}). Hence x is contained in \bigcup(\mathcal{B}_\lambda), where \mathcal{B}_\lambda is the collection of balls B'' in \mathcal{B} such that \int_{B''} u_\lambda (y)\, d\mu(y)\ge \lambda \mu(B''). We have thus seen \{x: M_{\mathcal{B}}u(x)\ge 2\lambda\}\subset \bigcup \mathcal{B}_\lambda. Applying eq-besico to the collection \mathcal{B}_\lambda gives \lambda \mu(\{x: M_{\mathcal{B}}u(x)\ge 2\lambda\})\le 2^{2a} \int u_\lambda (x)\, dx.

With Lemma 1.122, \lambda \mu(\{x: M_{\mathcal{B}}u(x)\ge 2\lambda\})\le 2^{2a} \int_0^\infty \mu (\{x: |u_\lambda (x)|\ge \lambda'\})\, d\lambda'. By definition of u_\lambda, making a case distinction between \lambda\ge \lambda' and \lambda <\lambda', we see that \mu (\{x: |u_\lambda (x)|\ge \lambda'\}) \le \mu (\{x: |u (x)|\ge \max(\lambda,\lambda')\}). We obtain with eqbesi11, eqbesi12, and eqbesi13 \|M_{\mathcal{B}}u(x)\|_{p_2}^{p_2} \le 2^{p_2+2a} p_2 \int_0^\infty \lambda^{p_2-2} \int_0^\infty \mu (\{x: |u (x)|\ge \max(\lambda,\lambda')\}) \, d\lambda'd\lambda. We split the integral into \lambda\ge \lambda' and \lambda<\lambda' and resolve the maximum correspondingly.

We have for \lambda\ge \lambda' with Lemma 1.122 \int_0^\infty \lambda^{p_2-2} \int_0^\lambda \mu (\{x: |u (x)|\ge \lambda\}) \, d\lambda'd\lambda =\int_0^\infty \lambda^{p_2-1} \mu (\{x: |u (x)|\ge \lambda\}) d\lambda =p_2^{-1} \|u\|_{p_2}^{p_2}.

We have for \lambda< \lambda' with Fubini and Lemma 1.122 \int_0^\infty \lambda^{p_2-2} \int_\lambda^\infty \mu (\{x: |u(x)|\ge \lambda'\}) \, d\lambda'd\lambda =\int_0^\infty \int_0^{\lambda'}\lambda^{p_2-2} \mu (\{x: |u (x)|\ge \lambda'\}) d\lambda d\lambda' =(p_2-1)^{-1}\int_0^\infty (\lambda')^{p_2-1} \mu (\{x: |u(x)|\ge \lambda'\}) d\lambda' =(p_2-1)^{-1} p_2^{-1}\|u\|_{p_2}^{p_2}. Adding the two estimates eqbesi14 and eqbesi15 gives \|M_{\mathcal{B}}u(x)\|_{p_2}^{p_2} \le 2^{p_2+2a} (1+(p_2-1)^{-1})\|u\|_{p_2}^{p_2} = 2^{p_2+2a} p_2(p_2-1)^{-1}\|u\|_{p_2}^{p_2}. With a\ge 1 and p_2>1, taking the p_2-th root, we obtain eq-hlm. We turn to the case of general 1\le p_1<p_2. We have M_{\mathcal{B},p_1}u=(M_{\mathcal{B}} (|u|^{p_1}))^{\frac 1{p_1}}. Applying the special case of eq-hlm for M_{\mathcal{B}} gives \|M_{\mathcal{B},p_1}u\|_{p_2}= \|M_{\mathcal{B}} (|u|^{p_1})\|_{p_2/p_1}^{\frac 1{p_1}} \le 2^{2a} (p_2/p_1) (p_2/p_1-1)^{-1} \|(|u|^{p_1})\|_{p_2/p_1}^{\frac 1{p_1}} =2^{2a} p_2(p_2-p_1)^{-1}\|u\|_{p_2}. This proves eq-hlm in general.

Now we construct the operator M satisfying eq-ball-av and eq-hlm-2. For each k \in \mathbb{Z} we choose a countable set C(2^k) as in Lemma 1.123. Define \mathcal{B}_\infty = \{B(c, 2^k) \ : \ c \in C(2^k), k \in \mathbb{Z}\}. By Lemma 1.123, this is a countable collection of balls. We choose an enumeration \mathcal{B}_\infty = \{B_1, \dotsc\} and define \mathcal{B}_n = \{B_1, \dotsc, B_n\}. We define Mw := 2^{2a}\sup_{n \in \mathbb{N}} M_{\mathcal{B}_n}w. This function is measurable for each measurable w, since it is a countable supremum of measurable functions. Estimate eq-hlm-2 follows immediately from eq-hlm and the monotone convergence theorem.

It remains to show eq-ball-av. Let B = B(x, r) \subset X. Let k be the smallest integer such that 2^k \ge r, in particular we have 2^k < 2r. By definition of C(2^k), there exists c \in C(2^k) with x \in B(c, 2^k). By the triangle inequality, we have B(c, 2^k) \subset B(x, 4r), and hence by the doubling property doublingx \mu(B(c, 2^k)) \le 2^{2a} \mu(B(x,r)). It follows that for each z \in B(x,r) \frac{1}{\mu(B(x,r))}\int_{B(x,r)} |w(y)| \, \mathrm{d}\mu(y) \le \frac{2^{2a}}{\mu(B(c,2^k))}\int_{B(c,2^k)} |w(y)| \, \mathrm{d}\mu(y) \le Mw(z). This completes the proof.