Theorem: IsUnifLocDoublingMeasure.eventually_measure_mul_le_scalingConstantOf_mul
File: Mathlib/MeasureTheory/Measure/Doubling.lean

tactic: have h := Classical.choose_spec (exists_eventually_forall_measure_closedBall_le_mul μ K)
state_before: α : Type u_1
inst✝² : MetricSpace α
inst✝¹ : MeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsUnifLocDoublingMeasure μ
K : ℝ
⊢ ∃ R,
    0 < R ∧
      ∀ (x : α) (t r : ℝ),
        t ∈ Ioc 0 K → r ≤ R → ↑↑μ (closedBall x (t * r)) ≤ ↑(scalingConstantOf μ K) * ↑↑μ (closedBall x r)

tactic: rcases mem_nhdsWithin_Ioi_iff_exists_Ioc_subset.1 h with ⟨R, Rpos, hR⟩
state_before: α : Type u_1
inst✝² : MetricSpace α
inst✝¹ : MeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsUnifLocDoublingMeasure μ
K : ℝ
h :
  ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
    ∀ (x : α) (t : ℝ),
      t ≤ K →
        ↑↑μ (closedBall x (t * ε)) ≤
          ↑(Classical.choose
                (_ :
                  ∃ C,
                    ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                      ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
            ↑↑μ (closedBall x ε)
⊢ ∃ R,
    0 < R ∧
      ∀ (x : α) (t r : ℝ),
        t ∈ Ioc 0 K → r ≤ R → ↑↑μ (closedBall x (t * r)) ≤ ↑(scalingConstantOf μ K) * ↑↑μ (closedBall x r)

tactic: refine' ⟨R, Rpos, fun x t r ht hr => _⟩
state_before: case intro.intro
α : Type u_1
inst✝² : MetricSpace α
inst✝¹ : MeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsUnifLocDoublingMeasure μ
K : ℝ
h :
  ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
    ∀ (x : α) (t : ℝ),
      t ≤ K →
        ↑↑μ (closedBall x (t * ε)) ≤
          ↑(Classical.choose
                (_ :
                  ∃ C,
                    ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                      ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
            ↑↑μ (closedBall x ε)
R : ℝ
Rpos : R ∈ Ioi 0
hR :
  Ioc 0 R ⊆
    {x |
      (fun ε =>
          ∀ (x : α) (t : ℝ),
            t ≤ K →
              ↑↑μ (closedBall x (t * ε)) ≤
                ↑(Classical.choose
                      (_ :
                        ∃ C,
                          ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                            ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
                  ↑↑μ (closedBall x ε))
        x}
⊢ ∃ R,
    0 < R ∧
      ∀ (x : α) (t r : ℝ),
        t ∈ Ioc 0 K → r ≤ R → ↑↑μ (closedBall x (t * r)) ≤ ↑(scalingConstantOf μ K) * ↑↑μ (closedBall x r)

tactic: rcases lt_trichotomy r 0 with (rneg | rfl | rpos)
state_before: case intro.intro
α : Type u_1
inst✝² : MetricSpace α
inst✝¹ : MeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsUnifLocDoublingMeasure μ
K : ℝ
h :
  ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
    ∀ (x : α) (t : ℝ),
      t ≤ K →
        ↑↑μ (closedBall x (t * ε)) ≤
          ↑(Classical.choose
                (_ :
                  ∃ C,
                    ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                      ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
            ↑↑μ (closedBall x ε)
R : ℝ
Rpos : R ∈ Ioi 0
hR :
  Ioc 0 R ⊆
    {x |
      (fun ε =>
          ∀ (x : α) (t : ℝ),
            t ≤ K →
              ↑↑μ (closedBall x (t * ε)) ≤
                ↑(Classical.choose
                      (_ :
                        ∃ C,
                          ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                            ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
                  ↑↑μ (closedBall x ε))
        x}
x : α
t r : ℝ
ht : t ∈ Ioc 0 K
hr : r ≤ R
⊢ ↑↑μ (closedBall x (t * r)) ≤ ↑(scalingConstantOf μ K) * ↑↑μ (closedBall x r)

tactic: have : t * r < 0 := mul_neg_of_pos_of_neg ht.1 rneg
state_before: case intro.intro.inl
α : Type u_1
inst✝² : MetricSpace α
inst✝¹ : MeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsUnifLocDoublingMeasure μ
K : ℝ
h :
  ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
    ∀ (x : α) (t : ℝ),
      t ≤ K →
        ↑↑μ (closedBall x (t * ε)) ≤
          ↑(Classical.choose
                (_ :
                  ∃ C,
                    ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                      ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
            ↑↑μ (closedBall x ε)
R : ℝ
Rpos : R ∈ Ioi 0
hR :
  Ioc 0 R ⊆
    {x |
      (fun ε =>
          ∀ (x : α) (t : ℝ),
            t ≤ K →
              ↑↑μ (closedBall x (t * ε)) ≤
                ↑(Classical.choose
                      (_ :
                        ∃ C,
                          ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                            ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
                  ↑↑μ (closedBall x ε))
        x}
x : α
t r : ℝ
ht : t ∈ Ioc 0 K
hr : r ≤ R
rneg : r < 0
⊢ ↑↑μ (closedBall x (t * r)) ≤ ↑(scalingConstantOf μ K) * ↑↑μ (closedBall x r)

tactic: simp only [closedBall_eq_empty.2 this, measure_empty, zero_le']
state_before: case intro.intro.inl
α : Type u_1
inst✝² : MetricSpace α
inst✝¹ : MeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsUnifLocDoublingMeasure μ
K : ℝ
h :
  ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
    ∀ (x : α) (t : ℝ),
      t ≤ K →
        ↑↑μ (closedBall x (t * ε)) ≤
          ↑(Classical.choose
                (_ :
                  ∃ C,
                    ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                      ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
            ↑↑μ (closedBall x ε)
R : ℝ
Rpos : R ∈ Ioi 0
hR :
  Ioc 0 R ⊆
    {x |
      (fun ε =>
          ∀ (x : α) (t : ℝ),
            t ≤ K →
              ↑↑μ (closedBall x (t * ε)) ≤
                ↑(Classical.choose
                      (_ :
                        ∃ C,
                          ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                            ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
                  ↑↑μ (closedBall x ε))
        x}
x : α
t r : ℝ
ht : t ∈ Ioc 0 K
hr : r ≤ R
rneg : r < 0
this : t * r < 0
⊢ ↑↑μ (closedBall x (t * r)) ≤ ↑(scalingConstantOf μ K) * ↑↑μ (closedBall x r)

tactic: simp only [MulZeroClass.mul_zero, closedBall_zero]
state_before: case intro.intro.inr.inl
α : Type u_1
inst✝² : MetricSpace α
inst✝¹ : MeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsUnifLocDoublingMeasure μ
K : ℝ
h :
  ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
    ∀ (x : α) (t : ℝ),
      t ≤ K →
        ↑↑μ (closedBall x (t * ε)) ≤
          ↑(Classical.choose
                (_ :
                  ∃ C,
                    ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                      ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
            ↑↑μ (closedBall x ε)
R : ℝ
Rpos : R ∈ Ioi 0
hR :
  Ioc 0 R ⊆
    {x |
      (fun ε =>
          ∀ (x : α) (t : ℝ),
            t ≤ K →
              ↑↑μ (closedBall x (t * ε)) ≤
                ↑(Classical.choose
                      (_ :
                        ∃ C,
                          ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                            ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
                  ↑↑μ (closedBall x ε))
        x}
x : α
t : ℝ
ht : t ∈ Ioc 0 K
hr : 0 ≤ R
⊢ ↑↑μ (closedBall x (t * 0)) ≤ ↑(scalingConstantOf μ K) * ↑↑μ (closedBall x 0)

tactic: refine' le_mul_of_one_le_of_le _ le_rfl
state_before: case intro.intro.inr.inl
α : Type u_1
inst✝² : MetricSpace α
inst✝¹ : MeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsUnifLocDoublingMeasure μ
K : ℝ
h :
  ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
    ∀ (x : α) (t : ℝ),
      t ≤ K →
        ↑↑μ (closedBall x (t * ε)) ≤
          ↑(Classical.choose
                (_ :
                  ∃ C,
                    ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                      ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
            ↑↑μ (closedBall x ε)
R : ℝ
Rpos : R ∈ Ioi 0
hR :
  Ioc 0 R ⊆
    {x |
      (fun ε =>
          ∀ (x : α) (t : ℝ),
            t ≤ K →
              ↑↑μ (closedBall x (t * ε)) ≤
                ↑(Classical.choose
                      (_ :
                        ∃ C,
                          ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                            ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
                  ↑↑μ (closedBall x ε))
        x}
x : α
t : ℝ
ht : t ∈ Ioc 0 K
hr : 0 ≤ R
⊢ ↑↑μ {x} ≤ ↑(scalingConstantOf μ K) * ↑↑μ {x}

tactic: apply ENNReal.one_le_coe_iff.2 (le_max_right _ _)
state_before: case intro.intro.inr.inl
α : Type u_1
inst✝² : MetricSpace α
inst✝¹ : MeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsUnifLocDoublingMeasure μ
K : ℝ
h :
  ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
    ∀ (x : α) (t : ℝ),
      t ≤ K →
        ↑↑μ (closedBall x (t * ε)) ≤
          ↑(Classical.choose
                (_ :
                  ∃ C,
                    ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                      ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
            ↑↑μ (closedBall x ε)
R : ℝ
Rpos : R ∈ Ioi 0
hR :
  Ioc 0 R ⊆
    {x |
      (fun ε =>
          ∀ (x : α) (t : ℝ),
            t ≤ K →
              ↑↑μ (closedBall x (t * ε)) ≤
                ↑(Classical.choose
                      (_ :
                        ∃ C,
                          ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                            ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
                  ↑↑μ (closedBall x ε))
        x}
x : α
t : ℝ
ht : t ∈ Ioc 0 K
hr : 0 ≤ R
⊢ 1 ≤ ↑(scalingConstantOf μ K)

tactic: apply (hR ⟨rpos, hr⟩ x t ht.2).trans _
state_before: case intro.intro.inr.inr
α : Type u_1
inst✝² : MetricSpace α
inst✝¹ : MeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsUnifLocDoublingMeasure μ
K : ℝ
h :
  ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
    ∀ (x : α) (t : ℝ),
      t ≤ K →
        ↑↑μ (closedBall x (t * ε)) ≤
          ↑(Classical.choose
                (_ :
                  ∃ C,
                    ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                      ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
            ↑↑μ (closedBall x ε)
R : ℝ
Rpos : R ∈ Ioi 0
hR :
  Ioc 0 R ⊆
    {x |
      (fun ε =>
          ∀ (x : α) (t : ℝ),
            t ≤ K →
              ↑↑μ (closedBall x (t * ε)) ≤
                ↑(Classical.choose
                      (_ :
                        ∃ C,
                          ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                            ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
                  ↑↑μ (closedBall x ε))
        x}
x : α
t r : ℝ
ht : t ∈ Ioc 0 K
hr : r ≤ R
rpos : 0 < r
⊢ ↑↑μ (closedBall x (t * r)) ≤ ↑(scalingConstantOf μ K) * ↑↑μ (closedBall x r)

tactic: exact mul_le_mul_right' (ENNReal.coe_le_coe.2 (le_max_left _ _)) _
state_before: α : Type u_1
inst✝² : MetricSpace α
inst✝¹ : MeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsUnifLocDoublingMeasure μ
K : ℝ
h :
  ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
    ∀ (x : α) (t : ℝ),
      t ≤ K →
        ↑↑μ (closedBall x (t * ε)) ≤
          ↑(Classical.choose
                (_ :
                  ∃ C,
                    ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                      ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
            ↑↑μ (closedBall x ε)
R : ℝ
Rpos : R ∈ Ioi 0
hR :
  Ioc 0 R ⊆
    {x |
      (fun ε =>
          ∀ (x : α) (t : ℝ),
            t ≤ K →
              ↑↑μ (closedBall x (t * ε)) ≤
                ↑(Classical.choose
                      (_ :
                        ∃ C,
                          ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                            ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
                  ↑↑μ (closedBall x ε))
        x}
x : α
t r : ℝ
ht : t ∈ Ioc 0 K
hr : r ≤ R
rpos : 0 < r
⊢ ↑(Classical.choose
          (_ :
            ∃ C,
              ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0,
                ∀ (x : α) (t : ℝ), t ≤ K → ↑↑μ (closedBall x (t * ε)) ≤ ↑C * ↑↑μ (closedBall x ε))) *
      ↑↑μ (closedBall x r) ≤
    ↑(scalingConstantOf μ K) * ↑↑μ (closedBall x r)