File: Mathlib/MeasureTheory/Measure/Hausdorff.lean

full_name: MeasureTheory.OuterMeasure.IsMetric
code: /-- We say that an outer measure `μ` in an (e)metric space is *metric* if `μ (s ∪ t) = μ s + μ t`
for any two metric separated sets `s`, `t`. -/
def IsMetric (μ : OuterMeasure X) : Prop 
goal: Prop

full_name: MeasureTheory.OuterMeasure.IsMetric.finset_iUnion_of_pairwise_separated
code: /-- A metric outer measure is additive on a finite set of pairwise metric separated sets. -/
theorem finset_iUnion_of_pairwise_separated (hm : IsMetric μ) {I : Finset ι} {s : ι → Set X}
    (hI : ∀ i ∈ I, ∀ j ∈ I, i ≠ j → IsMetricSeparated (s i) (s j)) :
    μ (⋃ i ∈ I, s i) = ∑ i ∈ I, μ (s i) 
goal: μ (⋃ i ∈ I, s i) = ∑ i ∈ I, μ (s i)

full_name: MeasureTheory.OuterMeasure.IsMetric.borel_le_caratheodory
code: /-- Caratheodory theorem. If `m` is a metric outer measure, then every Borel measurable set `t` is
Caratheodory measurable: for any (not necessarily measurable) set `s` we have
`μ (s ∩ t) + μ (s \ t) = μ s`. -/
theorem borel_le_caratheodory (hm : IsMetric μ) : borel X ≤ μ.caratheodory 
goal: borel X ≤ μ.caratheodory

full_name: MeasureTheory.OuterMeasure.IsMetric.le_caratheodory
code: theorem le_caratheodory [MeasurableSpace X] [BorelSpace X] (hm : IsMetric μ) :
    ‹MeasurableSpace X› ≤ μ.caratheodory 
goal: inst✝ ≤ μ.caratheodory

full_name: MeasureTheory.OuterMeasure.mkMetric'.pre
code: /-- Auxiliary definition for `OuterMeasure.mkMetric'`: given a function on sets
`m : Set X → ℝ≥0∞`, returns the maximal outer measure `μ` such that `μ s ≤ m s`
for any set `s` of diameter at most `r`. -/
def mkMetric'.pre (m : Set X → ℝ≥0∞) (r : ℝ≥0∞) : OuterMeasure X 
goal: MeasureTheory.OuterMeasure X

full_name: MeasureTheory.OuterMeasure.mkMetric'
code: /-- Given a function `m : Set X → ℝ≥0∞`, `mkMetric' m` is the supremum of `mkMetric'.pre m r`
over `r > 0`. Equivalently, it is the limit of `mkMetric'.pre m r` as `r` tends to zero from
the right. -/
def mkMetric' (m : Set X → ℝ≥0∞) : OuterMeasure X 
goal: MeasureTheory.OuterMeasure X

full_name: MeasureTheory.OuterMeasure.mkMetric
code: /-- Given a function `m : ℝ≥0∞ → ℝ≥0∞` and `r > 0`, let `μ r` be the maximal outer measure such that
`μ s ≤ m (EMetric.diam s)` whenever `EMetric.diam s < r`. Then `mkMetric m = ⨆ r > 0, μ r`. -/
def mkMetric (m : ℝ≥0∞ → ℝ≥0∞) : OuterMeasure X 
goal: MeasureTheory.OuterMeasure X

full_name: MeasureTheory.OuterMeasure.mkMetric'.le_pre
code: theorem le_pre : μ ≤ pre m r ↔ ∀ s : Set X, diam s ≤ r → μ s ≤ m s 
goal: μ ≤ MeasureTheory.OuterMeasure.mkMetric'.pre m r ↔ ∀ (s : Set X), EMetric.diam s ≤ r → μ s ≤ m s

full_name: MeasureTheory.OuterMeasure.mkMetric'.pre_le
code: theorem pre_le (hs : diam s ≤ r) : pre m r s ≤ m s 
goal: (MeasureTheory.OuterMeasure.mkMetric'.pre m r) s ≤ m s

full_name: MeasureTheory.OuterMeasure.mkMetric'.mono_pre
code: theorem mono_pre (m : Set X → ℝ≥0∞) {r r' : ℝ≥0∞} (h : r ≤ r') : pre m r' ≤ pre m r 
goal: MeasureTheory.OuterMeasure.mkMetric'.pre m r' ≤ MeasureTheory.OuterMeasure.mkMetric'.pre m r

full_name: MeasureTheory.OuterMeasure.mkMetric'.mono_pre_nat
code: theorem mono_pre_nat (m : Set X → ℝ≥0∞) : Monotone fun k : ℕ => pre m k⁻¹ 
goal: Monotone fun k => MeasureTheory.OuterMeasure.mkMetric'.pre m (↑k)⁻¹

full_name: MeasureTheory.OuterMeasure.mkMetric'.tendsto_pre
code: theorem tendsto_pre (m : Set X → ℝ≥0∞) (s : Set X) :
    Tendsto (fun r => pre m r s) (𝓝[>] 0) (𝓝 <| mkMetric' m s) 
goal: Filter.Tendsto (fun r => (MeasureTheory.OuterMeasure.mkMetric'.pre m r) s) (𝓝[>] 0)
  (𝓝 ((MeasureTheory.OuterMeasure.mkMetric' m) s))

full_name: MeasureTheory.OuterMeasure.mkMetric'.tendsto_pre_nat
code: theorem tendsto_pre_nat (m : Set X → ℝ≥0∞) (s : Set X) :
    Tendsto (fun n : ℕ => pre m n⁻¹ s) atTop (𝓝 <| mkMetric' m s) 
goal: Filter.Tendsto (fun n => (MeasureTheory.OuterMeasure.mkMetric'.pre m (↑n)⁻¹) s) Filter.atTop
  (𝓝 ((MeasureTheory.OuterMeasure.mkMetric' m) s))

full_name: MeasureTheory.OuterMeasure.mkMetric'.eq_iSup_nat
code: theorem eq_iSup_nat (m : Set X → ℝ≥0∞) : mkMetric' m = ⨆ n : ℕ, mkMetric'.pre m n⁻¹ 
goal: MeasureTheory.OuterMeasure.mkMetric' m = ⨆ n, MeasureTheory.OuterMeasure.mkMetric'.pre m (↑n)⁻¹

full_name: MeasureTheory.OuterMeasure.mkMetric'.trim_pre
code: /-- `MeasureTheory.OuterMeasure.mkMetric'.pre m r` is a trimmed measure provided that
`m (closure s) = m s` for any set `s`. -/
theorem trim_pre [MeasurableSpace X] [OpensMeasurableSpace X] (m : Set X → ℝ≥0∞)
    (hcl : ∀ s, m (closure s) = m s) (r : ℝ≥0∞) : (pre m r).trim = pre m r 
goal: (MeasureTheory.OuterMeasure.mkMetric'.pre m r).trim = MeasureTheory.OuterMeasure.mkMetric'.pre m r

full_name: MeasureTheory.OuterMeasure.mkMetric'_isMetric
code: /-- An outer measure constructed using `OuterMeasure.mkMetric'` is a metric outer measure. -/
theorem mkMetric'_isMetric (m : Set X → ℝ≥0∞) : (mkMetric' m).IsMetric 
goal: (MeasureTheory.OuterMeasure.mkMetric' m).IsMetric

full_name: MeasureTheory.OuterMeasure.mkMetric_mono_smul
code: /-- If `c ∉ {0, ∞}` and `m₁ d ≤ c * m₂ d` for `d < ε` for some `ε > 0`
(we use `≤ᶠ[𝓝[≥] 0]` to state this), then `mkMetric m₁ hm₁ ≤ c • mkMetric m₂ hm₂`. -/
theorem mkMetric_mono_smul {m₁ m₂ : ℝ≥0∞ → ℝ≥0∞} {c : ℝ≥0∞} (hc : c ≠ ∞) (h0 : c ≠ 0)
    (hle : m₁ ≤ᶠ[𝓝[≥] 0] c • m₂) : (mkMetric m₁ : OuterMeasure X) ≤ c • mkMetric m₂ 
goal: MeasureTheory.OuterMeasure.mkMetric m₁ ≤ c • MeasureTheory.OuterMeasure.mkMetric m₂

full_name: MeasureTheory.OuterMeasure.mkMetric_top
code: @[simp]
theorem mkMetric_top : (mkMetric (fun _ => ∞ : ℝ≥0∞ → ℝ≥0∞) : OuterMeasure X) = ⊤ 
goal: (MeasureTheory.OuterMeasure.mkMetric fun x => ⊤) = ⊤

full_name: MeasureTheory.OuterMeasure.mkMetric_mono
code: /-- If `m₁ d ≤ m₂ d` for `d < ε` for some `ε > 0` (we use `≤ᶠ[𝓝[≥] 0]` to state this), then
`mkMetric m₁ hm₁ ≤ mkMetric m₂ hm₂`. -/
theorem mkMetric_mono {m₁ m₂ : ℝ≥0∞ → ℝ≥0∞} (hle : m₁ ≤ᶠ[𝓝[≥] 0] m₂) :
    (mkMetric m₁ : OuterMeasure X) ≤ mkMetric m₂ 
goal: MeasureTheory.OuterMeasure.mkMetric m₁ ≤ MeasureTheory.OuterMeasure.mkMetric m₂

full_name: MeasureTheory.OuterMeasure.isometry_comap_mkMetric
code: theorem isometry_comap_mkMetric (m : ℝ≥0∞ → ℝ≥0∞) {f : X → Y} (hf : Isometry f)
    (H : Monotone m ∨ Surjective f) : comap f (mkMetric m) = mkMetric m 
goal: (MeasureTheory.OuterMeasure.comap f) (MeasureTheory.OuterMeasure.mkMetric m) = MeasureTheory.OuterMeasure.mkMetric m

full_name: MeasureTheory.OuterMeasure.mkMetric_smul
code: theorem mkMetric_smul (m : ℝ≥0∞ → ℝ≥0∞) {c : ℝ≥0∞} (hc : c ≠ ∞) (hc' : c ≠ 0) :
    (mkMetric (c • m) : OuterMeasure X) = c • mkMetric m 
goal: MeasureTheory.OuterMeasure.mkMetric (c • m) = c • MeasureTheory.OuterMeasure.mkMetric m

full_name: MeasureTheory.OuterMeasure.mkMetric_nnreal_smul
code: theorem mkMetric_nnreal_smul (m : ℝ≥0∞ → ℝ≥0∞) {c : ℝ≥0} (hc : c ≠ 0) :
    (mkMetric (c • m) : OuterMeasure X) = c • mkMetric m 
goal: MeasureTheory.OuterMeasure.mkMetric (c • m) = c • MeasureTheory.OuterMeasure.mkMetric m

full_name: MeasureTheory.OuterMeasure.isometry_map_mkMetric
code: theorem isometry_map_mkMetric (m : ℝ≥0∞ → ℝ≥0∞) {f : X → Y} (hf : Isometry f)
    (H : Monotone m ∨ Surjective f) : map f (mkMetric m) = restrict (range f) (mkMetric m) 
goal: (MeasureTheory.OuterMeasure.map f) (MeasureTheory.OuterMeasure.mkMetric m) =
  (MeasureTheory.OuterMeasure.restrict (Set.range f)) (MeasureTheory.OuterMeasure.mkMetric m)

full_name: MeasureTheory.OuterMeasure.isometryEquiv_comap_mkMetric
code: theorem isometryEquiv_comap_mkMetric (m : ℝ≥0∞ → ℝ≥0∞) (f : X ≃ᵢ Y) :
    comap f (mkMetric m) = mkMetric m 
goal: (MeasureTheory.OuterMeasure.comap ⇑f) (MeasureTheory.OuterMeasure.mkMetric m) = MeasureTheory.OuterMeasure.mkMetric m

full_name: MeasureTheory.OuterMeasure.isometryEquiv_map_mkMetric
code: theorem isometryEquiv_map_mkMetric (m : ℝ≥0∞ → ℝ≥0∞) (f : X ≃ᵢ Y) :
    map f (mkMetric m) = mkMetric m 
goal: (MeasureTheory.OuterMeasure.map ⇑f) (MeasureTheory.OuterMeasure.mkMetric m) = MeasureTheory.OuterMeasure.mkMetric m

full_name: MeasureTheory.OuterMeasure.trim_mkMetric
code: theorem trim_mkMetric [MeasurableSpace X] [BorelSpace X] (m : ℝ≥0∞ → ℝ≥0∞) :
    (mkMetric m : OuterMeasure X).trim = mkMetric m 
goal: (MeasureTheory.OuterMeasure.mkMetric m).trim = MeasureTheory.OuterMeasure.mkMetric m

full_name: MeasureTheory.OuterMeasure.le_mkMetric
code: theorem le_mkMetric (m : ℝ≥0∞ → ℝ≥0∞) (μ : OuterMeasure X) (r : ℝ≥0∞) (h0 : 0 < r)
    (hr : ∀ s, diam s ≤ r → μ s ≤ m (diam s)) : μ ≤ mkMetric m 
goal: μ ≤ MeasureTheory.OuterMeasure.mkMetric m

full_name: MeasureTheory.Measure.mkMetric'
code: /-- Given a function `m : Set X → ℝ≥0∞`, `mkMetric' m` is the supremum of `μ r`
over `r > 0`, where `μ r` is the maximal outer measure `μ` such that `μ s ≤ m s`
for all `s`. While each `μ r` is an *outer* measure, the supremum is a measure. -/
def mkMetric' (m : Set X → ℝ≥0∞) : Measure X 
goal: MeasureTheory.Measure X

full_name: MeasureTheory.Measure.mkMetric
code: /-- Given a function `m : ℝ≥0∞ → ℝ≥0∞`, `mkMetric m` is the supremum of `μ r` over `r > 0`, where
`μ r` is the maximal outer measure `μ` such that `μ s ≤ m s` for all sets `s` that contain at least
two points. While each `mkMetric'.pre` is an *outer* measure, the supremum is a measure. -/
def mkMetric (m : ℝ≥0∞ → ℝ≥0∞) : Measure X 
goal: MeasureTheory.Measure X

full_name: MeasureTheory.Measure.mkMetric'_toOuterMeasure
code: @[simp]
theorem mkMetric'_toOuterMeasure (m : Set X → ℝ≥0∞) :
    (mkMetric' m).toOuterMeasure = (OuterMeasure.mkMetric' m).trim 
goal: (MeasureTheory.Measure.mkMetric' m).toOuterMeasure = (MeasureTheory.OuterMeasure.mkMetric' m).trim

full_name: MeasureTheory.Measure.mkMetric_toOuterMeasure
code: @[simp]
theorem mkMetric_toOuterMeasure (m : ℝ≥0∞ → ℝ≥0∞) :
    (mkMetric m : Measure X).toOuterMeasure = OuterMeasure.mkMetric m 
goal: (MeasureTheory.Measure.mkMetric m).toOuterMeasure = MeasureTheory.OuterMeasure.mkMetric m

full_name: MeasureTheory.OuterMeasure.coe_mkMetric
code: theorem OuterMeasure.coe_mkMetric [MeasurableSpace X] [BorelSpace X] (m : ℝ≥0∞ → ℝ≥0∞) :
    ⇑(OuterMeasure.mkMetric m : OuterMeasure X) = Measure.mkMetric m 
goal: ⇑(MeasureTheory.OuterMeasure.mkMetric m) = ⇑(MeasureTheory.Measure.mkMetric m)

full_name: MeasureTheory.Measure.mkMetric_mono_smul
code: /-- If `c ∉ {0, ∞}` and `m₁ d ≤ c * m₂ d` for `d < ε` for some `ε > 0`
(we use `≤ᶠ[𝓝[≥] 0]` to state this), then `mkMetric m₁ hm₁ ≤ c • mkMetric m₂ hm₂`. -/
theorem mkMetric_mono_smul {m₁ m₂ : ℝ≥0∞ → ℝ≥0∞} {c : ℝ≥0∞} (hc : c ≠ ∞) (h0 : c ≠ 0)
    (hle : m₁ ≤ᶠ[𝓝[≥] 0] c • m₂) : (mkMetric m₁ : Measure X) ≤ c • mkMetric m₂ 
goal: MeasureTheory.Measure.mkMetric m₁ ≤ c • MeasureTheory.Measure.mkMetric m₂

full_name: MeasureTheory.Measure.mkMetric_top
code: @[simp]
theorem mkMetric_top : (mkMetric (fun _ => ∞ : ℝ≥0∞ → ℝ≥0∞) : Measure X) = ⊤ 
goal: (MeasureTheory.Measure.mkMetric fun x => ⊤) = ⊤

full_name: MeasureTheory.Measure.mkMetric_mono
code: /-- If `m₁ d ≤ m₂ d` for `d < ε` for some `ε > 0` (we use `≤ᶠ[𝓝[≥] 0]` to state this), then
`mkMetric m₁ hm₁ ≤ mkMetric m₂ hm₂`. -/
theorem mkMetric_mono {m₁ m₂ : ℝ≥0∞ → ℝ≥0∞} (hle : m₁ ≤ᶠ[𝓝[≥] 0] m₂) :
    (mkMetric m₁ : Measure X) ≤ mkMetric m₂ 
goal: MeasureTheory.Measure.mkMetric m₁ ≤ MeasureTheory.Measure.mkMetric m₂

full_name: MeasureTheory.Measure.mkMetric_apply
code: /-- A formula for `MeasureTheory.Measure.mkMetric`. -/
theorem mkMetric_apply (m : ℝ≥0∞ → ℝ≥0∞) (s : Set X) :
    mkMetric m s =
      ⨆ (r : ℝ≥0∞) (_ : 0 < r),
        ⨅ (t : ℕ → Set X) (_ : s ⊆ iUnion t) (_ : ∀ n, diam (t n) ≤ r),
          ∑' n, ⨆ _ : (t n).Nonempty, m (diam (t n)) 
goal: (MeasureTheory.Measure.mkMetric m) s =
  ⨆ r,
    ⨆ (_ : 0 < r),
      ⨅ t,
        ⨅ (_ : s ⊆ Set.iUnion t),
          ⨅ (_ : ∀ (n : ℕ), EMetric.diam (t n) ≤ r), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), m (EMetric.diam (t n))

full_name: MeasureTheory.Measure.le_mkMetric
code: theorem le_mkMetric (m : ℝ≥0∞ → ℝ≥0∞) (μ : Measure X) (ε : ℝ≥0∞) (h₀ : 0 < ε)
    (h : ∀ s : Set X, diam s ≤ ε → μ s ≤ m (diam s)) : μ ≤ mkMetric m 
goal: μ ≤ MeasureTheory.Measure.mkMetric m

full_name: MeasureTheory.Measure.mkMetric_le_liminf_tsum
code: /-- To bound the Hausdorff measure (or, more generally, for a measure defined using
`MeasureTheory.Measure.mkMetric`) of a set, one may use coverings with maximum diameter tending to
`0`, indexed by any sequence of countable types. -/
theorem mkMetric_le_liminf_tsum {β : Type*} {ι : β → Type*} [∀ n, Countable (ι n)] (s : Set X)
    {l : Filter β} (r : β → ℝ≥0∞) (hr : Tendsto r l (𝓝 0)) (t : ∀ n : β, ι n → Set X)
    (ht : ∀ᶠ n in l, ∀ i, diam (t n i) ≤ r n) (hst : ∀ᶠ n in l, s ⊆ ⋃ i, t n i) (m : ℝ≥0∞ → ℝ≥0∞) :
    mkMetric m s ≤ liminf (fun n => ∑' i, m (diam (t n i))) l 
goal: (MeasureTheory.Measure.mkMetric m) s ≤ Filter.liminf (fun n => ∑' (i : ι n), m (EMetric.diam (t n i))) l

full_name: MeasureTheory.Measure.mkMetric_le_liminf_sum
code: /-- To bound the Hausdorff measure (or, more generally, for a measure defined using
`MeasureTheory.Measure.mkMetric`) of a set, one may use coverings with maximum diameter tending to
`0`, indexed by any sequence of finite types. -/
theorem mkMetric_le_liminf_sum {β : Type*} {ι : β → Type*} [hι : ∀ n, Fintype (ι n)] (s : Set X)
    {l : Filter β} (r : β → ℝ≥0∞) (hr : Tendsto r l (𝓝 0)) (t : ∀ n : β, ι n → Set X)
    (ht : ∀ᶠ n in l, ∀ i, diam (t n i) ≤ r n) (hst : ∀ᶠ n in l, s ⊆ ⋃ i, t n i) (m : ℝ≥0∞ → ℝ≥0∞) :
    mkMetric m s ≤ liminf (fun n => ∑ i, m (diam (t n i))) l 
goal: (MeasureTheory.Measure.mkMetric m) s ≤ Filter.liminf (fun n => ∑ i : ι n, m (EMetric.diam (t n i))) l

full_name: MeasureTheory.Measure.hausdorffMeasure
code: /-- Hausdorff measure on an (e)metric space. -/
def hausdorffMeasure (d : ℝ) : Measure X 
goal: MeasureTheory.Measure X

full_name: MeasureTheory.«_aux_Mathlib_MeasureTheory_Measure_Hausdorff___macroRules_MeasureTheory_termμH[_]_1»
code: scoped[MeasureTheory] notation "μH[" d "]" => MeasureTheory.Measure.hausdorffMeasure d
goal: Lean.Macro

full_name: MeasureTheory._aux_Mathlib_MeasureTheory_Measure_Hausdorff___unexpand_MeasureTheory_Measure_hausdorffMeasure_1
code: scoped[MeasureTheory] notation "μH[" d "]" => MeasureTheory.Measure.hausdorffMeasure d
goal: Lean.PrettyPrinter.Unexpander

full_name: MeasureTheory.Measure.le_hausdorffMeasure
code: theorem le_hausdorffMeasure (d : ℝ) (μ : Measure X) (ε : ℝ≥0∞) (h₀ : 0 < ε)
    (h : ∀ s : Set X, diam s ≤ ε → μ s ≤ diam s ^ d) : μ ≤ μH[d] 
goal: μ ≤ μH[d]

full_name: MeasureTheory.Measure.hausdorffMeasure_apply
code: /-- A formula for `μH[d] s`. -/
theorem hausdorffMeasure_apply (d : ℝ) (s : Set X) :
    μH[d] s =
      ⨆ (r : ℝ≥0∞) (_ : 0 < r),
        ⨅ (t : ℕ → Set X) (_ : s ⊆ ⋃ n, t n) (_ : ∀ n, diam (t n) ≤ r),
          ∑' n, ⨆ _ : (t n).Nonempty, diam (t n) ^ d 
goal: μH[d] s =
  ⨆ r,
    ⨆ (_ : 0 < r),
      ⨅ t,
        ⨅ (_ : s ⊆ ⋃ n, t n),
          ⨅ (_ : ∀ (n : ℕ), EMetric.diam (t n) ≤ r), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), EMetric.diam (t n) ^ d

full_name: MeasureTheory.Measure.hausdorffMeasure_le_liminf_tsum
code: /-- To bound the Hausdorff measure of a set, one may use coverings with maximum diameter tending
to `0`, indexed by any sequence of countable types. -/
theorem hausdorffMeasure_le_liminf_tsum {β : Type*} {ι : β → Type*} [∀ n, Countable (ι n)]
    (d : ℝ) (s : Set X) {l : Filter β} (r : β → ℝ≥0∞) (hr : Tendsto r l (𝓝 0))
    (t : ∀ n : β, ι n → Set X) (ht : ∀ᶠ n in l, ∀ i, diam (t n i) ≤ r n)
    (hst : ∀ᶠ n in l, s ⊆ ⋃ i, t n i) : μH[d] s ≤ liminf (fun n => ∑' i, diam (t n i) ^ d) l 
goal: μH[d] s ≤ Filter.liminf (fun n => ∑' (i : ι n), EMetric.diam (t n i) ^ d) l

full_name: MeasureTheory.Measure.hausdorffMeasure_le_liminf_sum
code: /-- To bound the Hausdorff measure of a set, one may use coverings with maximum diameter tending
to `0`, indexed by any sequence of finite types. -/
theorem hausdorffMeasure_le_liminf_sum {β : Type*} {ι : β → Type*} [∀ n, Fintype (ι n)]
    (d : ℝ) (s : Set X) {l : Filter β} (r : β → ℝ≥0∞) (hr : Tendsto r l (𝓝 0))
    (t : ∀ n : β, ι n → Set X) (ht : ∀ᶠ n in l, ∀ i, diam (t n i) ≤ r n)
    (hst : ∀ᶠ n in l, s ⊆ ⋃ i, t n i) : μH[d] s ≤ liminf (fun n => ∑ i, diam (t n i) ^ d) l 
goal: μH[d] s ≤ Filter.liminf (fun n => ∑ i : ι n, EMetric.diam (t n i) ^ d) l

full_name: MeasureTheory.Measure.hausdorffMeasure_zero_or_top
code: /-- If `d₁ < d₂`, then for any set `s` we have either `μH[d₂] s = 0`, or `μH[d₁] s = ∞`. -/
theorem hausdorffMeasure_zero_or_top {d₁ d₂ : ℝ} (h : d₁ < d₂) (s : Set X) :
    μH[d₂] s = 0 ∨ μH[d₁] s = ∞ 
goal: μH[d₂] s = 0 ∨ μH[d₁] s = ⊤

full_name: MeasureTheory.Measure.hausdorffMeasure_mono
code: /-- Hausdorff measure `μH[d] s` is monotone in `d`. -/
theorem hausdorffMeasure_mono {d₁ d₂ : ℝ} (h : d₁ ≤ d₂) (s : Set X) : μH[d₂] s ≤ μH[d₁] s 
goal: μH[d₂] s ≤ μH[d₁] s

full_name: MeasureTheory.Measure.noAtoms_hausdorff
code: theorem noAtoms_hausdorff {d : ℝ} (hd : 0 < d) : NoAtoms (hausdorffMeasure d : Measure X) 
goal: MeasureTheory.NoAtoms μH[d]

full_name: MeasureTheory.Measure.hausdorffMeasure_zero_singleton
code: @[simp]
theorem hausdorffMeasure_zero_singleton (x : X) : μH[0] ({x} : Set X) = 1 
goal: μH[0] {x} = 1

full_name: MeasureTheory.Measure.one_le_hausdorffMeasure_zero_of_nonempty
code: theorem one_le_hausdorffMeasure_zero_of_nonempty {s : Set X} (h : s.Nonempty) : 1 ≤ μH[0] s 
goal: 1 ≤ μH[0] s

full_name: MeasureTheory.Measure.hausdorffMeasure_le_one_of_subsingleton
code: theorem hausdorffMeasure_le_one_of_subsingleton {s : Set X} (hs : s.Subsingleton) {d : ℝ}
    (hd : 0 ≤ d) : μH[d] s ≤ 1 
goal: μH[d] s ≤ 1

full_name: HolderOnWith.hausdorffMeasure_image_le
code: /-- If `f : X → Y` is Hölder continuous on `s` with a positive exponent `r`, then
`μH[d] (f '' s) ≤ C ^ d * μH[r * d] s`. -/
theorem hausdorffMeasure_image_le (h : HolderOnWith C r f s) (hr : 0 < r) {d : ℝ} (hd : 0 ≤ d) :
    μH[d] (f '' s) ≤ (C : ℝ≥0∞) ^ d * μH[r * d] s 
goal: μH[d] (f '' s) ≤ ↑C ^ d * μH[↑r * d] s

full_name: LipschitzOnWith.hausdorffMeasure_image_le
code: /-- If `f : X → Y` is `K`-Lipschitz on `s`, then `μH[d] (f '' s) ≤ K ^ d * μH[d] s`. -/
theorem hausdorffMeasure_image_le (h : LipschitzOnWith K f s) {d : ℝ} (hd : 0 ≤ d) :
    μH[d] (f '' s) ≤ (K : ℝ≥0∞) ^ d * μH[d] s 
goal: μH[d] (f '' s) ≤ ↑K ^ d * μH[d] s

full_name: LipschitzWith.hausdorffMeasure_image_le
code: /-- If `f` is a `K`-Lipschitz map, then it increases the Hausdorff `d`-measures of sets at most
by the factor of `K ^ d`. -/
theorem hausdorffMeasure_image_le (h : LipschitzWith K f) {d : ℝ} (hd : 0 ≤ d) (s : Set X) :
    μH[d] (f '' s) ≤ (K : ℝ≥0∞) ^ d * μH[d] s 
goal: μH[d] (f '' s) ≤ ↑K ^ d * μH[d] s

full_name: MeasureTheory.Measure.hausdorffMeasure_smul₀
code: theorem MeasureTheory.Measure.hausdorffMeasure_smul₀ {𝕜 E : Type*} [NormedAddCommGroup E]
    [NormedField 𝕜] [NormedSpace 𝕜 E] [MeasurableSpace E] [BorelSpace E] {d : ℝ} (hd : 0 ≤ d)
    {r : 𝕜} (hr : r ≠ 0) (s : Set E) : μH[d] (r • s) = ‖r‖₊ ^ d • μH[d] s 
goal: μH[d] (r • s) = ‖r‖₊ ^ d • μH[d] s

full_name: AntilipschitzWith.hausdorffMeasure_preimage_le
code: theorem hausdorffMeasure_preimage_le (hf : AntilipschitzWith K f) (hd : 0 ≤ d) (s : Set Y) :
    μH[d] (f ⁻¹' s) ≤ (K : ℝ≥0∞) ^ d * μH[d] s 
goal: μH[d] (f ⁻¹' s) ≤ ↑K ^ d * μH[d] s

full_name: AntilipschitzWith.le_hausdorffMeasure_image
code: theorem le_hausdorffMeasure_image (hf : AntilipschitzWith K f) (hd : 0 ≤ d) (s : Set X) :
    μH[d] s ≤ (K : ℝ≥0∞) ^ d * μH[d] (f '' s) 
goal: μH[d] s ≤ ↑K ^ d * μH[d] (f '' s)

full_name: Isometry.hausdorffMeasure_image
code: theorem hausdorffMeasure_image (hf : Isometry f) (hd : 0 ≤ d ∨ Surjective f) (s : Set X) :
    μH[d] (f '' s) = μH[d] s 
goal: μH[d] (f '' s) = μH[d] s

full_name: Isometry.hausdorffMeasure_preimage
code: theorem hausdorffMeasure_preimage (hf : Isometry f) (hd : 0 ≤ d ∨ Surjective f) (s : Set Y) :
    μH[d] (f ⁻¹' s) = μH[d] (s ∩ range f) 
goal: μH[d] (f ⁻¹' s) = μH[d] (s ∩ Set.range f)

full_name: Isometry.map_hausdorffMeasure
code: theorem map_hausdorffMeasure (hf : Isometry f) (hd : 0 ≤ d ∨ Surjective f) :
    Measure.map f μH[d] = μH[d].restrict (range f) 
goal: MeasureTheory.Measure.map f μH[d] = μH[d].restrict (Set.range f)

full_name: IsometryEquiv.hausdorffMeasure_image
code: @[simp]
theorem hausdorffMeasure_image (e : X ≃ᵢ Y) (d : ℝ) (s : Set X) : μH[d] (e '' s) = μH[d] s 
goal: μH[d] (⇑e '' s) = μH[d] s

full_name: IsometryEquiv.hausdorffMeasure_preimage
code: @[simp]
theorem hausdorffMeasure_preimage (e : X ≃ᵢ Y) (d : ℝ) (s : Set Y) : μH[d] (e ⁻¹' s) = μH[d] s 
goal: μH[d] (⇑e ⁻¹' s) = μH[d] s

full_name: IsometryEquiv.map_hausdorffMeasure
code: @[simp]
theorem map_hausdorffMeasure (e : X ≃ᵢ Y) (d : ℝ) : Measure.map e μH[d] = μH[d] 
goal: MeasureTheory.Measure.map ⇑e μH[d] = μH[d]

full_name: IsometryEquiv.measurePreserving_hausdorffMeasure
code: theorem measurePreserving_hausdorffMeasure (e : X ≃ᵢ Y) (d : ℝ) : MeasurePreserving e μH[d] μH[d] 
goal: MeasureTheory.MeasurePreserving ⇑e μH[d] μH[d]

full_name: MeasureTheory.hausdorffMeasure_smul
code: @[to_additive]
theorem hausdorffMeasure_smul {α : Type*} [SMul α X] [IsometricSMul α X] {d : ℝ} (c : α)
    (h : 0 ≤ d ∨ Surjective (c • · : X → X)) (s : Set X) : μH[d] (c • s) = μH[d] s 
goal: μH[d] (c • s) = μH[d] s

full_name: MeasureTheory.hausdorffMeasure_vadd
code: @[to_additive]
theorem hausdorffMeasure_smul {α : Type*} [SMul α X] [IsometricSMul α X] {d : ℝ} (c : α)
    (h : 0 ≤ d ∨ Surjective (c • · : X → X)) (s : Set X) : μH[d] (c • s) = μH[d] s 
goal: μH[d] (c +ᵥ s) = μH[d] s

full_name: MeasureTheory.instIsMulLeftInvariantHausdorffMeasureOfIsometricSMul
code: @[to_additive]
instance {d : ℝ} [Group X] [IsometricSMul X X] : IsMulLeftInvariant (μH[d] : Measure X) 
goal: μH[d].IsMulLeftInvariant

full_name: MeasureTheory.instIsAddLeftInvariantHausdorffMeasureOfIsometricVAdd
code: @[to_additive]
instance {d : ℝ} [Group X] [IsometricSMul X X] : IsMulLeftInvariant (μH[d] : Measure X) 
goal: μH[d].IsAddLeftInvariant

full_name: MeasureTheory.instIsAddRightInvariantHausdorffMeasureOfIsometricVAddAddOpposite
code: @[to_additive]
instance {d : ℝ} [Group X] [IsometricSMul Xᵐᵒᵖ X] : IsMulRightInvariant (μH[d] : Measure X) 
goal: μH[d].IsAddRightInvariant

full_name: MeasureTheory.instIsMulRightInvariantHausdorffMeasureOfIsometricSMulMulOpposite
code: @[to_additive]
instance {d : ℝ} [Group X] [IsometricSMul Xᵐᵒᵖ X] : IsMulRightInvariant (μH[d] : Measure X) 
goal: μH[d].IsMulRightInvariant

full_name: MeasureTheory.hausdorffMeasure_pi_real
code: /-- In the space `ι → ℝ`, the Hausdorff measure coincides exactly with the Lebesgue measure. -/
@[simp]
theorem hausdorffMeasure_pi_real {ι : Type*} [Fintype ι] :
    (μH[Fintype.card ι] : Measure (ι → ℝ)) = volume 
goal: μH[↑(Fintype.card ι)] = MeasureTheory.volume

full_name: MeasureTheory.hausdorffMeasure_measurePreserving_funUnique
code: theorem hausdorffMeasure_measurePreserving_funUnique [Unique ι]
    [SecondCountableTopology X] (d : ℝ) :
    MeasurePreserving (MeasurableEquiv.funUnique ι X) μH[d] μH[d] 
goal: MeasureTheory.MeasurePreserving ⇑(MeasurableEquiv.funUnique ι X) μH[d] μH[d]

full_name: MeasureTheory.hausdorffMeasure_measurePreserving_piFinTwo
code: theorem hausdorffMeasure_measurePreserving_piFinTwo (α : Fin 2 → Type*)
    [∀ i, MeasurableSpace (α i)] [∀ i, EMetricSpace (α i)] [∀ i, BorelSpace (α i)]
    [∀ i, SecondCountableTopology (α i)] (d : ℝ) :
    MeasurePreserving (MeasurableEquiv.piFinTwo α) μH[d] μH[d] 
goal: MeasureTheory.MeasurePreserving ⇑(MeasurableEquiv.piFinTwo α) μH[d] μH[d]

full_name: MeasureTheory.hausdorffMeasure_real
code: /-- In the space `ℝ`, the Hausdorff measure coincides exactly with the Lebesgue measure. -/
@[simp]
theorem hausdorffMeasure_real : (μH[1] : Measure ℝ) = volume 
goal: μH[1] = MeasureTheory.volume

full_name: MeasureTheory.hausdorffMeasure_prod_real
code: /-- In the space `ℝ × ℝ`, the Hausdorff measure coincides exactly with the Lebesgue measure. -/
@[simp]
theorem hausdorffMeasure_prod_real : (μH[2] : Measure (ℝ × ℝ)) = volume 
goal: μH[2] = MeasureTheory.volume

full_name: MeasureTheory.hausdorffMeasure_smul_right_image
code: theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s 
goal: μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s

full_name: MeasureTheory.hausdorffMeasure_homothety_image
code: /-- Scaling by `c` around `x` scales the measure by `‖c‖₊ ^ d`. -/
theorem hausdorffMeasure_homothety_image {d : ℝ} (hd : 0 ≤ d) (x : P) {c : 𝕜} (hc : c ≠ 0)
    (s : Set P) : μH[d] (AffineMap.homothety x c '' s) = ‖c‖₊ ^ d • μH[d] s 
goal: μH[d] (⇑(AffineMap.homothety x c) '' s) = ‖c‖₊ ^ d • μH[d] s

full_name: MeasureTheory.hausdorffMeasure_homothety_preimage
code: theorem hausdorffMeasure_homothety_preimage {d : ℝ} (hd : 0 ≤ d) (x : P) {c : 𝕜} (hc : c ≠ 0)
    (s : Set P) : μH[d] (AffineMap.homothety x c ⁻¹' s) = ‖c‖₊⁻¹ ^ d • μH[d] s 
goal: μH[d] (⇑(AffineMap.homothety x c) ⁻¹' s) = ‖c‖₊⁻¹ ^ d • μH[d] s

full_name: MeasureTheory.hausdorffMeasure_lineMap_image
code: /-- Mapping a set of reals along a line segment scales the measure by the length of a segment.

This is an auxiliary result used to prove `hausdorffMeasure_affineSegment`. -/
theorem hausdorffMeasure_lineMap_image (x y : P) (s : Set ℝ) :
    μH[1] (AffineMap.lineMap x y '' s) = nndist x y • μH[1] s 
goal: μH[1] (⇑(AffineMap.lineMap x y) '' s) = nndist x y • μH[1] s

full_name: MeasureTheory.hausdorffMeasure_affineSegment
code: /-- The measure of a segment is the distance between its endpoints. -/
@[simp]
theorem hausdorffMeasure_affineSegment (x y : P) : μH[1] (affineSegment ℝ x y) = edist x y 
goal: μH[1] (affineSegment ℝ x y) = edist x y

full_name: MeasureTheory.hausdorffMeasure_segment
code: /-- The measure of a segment is the distance between its endpoints. -/
@[simp]
theorem hausdorffMeasure_segment {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (x y : E) : μH[1] (segment ℝ x y) = edist x y 
goal: μH[1] (segment ℝ x y) = edist x y