File: Mathlib/Topology/MetricSpace/HausdorffDimension.lean

full_name: dimH
code: /-- Hausdorff dimension of a set in an (e)metric space. -/
@[irreducible] noncomputable def dimH (s : Set X) : ℝ≥0∞ 
goal: ℝ≥0∞

full_name: dimH_def
code: /-- Unfold the definition of `dimH` using `[MeasurableSpace X] [BorelSpace X]` from the
environment. -/
theorem dimH_def (s : Set X) : dimH s = ⨆ (d : ℝ≥0) (_ : μH[d] s = ∞), (d : ℝ≥0∞) 
goal: dimH s = ⨆ d, ⨆ (_ : μH[↑d] s = ⊤), ↑d

full_name: hausdorffMeasure_of_lt_dimH
code: theorem hausdorffMeasure_of_lt_dimH {s : Set X} {d : ℝ≥0} (h : ↑d < dimH s) : μH[d] s = ∞ 
goal: μH[↑d] s = ⊤

full_name: dimH_le
code: theorem dimH_le {s : Set X} {d : ℝ≥0∞} (H : ∀ d' : ℝ≥0, μH[d'] s = ∞ → ↑d' ≤ d) : dimH s ≤ d 
goal: dimH s ≤ d

full_name: dimH_le_of_hausdorffMeasure_ne_top
code: theorem dimH_le_of_hausdorffMeasure_ne_top {s : Set X} {d : ℝ≥0} (h : μH[d] s ≠ ∞) : dimH s ≤ d 
goal: dimH s ≤ ↑d

full_name: le_dimH_of_hausdorffMeasure_eq_top
code: theorem le_dimH_of_hausdorffMeasure_eq_top {s : Set X} {d : ℝ≥0} (h : μH[d] s = ∞) :
    ↑d ≤ dimH s 
goal: ↑d ≤ dimH s

full_name: hausdorffMeasure_of_dimH_lt
code: theorem hausdorffMeasure_of_dimH_lt {s : Set X} {d : ℝ≥0} (h : dimH s < d) : μH[d] s = 0 
goal: μH[↑d] s = 0

full_name: measure_zero_of_dimH_lt
code: theorem measure_zero_of_dimH_lt {μ : Measure X} {d : ℝ≥0} (h : μ ≪ μH[d]) {s : Set X}
    (hd : dimH s < d) : μ s = 0 
goal: μ s = 0

full_name: le_dimH_of_hausdorffMeasure_ne_zero
code: theorem le_dimH_of_hausdorffMeasure_ne_zero {s : Set X} {d : ℝ≥0} (h : μH[d] s ≠ 0) : ↑d ≤ dimH s 
goal: ↑d ≤ dimH s

full_name: dimH_of_hausdorffMeasure_ne_zero_ne_top
code: theorem dimH_of_hausdorffMeasure_ne_zero_ne_top {d : ℝ≥0} {s : Set X} (h : μH[d] s ≠ 0)
    (h' : μH[d] s ≠ ∞) : dimH s = d 
goal: dimH s = ↑d

full_name: dimH_mono
code: @[mono]
theorem dimH_mono {s t : Set X} (h : s ⊆ t) : dimH s ≤ dimH t 
goal: dimH s ≤ dimH t

full_name: dimH_subsingleton
code: theorem dimH_subsingleton {s : Set X} (h : s.Subsingleton) : dimH s = 0 
goal: dimH s = 0

full_name: dimH_empty
code: @[simp]
theorem dimH_empty : dimH (∅ : Set X) = 0 
goal: dimH ∅ = 0

full_name: dimH_singleton
code: @[simp]
theorem dimH_singleton (x : X) : dimH ({x} : Set X) = 0 
goal: dimH {x} = 0

full_name: dimH_iUnion
code: @[simp]
theorem dimH_iUnion {ι : Sort*} [Countable ι] (s : ι → Set X) :
    dimH (⋃ i, s i) = ⨆ i, dimH (s i) 
goal: dimH (⋃ i, s i) = ⨆ i, dimH (s i)

full_name: dimH_bUnion
code: @[simp]
theorem dimH_bUnion {s : Set ι} (hs : s.Countable) (t : ι → Set X) :
    dimH (⋃ i ∈ s, t i) = ⨆ i ∈ s, dimH (t i) 
goal: dimH (⋃ i ∈ s, t i) = ⨆ i ∈ s, dimH (t i)

full_name: dimH_sUnion
code: @[simp]
theorem dimH_sUnion {S : Set (Set X)} (hS : S.Countable) : dimH (⋃₀ S) = ⨆ s ∈ S, dimH s 
goal: dimH (⋃₀ S) = ⨆ s ∈ S, dimH s

full_name: dimH_union
code: @[simp]
theorem dimH_union (s t : Set X) : dimH (s ∪ t) = max (dimH s) (dimH t) 
goal: dimH (s ∪ t) = max (dimH s) (dimH t)

full_name: dimH_countable
code: theorem dimH_countable {s : Set X} (hs : s.Countable) : dimH s = 0 
goal: dimH s = 0

full_name: dimH_finite
code: theorem dimH_finite {s : Set X} (hs : s.Finite) : dimH s = 0 
goal: dimH s = 0

full_name: dimH_coe_finset
code: @[simp]
theorem dimH_coe_finset (s : Finset X) : dimH (s : Set X) = 0 
goal: dimH ↑s = 0

full_name: exists_mem_nhdsWithin_lt_dimH_of_lt_dimH
code: /-- If `r` is less than the Hausdorff dimension of a set `s` in an (extended) metric space with
second countable topology, then there exists a point `x ∈ s` such that every neighborhood
`t` of `x` within `s` has Hausdorff dimension greater than `r`. -/
theorem exists_mem_nhdsWithin_lt_dimH_of_lt_dimH {s : Set X} {r : ℝ≥0∞} (h : r < dimH s) :
    ∃ x ∈ s, ∀ t ∈ 𝓝[s] x, r < dimH t 
goal: ∃ x ∈ s, ∀ t ∈ 𝓝[s] x, r < dimH t

full_name: bsupr_limsup_dimH
code: /-- In an (extended) metric space with second countable topology, the Hausdorff dimension
of a set `s` is the supremum over `x ∈ s` of the limit superiors of `dimH t` along
`(𝓝[s] x).smallSets`. -/
theorem bsupr_limsup_dimH (s : Set X) : ⨆ x ∈ s, limsup dimH (𝓝[s] x).smallSets = dimH s 
goal: ⨆ x ∈ s, Filter.limsup dimH (𝓝[s] x).smallSets = dimH s

full_name: iSup_limsup_dimH
code: /-- In an (extended) metric space with second countable topology, the Hausdorff dimension
of a set `s` is the supremum over all `x` of the limit superiors of `dimH t` along
`(𝓝[s] x).smallSets`. -/
theorem iSup_limsup_dimH (s : Set X) : ⨆ x, limsup dimH (𝓝[s] x).smallSets = dimH s 
goal: ⨆ x, Filter.limsup dimH (𝓝[s] x).smallSets = dimH s

full_name: HolderOnWith.dimH_image_le
code: /-- If `f` is a Hölder continuous map with exponent `r > 0`, then `dimH (f '' s) ≤ dimH s / r`. -/
theorem HolderOnWith.dimH_image_le (h : HolderOnWith C r f s) (hr : 0 < r) :
    dimH (f '' s) ≤ dimH s / r 
goal: dimH (f '' s) ≤ dimH s / ↑r

full_name: HolderWith.dimH_image_le
code: /-- If `f : X → Y` is Hölder continuous with a positive exponent `r`, then the Hausdorff dimension
of the image of a set `s` is at most `dimH s / r`. -/
theorem dimH_image_le (h : HolderWith C r f) (hr : 0 < r) (s : Set X) :
    dimH (f '' s) ≤ dimH s / r 
goal: dimH (f '' s) ≤ dimH s / ↑r

full_name: HolderWith.dimH_range_le
code: /-- If `f` is a Hölder continuous map with exponent `r > 0`, then the Hausdorff dimension of its
range is at most the Hausdorff dimension of its domain divided by `r`. -/
theorem dimH_range_le (h : HolderWith C r f) (hr : 0 < r) :
    dimH (range f) ≤ dimH (univ : Set X) / r 
goal: dimH (Set.range f) ≤ dimH Set.univ / ↑r

full_name: dimH_image_le_of_locally_holder_on
code: /-- If `s` is a set in a space `X` with second countable topology and `f : X → Y` is Hölder
continuous in a neighborhood within `s` of every point `x ∈ s` with the same positive exponent `r`
but possibly different coefficients, then the Hausdorff dimension of the image `f '' s` is at most
the Hausdorff dimension of `s` divided by `r`. -/
theorem dimH_image_le_of_locally_holder_on [SecondCountableTopology X] {r : ℝ≥0} {f : X → Y}
    (hr : 0 < r) {s : Set X} (hf : ∀ x ∈ s, ∃ C : ℝ≥0, ∃ t ∈ 𝓝[s] x, HolderOnWith C r f t) :
    dimH (f '' s) ≤ dimH s / r 
goal: dimH (f '' s) ≤ dimH s / ↑r

full_name: dimH_range_le_of_locally_holder_on
code: /-- If `f : X → Y` is Hölder continuous in a neighborhood of every point `x : X` with the same
positive exponent `r` but possibly different coefficients, then the Hausdorff dimension of the range
of `f` is at most the Hausdorff dimension of `X` divided by `r`. -/
theorem dimH_range_le_of_locally_holder_on [SecondCountableTopology X] {r : ℝ≥0} {f : X → Y}
    (hr : 0 < r) (hf : ∀ x : X, ∃ C : ℝ≥0, ∃ s ∈ 𝓝 x, HolderOnWith C r f s) :
    dimH (range f) ≤ dimH (univ : Set X) / r 
goal: dimH (Set.range f) ≤ dimH Set.univ / ↑r

full_name: LipschitzOnWith.dimH_image_le
code: /-- If `f : X → Y` is Lipschitz continuous on `s`, then `dimH (f '' s) ≤ dimH s`. -/
theorem LipschitzOnWith.dimH_image_le (h : LipschitzOnWith K f s) : dimH (f '' s) ≤ dimH s 
goal: dimH (f '' s) ≤ dimH s

full_name: LipschitzWith.dimH_image_le
code: /-- If `f` is a Lipschitz continuous map, then `dimH (f '' s) ≤ dimH s`. -/
theorem dimH_image_le (h : LipschitzWith K f) (s : Set X) : dimH (f '' s) ≤ dimH s 
goal: dimH (f '' s) ≤ dimH s

full_name: LipschitzWith.dimH_range_le
code: /-- If `f` is a Lipschitz continuous map, then the Hausdorff dimension of its range is at most the
Hausdorff dimension of its domain. -/
theorem dimH_range_le (h : LipschitzWith K f) : dimH (range f) ≤ dimH (univ : Set X) 
goal: dimH (Set.range f) ≤ dimH Set.univ

full_name: dimH_image_le_of_locally_lipschitzOn
code: /-- If `s` is a set in an extended metric space `X` with second countable topology and `f : X → Y`
is Lipschitz in a neighborhood within `s` of every point `x ∈ s`, then the Hausdorff dimension of
the image `f '' s` is at most the Hausdorff dimension of `s`. -/
theorem dimH_image_le_of_locally_lipschitzOn [SecondCountableTopology X] {f : X → Y} {s : Set X}
    (hf : ∀ x ∈ s, ∃ C : ℝ≥0, ∃ t ∈ 𝓝[s] x, LipschitzOnWith C f t) : dimH (f '' s) ≤ dimH s 
goal: dimH (f '' s) ≤ dimH s

full_name: dimH_range_le_of_locally_lipschitzOn
code: /-- If `f : X → Y` is Lipschitz in a neighborhood of each point `x : X`, then the Hausdorff
dimension of `range f` is at most the Hausdorff dimension of `X`. -/
theorem dimH_range_le_of_locally_lipschitzOn [SecondCountableTopology X] {f : X → Y}
    (hf : ∀ x : X, ∃ C : ℝ≥0, ∃ s ∈ 𝓝 x, LipschitzOnWith C f s) :
    dimH (range f) ≤ dimH (univ : Set X) 
goal: dimH (Set.range f) ≤ dimH Set.univ

full_name: AntilipschitzWith.dimH_preimage_le
code: theorem dimH_preimage_le (hf : AntilipschitzWith K f) (s : Set Y) : dimH (f ⁻¹' s) ≤ dimH s 
goal: dimH (f ⁻¹' s) ≤ dimH s

full_name: AntilipschitzWith.le_dimH_image
code: theorem le_dimH_image (hf : AntilipschitzWith K f) (s : Set X) : dimH s ≤ dimH (f '' s) 
goal: dimH s ≤ dimH (f '' s)

full_name: Isometry.dimH_image
code: theorem Isometry.dimH_image (hf : Isometry f) (s : Set X) : dimH (f '' s) = dimH s 
goal: dimH (f '' s) = dimH s

full_name: IsometryEquiv.dimH_image
code: @[simp]
theorem dimH_image (e : X ≃ᵢ Y) (s : Set X) : dimH (e '' s) = dimH s 
goal: dimH (⇑e '' s) = dimH s

full_name: IsometryEquiv.dimH_preimage
code: @[simp]
theorem dimH_preimage (e : X ≃ᵢ Y) (s : Set Y) : dimH (e ⁻¹' s) = dimH s 
goal: dimH (⇑e ⁻¹' s) = dimH s

full_name: IsometryEquiv.dimH_univ
code: theorem dimH_univ (e : X ≃ᵢ Y) : dimH (univ : Set X) = dimH (univ : Set Y) 
goal: dimH Set.univ = dimH Set.univ

full_name: ContinuousLinearEquiv.dimH_image
code: @[simp]
theorem dimH_image (e : E ≃L[𝕜] F) (s : Set E) : dimH (e '' s) = dimH s 
goal: dimH (⇑e '' s) = dimH s

full_name: ContinuousLinearEquiv.dimH_preimage
code: @[simp]
theorem dimH_preimage (e : E ≃L[𝕜] F) (s : Set F) : dimH (e ⁻¹' s) = dimH s 
goal: dimH (⇑e ⁻¹' s) = dimH s

full_name: ContinuousLinearEquiv.dimH_univ
code: theorem dimH_univ (e : E ≃L[𝕜] F) : dimH (univ : Set E) = dimH (univ : Set F) 
goal: dimH Set.univ = dimH Set.univ

full_name: Real.dimH_ball_pi
code: theorem dimH_ball_pi (x : ι → ℝ) {r : ℝ} (hr : 0 < r) :
    dimH (Metric.ball x r) = Fintype.card ι 
goal: dimH (Metric.ball x r) = ↑(Fintype.card ι)

full_name: Real.dimH_ball_pi_fin
code: theorem dimH_ball_pi_fin {n : ℕ} (x : Fin n → ℝ) {r : ℝ} (hr : 0 < r) :
    dimH (Metric.ball x r) = n 
goal: dimH (Metric.ball x r) = ↑n

full_name: Real.dimH_univ_pi
code: theorem dimH_univ_pi (ι : Type*) [Fintype ι] : dimH (univ : Set (ι → ℝ)) = Fintype.card ι 
goal: dimH Set.univ = ↑(Fintype.card ι)

full_name: Real.dimH_univ_pi_fin
code: theorem dimH_univ_pi_fin (n : ℕ) : dimH (univ : Set (Fin n → ℝ)) = n 
goal: dimH Set.univ = ↑n

full_name: Real.dimH_of_mem_nhds
code: theorem dimH_of_mem_nhds {x : E} {s : Set E} (h : s ∈ 𝓝 x) : dimH s = finrank ℝ E 
goal: dimH s = ↑(FiniteDimensional.finrank ℝ E)

full_name: Real.dimH_of_nonempty_interior
code: theorem dimH_of_nonempty_interior {s : Set E} (h : (interior s).Nonempty) : dimH s = finrank ℝ E 
goal: dimH s = ↑(FiniteDimensional.finrank ℝ E)

full_name: Real.dimH_univ_eq_finrank
code: theorem dimH_univ_eq_finrank : dimH (univ : Set E) = finrank ℝ E 
goal: dimH Set.univ = ↑(FiniteDimensional.finrank ℝ E)

full_name: Real.dimH_univ
code: theorem dimH_univ : dimH (univ : Set ℝ) = 1 
goal: dimH Set.univ = 1

full_name: Real.hausdorffMeasure_of_finrank_lt
code: lemma hausdorffMeasure_of_finrank_lt [MeasurableSpace E] [BorelSpace E] {d : ℝ}
    (hd : finrank ℝ E < d) : (μH[d] : Measure E) = 0 
goal: μH[d] = 0

full_name: dense_compl_of_dimH_lt_finrank
code: theorem dense_compl_of_dimH_lt_finrank {s : Set E} (hs : dimH s < finrank ℝ E) : Dense sᶜ 
goal: Dense sᶜ

full_name: ContDiffOn.dimH_image_le
code: /-- Let `f` be a function defined on a finite dimensional real normed space. If `f` is `C¹`-smooth
on a convex set `s`, then the Hausdorff dimension of `f '' s` is less than or equal to the Hausdorff
dimension of `s`.

TODO: do we actually need `Convex ℝ s`? -/
theorem ContDiffOn.dimH_image_le {f : E → F} {s t : Set E} (hf : ContDiffOn ℝ 1 f s)
    (hc : Convex ℝ s) (ht : t ⊆ s) : dimH (f '' t) ≤ dimH t 
goal: dimH (f '' t) ≤ dimH t

full_name: ContDiff.dimH_range_le
code: /-- The Hausdorff dimension of the range of a `C¹`-smooth function defined on a finite dimensional
real normed space is at most the dimension of its domain as a vector space over `ℝ`. -/
theorem ContDiff.dimH_range_le {f : E → F} (h : ContDiff ℝ 1 f) : dimH (range f) ≤ finrank ℝ E 
goal: dimH (Set.range f) ≤ ↑(FiniteDimensional.finrank ℝ E)

full_name: ContDiffOn.dense_compl_image_of_dimH_lt_finrank
code: /-- A particular case of Sard's Theorem. Let `f : E → F` be a map between finite dimensional real
vector spaces. Suppose that `f` is `C¹` smooth on a convex set `s` of Hausdorff dimension strictly
less than the dimension of `F`. Then the complement of the image `f '' s` is dense in `F`. -/
theorem ContDiffOn.dense_compl_image_of_dimH_lt_finrank [FiniteDimensional ℝ F] {f : E → F}
    {s t : Set E} (h : ContDiffOn ℝ 1 f s) (hc : Convex ℝ s) (ht : t ⊆ s)
    (htF : dimH t < finrank ℝ F) : Dense (f '' t)ᶜ 
goal: Dense (f '' t)ᶜ

full_name: ContDiff.dense_compl_range_of_finrank_lt_finrank
code: /-- A particular case of Sard's Theorem. If `f` is a `C¹` smooth map from a real vector space to a
real vector space `F` of strictly larger dimension, then the complement of the range of `f` is dense
in `F`. -/
theorem ContDiff.dense_compl_range_of_finrank_lt_finrank [FiniteDimensional ℝ F] {f : E → F}
    (h : ContDiff ℝ 1 f) (hEF : finrank ℝ E < finrank ℝ F) : Dense (range f)ᶜ 
goal: Dense (Set.range f)ᶜ