Theorem: MeasureTheory.Measure.hausdorffMeasure_zero_singleton
File: Mathlib/MeasureTheory/Measure/Hausdorff.lean

tactic: apply le_antisymm
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
⊢ μH[0] {x} = 1
state_after: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
⊢ μH[0] {x} ≤ 1

case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
⊢ 1 ≤ μH[0] {x}

tactic: let r : ℕ → ℝ≥0∞ := fun _ => 0
state_before: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
⊢ μH[0] {x} ≤ 1
state_after: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
r : ℕ → ℝ≥0∞ := fun x => 0
⊢ μH[0] {x} ≤ 1

tactic: let t : ℕ → Unit → Set X := fun _ _ => {x}
state_before: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
r : ℕ → ℝ≥0∞ := fun x => 0
⊢ μH[0] {x} ≤ 1
state_after: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
r : ℕ → ℝ≥0∞ := fun x => 0
t : ℕ → Unit → Set X := fun x_1 x_2 => {x}
⊢ μH[0] {x} ≤ 1

tactic: have ht : ∀ᶠ n in atTop, ∀ i, diam (t n i) ≤ r n := by
  simp only [t, r, imp_true_iff, eq_self_iff_true, diam_singleton, eventually_atTop,
    nonpos_iff_eq_zero, exists_const]
state_before: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
r : ℕ → ℝ≥0∞ := fun x => 0
t : ℕ → Unit → Set X := fun x_1 x_2 => {x}
⊢ μH[0] {x} ≤ 1
state_after: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
r : ℕ → ℝ≥0∞ := fun x => 0
t : ℕ → Unit → Set X := fun x_1 x_2 => {x}
ht : ∀ᶠ (n : ℕ) in atTop, ∀ (i : Unit), diam (t n i) ≤ r n
⊢ μH[0] {x} ≤ 1

tactic: simpa [t, liminf_const] using hausdorffMeasure_le_liminf_sum 0 {x} r tendsto_const_nhds t ht
state_before: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
r : ℕ → ℝ≥0∞ := fun x => 0
t : ℕ → Unit → Set X := fun x_1 x_2 => {x}
ht : ∀ᶠ (n : ℕ) in atTop, ∀ (i : Unit), diam (t n i) ≤ r n
⊢ μH[0] {x} ≤ 1
state_after: no goals

tactic: simp only [t, r, imp_true_iff, eq_self_iff_true, diam_singleton, eventually_atTop,
  nonpos_iff_eq_zero, exists_const]
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
r : ℕ → ℝ≥0∞ := fun x => 0
t : ℕ → Unit → Set X := fun x_1 x_2 => {x}
⊢ ∀ᶠ (n : ℕ) in atTop, ∀ (i : Unit), diam (t n i) ≤ r n
state_after: no goals

tactic: rw [hausdorffMeasure_apply]
state_before: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
⊢ 1 ≤ μH[0] {x}
state_after: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
⊢ 1 ≤
    ⨆ r,
      ⨆ (_ : 0 < r),
        ⨅ t,
          ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ r), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0

tactic: suffices
  (1 : ℝ≥0∞) ≤
    ⨅ (t : ℕ → Set X) (_ : {x} ⊆ ⋃ n, t n) (_ : ∀ n, diam (t n) ≤ 1),
      ∑' n, ⨆ _ : (t n).Nonempty, diam (t n) ^ (0 : ℝ) by
  apply le_trans this _
  convert le_iSup₂ (α := ℝ≥0∞) (1 : ℝ≥0∞) zero_lt_one
  rfl
state_before: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
⊢ 1 ≤
    ⨆ r,
      ⨆ (_ : 0 < r),
        ⨅ t,
          ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ r), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0
state_after: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
⊢ 1 ≤ ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0

tactic: simp only [ENNReal.rpow_zero, le_iInf_iff]
state_before: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
⊢ 1 ≤ ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0
state_after: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
⊢ ∀ (i : ℕ → Set X), {x} ⊆ ⋃ n, i n → (∀ (n : ℕ), diam (i n) ≤ 1) → 1 ≤ ∑' (n : ℕ), ⨆ (_ : (i n).Nonempty), 1

tactic: intro t hst _
state_before: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
⊢ ∀ (i : ℕ → Set X), {x} ⊆ ⋃ n, i n → (∀ (n : ℕ), diam (i n) ≤ 1) → 1 ≤ ∑' (n : ℕ), ⨆ (_ : (i n).Nonempty), 1
state_after: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
t : ℕ → Set X
hst : {x} ⊆ ⋃ n, t n
i✝ : ∀ (n : ℕ), diam (t n) ≤ 1
⊢ 1 ≤ ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), 1

tactic: rcases mem_iUnion.1 (hst (mem_singleton x)) with ⟨m, hm⟩
state_before: case a
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
t : ℕ → Set X
hst : {x} ⊆ ⋃ n, t n
i✝ : ∀ (n : ℕ), diam (t n) ≤ 1
⊢ 1 ≤ ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), 1
state_after: case a.intro
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
t : ℕ → Set X
hst : {x} ⊆ ⋃ n, t n
i✝ : ∀ (n : ℕ), diam (t n) ≤ 1
m : ℕ
hm : x ∈ t m
⊢ 1 ≤ ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), 1

tactic: have A : (t m).Nonempty := ⟨x, hm⟩
state_before: case a.intro
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
t : ℕ → Set X
hst : {x} ⊆ ⋃ n, t n
i✝ : ∀ (n : ℕ), diam (t n) ≤ 1
m : ℕ
hm : x ∈ t m
⊢ 1 ≤ ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), 1
state_after: case a.intro
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
t : ℕ → Set X
hst : {x} ⊆ ⋃ n, t n
i✝ : ∀ (n : ℕ), diam (t n) ≤ 1
m : ℕ
hm : x ∈ t m
A : (t m).Nonempty
⊢ 1 ≤ ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), 1

tactic: calc
  (1 : ℝ≥0∞) = ⨆ h : (t m).Nonempty, 1 := by simp only [A, ciSup_pos]
  _ ≤ ∑' n, ⨆ h : (t n).Nonempty, 1 := ENNReal.le_tsum _
state_before: case a.intro
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
t : ℕ → Set X
hst : {x} ⊆ ⋃ n, t n
i✝ : ∀ (n : ℕ), diam (t n) ≤ 1
m : ℕ
hm : x ∈ t m
A : (t m).Nonempty
⊢ 1 ≤ ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), 1
state_after: no goals

tactic: apply le_trans this _
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
this :
  1 ≤ ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0
⊢ 1 ≤
    ⨆ r,
      ⨆ (_ : 0 < r),
        ⨅ t,
          ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ r), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
this :
  1 ≤ ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0
⊢ ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0 ≤
    ⨆ r,
      ⨆ (_ : 0 < r),
        ⨅ t,
          ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ r), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0

tactic: convert le_iSup₂ (α := ℝ≥0∞) (1 : ℝ≥0∞) zero_lt_one
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
this :
  1 ≤ ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0
⊢ ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0 ≤
    ⨆ r,
      ⨆ (_ : 0 < r),
        ⨅ t,
          ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ r), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0
state_after: case h.e'_3
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
this :
  1 ≤ ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0
⊢ ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0 =
    ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0

tactic: rfl
state_before: case h.e'_3
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
this :
  1 ≤ ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0
⊢ ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0 =
    ⨅ t, ⨅ (_ : {x} ⊆ ⋃ n, t n), ⨅ (_ : ∀ (n : ℕ), diam (t n) ≤ 1), ∑' (n : ℕ), ⨆ (_ : (t n).Nonempty), diam (t n) ^ 0
state_after: no goals

tactic: simp only [A, ciSup_pos]
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
x : X
t : ℕ → Set X
hst : {x} ⊆ ⋃ n, t n
i✝ : ∀ (n : ℕ), diam (t n) ≤ 1
m : ℕ
hm : x ∈ t m
A : (t m).Nonempty
⊢ 1 = ⨆ (_ : (t m).Nonempty), 1
state_after: no goals