File: Mathlib/MeasureTheory/Covering/BesicovitchVectorSpace.lean

full_name: Besicovitch.SatelliteConfig.centerAndRescale
code: /-- Rescaling a satellite configuration in a vector space, to put the basepoint at `0` and the base
radius at `1`. -/
def centerAndRescale : SatelliteConfig E N τ 
goal: Besicovitch.SatelliteConfig E N τ

full_name: Besicovitch.SatelliteConfig.centerAndRescale_center
code: theorem centerAndRescale_center : a.centerAndRescale.c (last N) = 0 
goal: a.centerAndRescale.c (Fin.last N) = 0

full_name: Besicovitch.SatelliteConfig.centerAndRescale_radius
code: theorem centerAndRescale_radius {N : ℕ} {τ : ℝ} (a : SatelliteConfig E N τ) :
    a.centerAndRescale.r (last N) = 1 
goal: a.centerAndRescale.r (Fin.last N) = 1

full_name: Besicovitch.multiplicity
code: /-- The maximum cardinality of a `1`-separated set in the ball of radius `2`. This is also the
optimal number of families in the Besicovitch covering theorem. -/
def multiplicity (E : Type*) [NormedAddCommGroup E] 
goal: ℕ

full_name: Besicovitch.card_le_of_separated
code: /-- Any `1`-separated set in the ball of radius `2` has cardinality at most `5 ^ dim`. This is
useful to show that the supremum in the definition of `Besicovitch.multiplicity E` is
well behaved. -/
theorem card_le_of_separated (s : Finset E) (hs : ∀ c ∈ s, ‖c‖ ≤ 2)
    (h : ∀ c ∈ s, ∀ d ∈ s, c ≠ d → 1 ≤ ‖c - d‖) : s.card ≤ 5 ^ finrank ℝ E 
goal: s.card ≤ 5 ^ FiniteDimensional.finrank ℝ E

full_name: Besicovitch.multiplicity_le
code: theorem multiplicity_le : multiplicity E ≤ 5 ^ finrank ℝ E 
goal: Besicovitch.multiplicity E ≤ 5 ^ FiniteDimensional.finrank ℝ E

full_name: Besicovitch.card_le_multiplicity
code: theorem card_le_multiplicity {s : Finset E} (hs : ∀ c ∈ s, ‖c‖ ≤ 2)
    (h's : ∀ c ∈ s, ∀ d ∈ s, c ≠ d → 1 ≤ ‖c - d‖) : s.card ≤ multiplicity E 
goal: s.card ≤ Besicovitch.multiplicity E

full_name: Besicovitch.exists_goodδ
code: /-- If `δ` is small enough, a `(1-δ)`-separated set in the ball of radius `2` also has cardinality
at most `multiplicity E`. -/
theorem exists_goodδ :
    ∃ δ : ℝ, 0 < δ ∧ δ < 1 ∧ ∀ s : Finset E, (∀ c ∈ s, ‖c‖ ≤ 2) →
      (∀ c ∈ s, ∀ d ∈ s, c ≠ d → 1 - δ ≤ ‖c - d‖) → s.card ≤ multiplicity E 
goal: ∃ δ,
  0 < δ ∧
    δ < 1 ∧
      ∀ (s : Finset E),
        (∀ c ∈ s, ‖c‖ ≤ 2) → (∀ c ∈ s, ∀ d ∈ s, c ≠ d → 1 - δ ≤ ‖c - d‖) → s.card ≤ Besicovitch.multiplicity E

full_name: Besicovitch.goodδ
code: /-- A small positive number such that any `1 - δ`-separated set in the ball of radius `2` has
cardinality at most `Besicovitch.multiplicity E`. -/
def goodδ : ℝ 
goal: ℝ

full_name: Besicovitch.goodδ_lt_one
code: theorem goodδ_lt_one : goodδ E < 1 
goal: Besicovitch.goodδ E < 1

full_name: Besicovitch.goodτ
code: /-- A number `τ > 1`, but chosen close enough to `1` so that the construction in the Besicovitch
covering theorem using this parameter `τ` will give the smallest possible number of covering
families. -/
def goodτ : ℝ 
goal: ℝ

full_name: Besicovitch.one_lt_goodτ
code: theorem one_lt_goodτ : 1 < goodτ E 
goal: 1 < Besicovitch.goodτ E

full_name: Besicovitch.card_le_multiplicity_of_δ
code: theorem card_le_multiplicity_of_δ {s : Finset E} (hs : ∀ c ∈ s, ‖c‖ ≤ 2)
    (h's : ∀ c ∈ s, ∀ d ∈ s, c ≠ d → 1 - goodδ E ≤ ‖c - d‖) : s.card ≤ multiplicity E 
goal: s.card ≤ Besicovitch.multiplicity E

full_name: Besicovitch.le_multiplicity_of_δ_of_fin
code: theorem le_multiplicity_of_δ_of_fin {n : ℕ} (f : Fin n → E) (h : ∀ i, ‖f i‖ ≤ 2)
    (h' : Pairwise fun i j => 1 - goodδ E ≤ ‖f i - f j‖) : n ≤ multiplicity E 
goal: n ≤ Besicovitch.multiplicity E

full_name: Besicovitch.SatelliteConfig.exists_normalized_aux1
code: theorem exists_normalized_aux1 {N : ℕ} {τ : ℝ} (a : SatelliteConfig E N τ)
    (lastr : a.r (last N) = 1) (hτ : 1 ≤ τ) (δ : ℝ) (hδ1 : τ ≤ 1 + δ / 4) (hδ2 : δ ≤ 1)
    (i j : Fin N.succ) (inej : i ≠ j) : 1 - δ ≤ ‖a.c i - a.c j‖ 
goal: 1 - δ ≤ ‖a.c i - a.c j‖

full_name: Besicovitch.SatelliteConfig.exists_normalized_aux2
code: theorem exists_normalized_aux2 {N : ℕ} {τ : ℝ} (a : SatelliteConfig E N τ)
    (lastc : a.c (last N) = 0) (lastr : a.r (last N) = 1) (hτ : 1 ≤ τ) (δ : ℝ) (hδ1 : τ ≤ 1 + δ / 4)
    (hδ2 : δ ≤ 1) (i j : Fin N.succ) (inej : i ≠ j) (hi : ‖a.c i‖ ≤ 2) (hj : 2 < ‖a.c j‖) :
    1 - δ ≤ ‖a.c i - (2 / ‖a.c j‖) • a.c j‖ 
goal: 1 - δ ≤ ‖a.c i - (2 / ‖a.c j‖) • a.c j‖

full_name: Besicovitch.SatelliteConfig.exists_normalized_aux3
code: theorem exists_normalized_aux3 {N : ℕ} {τ : ℝ} (a : SatelliteConfig E N τ)
    (lastc : a.c (last N) = 0) (lastr : a.r (last N) = 1) (hτ : 1 ≤ τ) (δ : ℝ) (hδ1 : τ ≤ 1 + δ / 4)
    (i j : Fin N.succ) (inej : i ≠ j) (hi : 2 < ‖a.c i‖) (hij : ‖a.c i‖ ≤ ‖a.c j‖) :
    1 - δ ≤ ‖(2 / ‖a.c i‖) • a.c i - (2 / ‖a.c j‖) • a.c j‖ 
goal: 1 - δ ≤ ‖(2 / ‖a.c i‖) • a.c i - (2 / ‖a.c j‖) • a.c j‖

full_name: Besicovitch.SatelliteConfig.exists_normalized
code: theorem exists_normalized {N : ℕ} {τ : ℝ} (a : SatelliteConfig E N τ) (lastc : a.c (last N) = 0)
    (lastr : a.r (last N) = 1) (hτ : 1 ≤ τ) (δ : ℝ) (hδ1 : τ ≤ 1 + δ / 4) (hδ2 : δ ≤ 1) :
    ∃ c' : Fin N.succ → E, (∀ n, ‖c' n‖ ≤ 2) ∧ Pairwise fun i j => 1 - δ ≤ ‖c' i - c' j‖ 
goal: ∃ c', (∀ (n : Fin N.succ), ‖c' n‖ ≤ 2) ∧ Pairwise fun i j => 1 - δ ≤ ‖c' i - c' j‖

full_name: Besicovitch.isEmpty_satelliteConfig_multiplicity
code: /-- In a normed vector space `E`, there can be no satellite configuration with `multiplicity E + 1`
points and the parameter `goodτ E`. This will ensure that in the inductive construction to get
the Besicovitch covering families, there will never be more than `multiplicity E` nonempty
families. -/
theorem isEmpty_satelliteConfig_multiplicity :
    IsEmpty (SatelliteConfig E (multiplicity E) (goodτ E)) 
goal: IsEmpty (Besicovitch.SatelliteConfig E (Besicovitch.multiplicity E) (Besicovitch.goodτ E))

full_name: Besicovitch.instHasBesicovitchCovering
code: instance (priority := 100) instHasBesicovitchCovering : HasBesicovitchCovering E 
goal: HasBesicovitchCovering E