Theorem: MeasureTheory.addHaar_image_le_mul_of_det_lt
File: Mathlib/MeasureTheory/Function/Jacobian.lean

tactic: apply nhdsWithin_le_nhds
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
⊢ ∀ᶠ (δ : ℝ≥0) in 𝓝[Ioi 0] 0, ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s

tactic: let d := ENNReal.ofReal (|A.det|)
state_before: case a
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
⊢ {x | (fun δ => ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s) x} ∈ 𝓝 0

tactic: obtain ⟨ε, hε, εpos⟩ :
  ∃ ε : ℝ, μ (closedBall 0 ε + A '' closedBall 0 1) < m * μ (closedBall 0 1) ∧ 0 < ε := by
  have HC : IsCompact (A '' closedBall 0 1) :=
    (ProperSpace.isCompact_closedBall _ _).image A.continuous
  have L0 :
    Tendsto (fun ε => μ (cthickening ε (A '' closedBall 0 1))) (𝓝[>] 0)
      (𝓝 (μ (A '' closedBall 0 1))) := by
    apply Tendsto.mono_left _ nhdsWithin_le_nhds
    exact tendsto_measure_cthickening_of_isCompact HC
  have L1 :
    Tendsto (fun ε => μ (closedBall 0 ε + A '' closedBall 0 1)) (𝓝[>] 0)
      (𝓝 (μ (A '' closedBall 0 1))) := by
    apply L0.congr' _
    filter_upwards [self_mem_nhdsWithin] with r hr
    rw [← HC.add_closedBall_zero (le_of_lt hr), add_comm]
  have L2 :
    Tendsto (fun ε => μ (closedBall 0 ε + A '' closedBall 0 1)) (𝓝[>] 0)
      (𝓝 (d * μ (closedBall 0 1))) := by
    convert L1
    exact (add_haar_image_continuousLinearMap _ _ _).symm
  have I : d * μ (closedBall 0 1) < m * μ (closedBall 0 1) :=
    (ENNReal.mul_lt_mul_right (measure_closedBall_pos μ _ zero_lt_one).ne'
          measure_closedBall_lt_top.ne).2
      hm
  have H :
    ∀ᶠ b : ℝ in 𝓝[>] 0, μ (closedBall 0 b + A '' closedBall 0 1) < m * μ (closedBall 0 1) :=
    (tendsto_order.1 L2).2 _ I
  exact (H.and self_mem_nhdsWithin).exists
state_before: case a
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
⊢ {x | (fun δ => ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s) x} ∈ 𝓝 0

tactic: have : Iio (⟨ε, εpos.le⟩ : ℝ≥0) ∈ 𝓝 (0 : ℝ≥0) := by apply Iio_mem_nhds; exact εpos
state_before: case a.intro.intro
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
⊢ {x | (fun δ => ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s) x} ∈ 𝓝 0

tactic: filter_upwards [this]
state_before: case a.intro.intro
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
⊢ {x | (fun δ => ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s) x} ∈ 𝓝 0

tactic: intro δ hδ s f hf
state_before: case h
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
⊢ ∀ (a : ℝ≥0),
    a ∈ Iio { val := ε, property := (_ : 0 ≤ ε) } →
      ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s a → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s

tactic: have J : ∀ᶠ a in 𝓝[>] (0 : ℝ≥0∞), μ (f '' s) ≤ m * (μ s + a) := by
  filter_upwards [self_mem_nhdsWithin] with a ha
  change 0 < a at ha
  obtain ⟨t, r, t_count, ts, rpos, st, μt⟩ :
    ∃ (t : Set E) (r : E → ℝ),
      t.Countable ∧
        t ⊆ s ∧
          (∀ x : E, x ∈ t → 0 < r x) ∧
            (s ⊆ ⋃ x ∈ t, closedBall x (r x)) ∧
              (∑' x : ↥t, μ (closedBall (↑x) (r ↑x))) ≤ μ s + a :=
    Besicovitch.exists_closedBall_covering_tsum_measure_le μ ha.ne' (fun _ => Ioi 0) s
      fun x _ δ δpos => ⟨δ / 2, by simp [half_pos δpos, δpos]⟩
  haveI : Encodable t := t_count.toEncodable
  calc
    μ (f '' s) ≤ μ (⋃ x : t, f '' (s ∩ closedBall x (r x))) := by
      rw [biUnion_eq_iUnion] at st
      apply measure_mono
      rw [← image_iUnion, ← inter_iUnion]
      exact image_subset _ (subset_inter (Subset.refl _) st)
    _ ≤ ∑' x : t, μ (f '' (s ∩ closedBall x (r x))) := (measure_iUnion_le _)
    _ ≤ ∑' x : t, m * μ (closedBall x (r x)) :=
      (ENNReal.tsum_le_tsum fun x => I x (r x) (ts x.2) (rpos x x.2).le)
    _ ≤ m * (μ s + a) := by rw [ENNReal.tsum_mul_left]; exact mul_le_mul_left' μt _
state_before: case h
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
⊢ ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s

tactic: have L : Tendsto (fun a => (m : ℝ≥0∞) * (μ s + a)) (𝓝[>] 0) (𝓝 (m * (μ s + 0))) := by
  apply Tendsto.mono_left _ nhdsWithin_le_nhds
  apply ENNReal.Tendsto.const_mul (tendsto_const_nhds.add tendsto_id)
  simp only [ENNReal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
state_before: case h
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
J : ∀ᶠ (a : ℝ≥0∞) in 𝓝[Ioi 0] 0, ↑↑μ (f '' s) ≤ ↑m * (↑↑μ s + a)
⊢ ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s

tactic: rw [add_zero] at L
state_before: case h
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
J : ∀ᶠ (a : ℝ≥0∞) in 𝓝[Ioi 0] 0, ↑↑μ (f '' s) ≤ ↑m * (↑↑μ s + a)
L : Tendsto (fun a => ↑m * (↑↑μ s + a)) (𝓝[Ioi 0] 0) (𝓝 (↑m * (↑↑μ s + 0)))
⊢ ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s

tactic: exact ge_of_tendsto L J
state_before: case h
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
J : ∀ᶠ (a : ℝ≥0∞) in 𝓝[Ioi 0] 0, ↑↑μ (f '' s) ≤ ↑m * (↑↑μ s + a)
L : Tendsto (fun a => ↑m * (↑↑μ s + a)) (𝓝[Ioi 0] 0) (𝓝 (↑m * ↑↑μ s))
⊢ ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s

tactic: have HC : IsCompact (A '' closedBall 0 1) :=
  (ProperSpace.isCompact_closedBall _ _).image A.continuous
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
⊢ ∃ ε, ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1) ∧ 0 < ε

tactic: have L0 :
  Tendsto (fun ε => μ (cthickening ε (A '' closedBall 0 1))) (𝓝[>] 0)
    (𝓝 (μ (A '' closedBall 0 1))) := by
  apply Tendsto.mono_left _ nhdsWithin_le_nhds
  exact tendsto_measure_cthickening_of_isCompact HC
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
⊢ ∃ ε, ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1) ∧ 0 < ε

tactic: have L1 :
  Tendsto (fun ε => μ (closedBall 0 ε + A '' closedBall 0 1)) (𝓝[>] 0)
    (𝓝 (μ (A '' closedBall 0 1))) := by
  apply L0.congr' _
  filter_upwards [self_mem_nhdsWithin] with r hr
  rw [← HC.add_closedBall_zero (le_of_lt hr), add_comm]
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
L0 : Tendsto (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
⊢ ∃ ε, ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1) ∧ 0 < ε

tactic: have L2 :
  Tendsto (fun ε => μ (closedBall 0 ε + A '' closedBall 0 1)) (𝓝[>] 0)
    (𝓝 (d * μ (closedBall 0 1))) := by
  convert L1
  exact (add_haar_image_continuousLinearMap _ _ _).symm
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
L0 : Tendsto (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
L1 : Tendsto (fun ε => ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
⊢ ∃ ε, ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1) ∧ 0 < ε

tactic: have I : d * μ (closedBall 0 1) < m * μ (closedBall 0 1) :=
  (ENNReal.mul_lt_mul_right (measure_closedBall_pos μ _ zero_lt_one).ne'
        measure_closedBall_lt_top.ne).2
    hm
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
L0 : Tendsto (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
L1 : Tendsto (fun ε => ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
L2 : Tendsto (fun ε => ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1)) (𝓝[Ioi 0] 0) (𝓝 (d * ↑↑μ (closedBall 0 1)))
⊢ ∃ ε, ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1) ∧ 0 < ε

tactic: have H :
  ∀ᶠ b : ℝ in 𝓝[>] 0, μ (closedBall 0 b + A '' closedBall 0 1) < m * μ (closedBall 0 1) :=
  (tendsto_order.1 L2).2 _ I
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
L0 : Tendsto (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
L1 : Tendsto (fun ε => ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
L2 : Tendsto (fun ε => ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1)) (𝓝[Ioi 0] 0) (𝓝 (d * ↑↑μ (closedBall 0 1)))
I : d * ↑↑μ (closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
⊢ ∃ ε, ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1) ∧ 0 < ε

tactic: exact (H.and self_mem_nhdsWithin).exists
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
L0 : Tendsto (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
L1 : Tendsto (fun ε => ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
L2 : Tendsto (fun ε => ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1)) (𝓝[Ioi 0] 0) (𝓝 (d * ↑↑μ (closedBall 0 1)))
I : d * ↑↑μ (closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
H : ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0, ↑↑μ (closedBall 0 b + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
⊢ ∃ ε, ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1) ∧ 0 < ε

tactic: apply Tendsto.mono_left _ nhdsWithin_le_nhds
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
⊢ Tendsto (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))

tactic: exact tendsto_measure_cthickening_of_isCompact HC
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
⊢ Tendsto (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) (𝓝 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))

tactic: apply L0.congr' _
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
L0 : Tendsto (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
⊢ Tendsto (fun ε => ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))

tactic: filter_upwards [self_mem_nhdsWithin] with r hr
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
L0 : Tendsto (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
⊢ (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) =ᶠ[𝓝[Ioi 0] 0] fun ε =>
    ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1)

tactic: rw [← HC.add_closedBall_zero (le_of_lt hr), add_comm]
state_before: case h
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
L0 : Tendsto (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
r : ℝ
hr : r ∈ Ioi 0
⊢ ↑↑μ (cthickening r (↑A '' closedBall 0 1)) = ↑↑μ (closedBall 0 r + ↑A '' closedBall 0 1)

tactic: convert L1
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
L0 : Tendsto (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
L1 : Tendsto (fun ε => ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
⊢ Tendsto (fun ε => ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1)) (𝓝[Ioi 0] 0) (𝓝 (d * ↑↑μ (closedBall 0 1)))

tactic: exact (add_haar_image_continuousLinearMap _ _ _).symm
state_before: case h.e'_5.h.e'_3
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
HC : IsCompact (↑A '' closedBall 0 1)
L0 : Tendsto (fun ε => ↑↑μ (cthickening ε (↑A '' closedBall 0 1))) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
L1 : Tendsto (fun ε => ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (↑A '' closedBall 0 1)))
⊢ d * ↑↑μ (closedBall 0 1) = ↑↑μ (↑A '' closedBall 0 1)

tactic: apply Iio_mem_nhds
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
⊢ Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0

tactic: exact εpos
state_before: case h
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
⊢ 0 < { val := ε, property := (_ : 0 ≤ ε) }

tactic: intro x r xs r0
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
⊢ ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)

tactic: have :
  A '' closedBall 0 r + closedBall (f x) (ε * r) =
    {f x} + r • (A '' closedBall 0 1 + closedBall 0 ε) := by
  rw [smul_add, ← add_assoc, add_comm {f x}, add_assoc, smul_closedBall _ _ εpos.le, smul_zero,
    singleton_add_closedBall_zero, ← image_smul_set ℝ E E A, smul_closedBall _ _ zero_le_one,
    smul_zero, Real.norm_eq_abs, abs_of_nonneg r0, mul_one, mul_comm]
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
K : f '' (s ∩ closedBall x r) ⊆ ↑A '' closedBall 0 r + closedBall (f x) (ε * r)
⊢ ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)

tactic: rw [this] at K
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
K : f '' (s ∩ closedBall x r) ⊆ ↑A '' closedBall 0 r + closedBall (f x) (ε * r)
this : ↑A '' closedBall 0 r + closedBall (f x) (ε * r) = {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
⊢ ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)

tactic: calc
  μ (f '' (s ∩ closedBall x r)) ≤ μ ({f x} + r • (A '' closedBall 0 1 + closedBall 0 ε)) :=
    measure_mono K
  _ = ENNReal.ofReal (r ^ finrank ℝ E) * μ (A '' closedBall 0 1 + closedBall 0 ε) := by
    simp only [abs_of_nonneg r0, add_haar_smul, image_add_left, abs_pow, singleton_add,
      measure_preimage_add]
  _ ≤ ENNReal.ofReal (r ^ finrank ℝ E) * (m * μ (closedBall 0 1)) := by
    rw [add_comm]; exact mul_le_mul_left' hε.le _
  _ = m * μ (closedBall x r) := by simp only [add_haar_closedBall' μ _ r0]; ring
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
K : f '' (s ∩ closedBall x r) ⊆ {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
this : ↑A '' closedBall 0 r + closedBall (f x) (ε * r) = {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
⊢ ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)

tactic: rintro y ⟨z, ⟨zs, zr⟩, rfl⟩
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
⊢ f '' (s ∩ closedBall x r) ⊆ ↑A '' closedBall 0 r + closedBall (f x) (ε * r)

tactic: apply Set.mem_add.2 ⟨A (z - x), f z - f x - A (z - x) + f x, _, _, _⟩
state_before: case intro.intro.intro
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
z : E
zs : z ∈ s
zr : z ∈ closedBall x r
⊢ f z ∈ ↑A '' closedBall 0 r + closedBall (f x) (ε * r)

tactic: apply mem_image_of_mem
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
z : E
zs : z ∈ s
zr : z ∈ closedBall x r
⊢ ↑A (z - x) ∈ ↑A '' closedBall 0 r

tactic: simpa only [dist_eq_norm, mem_closedBall, mem_closedBall_zero_iff, sub_zero] using zr
state_before: case h
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
z : E
zs : z ∈ s
zr : z ∈ closedBall x r
⊢ z - x ∈ closedBall 0 r

tactic: rw [mem_closedBall_iff_norm, add_sub_cancel]
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
z : E
zs : z ∈ s
zr : z ∈ closedBall x r
⊢ f z - f x - ↑A (z - x) + f x ∈ closedBall (f x) (ε * r)

tactic: calc
  ‖f z - f x - A (z - x)‖ ≤ δ * ‖z - x‖ := hf _ zs _ xs
  _ ≤ ε * r :=
    mul_le_mul (le_of_lt hδ) (mem_closedBall_iff_norm.1 zr) (norm_nonneg _) εpos.le
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
z : E
zs : z ∈ s
zr : z ∈ closedBall x r
⊢ ‖f z - f x - ↑A (z - x)‖ ≤ ε * r

tactic: simp only [map_sub, Pi.sub_apply]
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
z : E
zs : z ∈ s
zr : z ∈ closedBall x r
⊢ ↑A (z - x) + (f z - f x - ↑A (z - x) + f x) = f z

tactic: abel
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
z : E
zs : z ∈ s
zr : z ∈ closedBall x r
⊢ ↑A z - ↑A x + (f z - f x - (↑A z - ↑A x) + f x) = f z

tactic: rw [smul_add, ← add_assoc, add_comm {f x}, add_assoc, smul_closedBall _ _ εpos.le, smul_zero,
  singleton_add_closedBall_zero, ← image_smul_set ℝ E E A, smul_closedBall _ _ zero_le_one,
  smul_zero, Real.norm_eq_abs, abs_of_nonneg r0, mul_one, mul_comm]
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
K : f '' (s ∩ closedBall x r) ⊆ ↑A '' closedBall 0 r + closedBall (f x) (ε * r)
⊢ ↑A '' closedBall 0 r + closedBall (f x) (ε * r) = {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)

tactic: simp only [abs_of_nonneg r0, add_haar_smul, image_add_left, abs_pow, singleton_add,
  measure_preimage_add]
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
K : f '' (s ∩ closedBall x r) ⊆ {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
this : ↑A '' closedBall 0 r + closedBall (f x) (ε * r) = {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
⊢ ↑↑μ ({f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)) =
    ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (↑A '' closedBall 0 1 + closedBall 0 ε)

tactic: rw [add_comm]
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
K : f '' (s ∩ closedBall x r) ⊆ {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
this : ↑A '' closedBall 0 r + closedBall (f x) (ε * r) = {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
⊢ ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (↑A '' closedBall 0 1 + closedBall 0 ε) ≤
    ENNReal.ofReal (r ^ finrank ℝ E) * (↑m * ↑↑μ (closedBall 0 1))

tactic: exact mul_le_mul_left' hε.le _
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
K : f '' (s ∩ closedBall x r) ⊆ {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
this : ↑A '' closedBall 0 r + closedBall (f x) (ε * r) = {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
⊢ ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) ≤
    ENNReal.ofReal (r ^ finrank ℝ E) * (↑m * ↑↑μ (closedBall 0 1))

tactic: simp only [add_haar_closedBall' μ _ r0]
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
K : f '' (s ∩ closedBall x r) ⊆ {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
this : ↑A '' closedBall 0 r + closedBall (f x) (ε * r) = {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
⊢ ENNReal.ofReal (r ^ finrank ℝ E) * (↑m * ↑↑μ (closedBall 0 1)) = ↑m * ↑↑μ (closedBall x r)

tactic: ring
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
x : E
r : ℝ
xs : x ∈ s
r0 : 0 ≤ r
K : f '' (s ∩ closedBall x r) ⊆ {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
this : ↑A '' closedBall 0 r + closedBall (f x) (ε * r) = {f x} + r • (↑A '' closedBall 0 1 + closedBall 0 ε)
⊢ ENNReal.ofReal (r ^ finrank ℝ E) * (↑m * ↑↑μ (closedBall 0 1)) =
    ↑m * (ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 1))

tactic: filter_upwards [self_mem_nhdsWithin] with a ha
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
⊢ ∀ᶠ (a : ℝ≥0∞) in 𝓝[Ioi 0] 0, ↑↑μ (f '' s) ≤ ↑m * (↑↑μ s + a)

tactic: change 0 < a at ha
state_before: case h
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
a : ℝ≥0∞
ha : a ∈ Ioi 0
⊢ ↑↑μ (f '' s) ≤ ↑m * (↑↑μ s + a)

tactic: obtain ⟨t, r, t_count, ts, rpos, st, μt⟩ :
  ∃ (t : Set E) (r : E → ℝ),
    t.Countable ∧
      t ⊆ s ∧
        (∀ x : E, x ∈ t → 0 < r x) ∧
          (s ⊆ ⋃ x ∈ t, closedBall x (r x)) ∧
            (∑' x : ↥t, μ (closedBall (↑x) (r ↑x))) ≤ μ s + a :=
  Besicovitch.exists_closedBall_covering_tsum_measure_le μ ha.ne' (fun _ => Ioi 0) s
    fun x _ δ δpos => ⟨δ / 2, by simp [half_pos δpos, δpos]⟩
state_before: case h
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
a : ℝ≥0∞
ha : 0 < a
⊢ ↑↑μ (f '' s) ≤ ↑m * (↑↑μ s + a)

tactic: haveI : Encodable t := t_count.toEncodable
state_before: case h.intro.intro.intro.intro.intro.intro
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
a : ℝ≥0∞
ha : 0 < a
t : Set E
r : E → ℝ
t_count : Set.Countable t
ts : t ⊆ s
rpos : ∀ (x : E), x ∈ t → 0 < r x
st : s ⊆ ⋃ (x : E) (_ : x ∈ t), closedBall x (r x)
μt : (∑' (x : ↑t), ↑↑μ (closedBall (↑x) (r ↑x))) ≤ ↑↑μ s + a
⊢ ↑↑μ (f '' s) ≤ ↑m * (↑↑μ s + a)

tactic: calc
  μ (f '' s) ≤ μ (⋃ x : t, f '' (s ∩ closedBall x (r x))) := by
    rw [biUnion_eq_iUnion] at st
    apply measure_mono
    rw [← image_iUnion, ← inter_iUnion]
    exact image_subset _ (subset_inter (Subset.refl _) st)
  _ ≤ ∑' x : t, μ (f '' (s ∩ closedBall x (r x))) := (measure_iUnion_le _)
  _ ≤ ∑' x : t, m * μ (closedBall x (r x)) :=
    (ENNReal.tsum_le_tsum fun x => I x (r x) (ts x.2) (rpos x x.2).le)
  _ ≤ m * (μ s + a) := by rw [ENNReal.tsum_mul_left]; exact mul_le_mul_left' μt _
state_before: case h.intro.intro.intro.intro.intro.intro
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
a : ℝ≥0∞
ha : 0 < a
t : Set E
r : E → ℝ
t_count : Set.Countable t
ts : t ⊆ s
rpos : ∀ (x : E), x ∈ t → 0 < r x
st : s ⊆ ⋃ (x : E) (_ : x ∈ t), closedBall x (r x)
μt : (∑' (x : ↑t), ↑↑μ (closedBall (↑x) (r ↑x))) ≤ ↑↑μ s + a
this : Encodable ↑t
⊢ ↑↑μ (f '' s) ≤ ↑m * (↑↑μ s + a)

tactic: simp [half_pos δpos, δpos]
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ✝ : ℝ≥0
hδ : δ✝ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ✝
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
a : ℝ≥0∞
ha : 0 < a
x : E
x✝ : x ∈ s
δ : ℝ
δpos : δ > 0
⊢ δ / 2 ∈ (fun x => Ioi 0) x ∩ Ioo 0 δ

tactic: rw [biUnion_eq_iUnion] at st
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
a : ℝ≥0∞
ha : 0 < a
t : Set E
r : E → ℝ
t_count : Set.Countable t
ts : t ⊆ s
rpos : ∀ (x : E), x ∈ t → 0 < r x
st : s ⊆ ⋃ (x : E) (_ : x ∈ t), closedBall x (r x)
μt : (∑' (x : ↑t), ↑↑μ (closedBall (↑x) (r ↑x))) ≤ ↑↑μ s + a
this : Encodable ↑t
⊢ ↑↑μ (f '' s) ≤ ↑↑μ (⋃ (x : ↑t), f '' (s ∩ closedBall (↑x) (r ↑x)))

tactic: apply measure_mono
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
a : ℝ≥0∞
ha : 0 < a
t : Set E
r : E → ℝ
t_count : Set.Countable t
ts : t ⊆ s
rpos : ∀ (x : E), x ∈ t → 0 < r x
st : s ⊆ ⋃ (x : ↑t), closedBall (↑x) (r ↑x)
μt : (∑' (x : ↑t), ↑↑μ (closedBall (↑x) (r ↑x))) ≤ ↑↑μ s + a
this : Encodable ↑t
⊢ ↑↑μ (f '' s) ≤ ↑↑μ (⋃ (x : ↑t), f '' (s ∩ closedBall (↑x) (r ↑x)))

tactic: rw [← image_iUnion, ← inter_iUnion]
state_before: case h
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
a : ℝ≥0∞
ha : 0 < a
t : Set E
r : E → ℝ
t_count : Set.Countable t
ts : t ⊆ s
rpos : ∀ (x : E), x ∈ t → 0 < r x
st : s ⊆ ⋃ (x : ↑t), closedBall (↑x) (r ↑x)
μt : (∑' (x : ↑t), ↑↑μ (closedBall (↑x) (r ↑x))) ≤ ↑↑μ s + a
this : Encodable ↑t
⊢ f '' s ⊆ ⋃ (x : ↑t), f '' (s ∩ closedBall (↑x) (r ↑x))

tactic: exact image_subset _ (subset_inter (Subset.refl _) st)
state_before: case h
E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
a : ℝ≥0∞
ha : 0 < a
t : Set E
r : E → ℝ
t_count : Set.Countable t
ts : t ⊆ s
rpos : ∀ (x : E), x ∈ t → 0 < r x
st : s ⊆ ⋃ (x : ↑t), closedBall (↑x) (r ↑x)
μt : (∑' (x : ↑t), ↑↑μ (closedBall (↑x) (r ↑x))) ≤ ↑↑μ s + a
this : Encodable ↑t
⊢ f '' s ⊆ f '' (s ∩ ⋃ (i : ↑t), closedBall (↑i) (r ↑i))

tactic: rw [ENNReal.tsum_mul_left]
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
a : ℝ≥0∞
ha : 0 < a
t : Set E
r : E → ℝ
t_count : Set.Countable t
ts : t ⊆ s
rpos : ∀ (x : E), x ∈ t → 0 < r x
st : s ⊆ ⋃ (x : E) (_ : x ∈ t), closedBall x (r x)
μt : (∑' (x : ↑t), ↑↑μ (closedBall (↑x) (r ↑x))) ≤ ↑↑μ s + a
this : Encodable ↑t
⊢ (∑' (x : ↑t), ↑m * ↑↑μ (closedBall (↑x) (r ↑x))) ≤ ↑m * (↑↑μ s + a)

tactic: exact mul_le_mul_left' μt _
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this✝ : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
a : ℝ≥0∞
ha : 0 < a
t : Set E
r : E → ℝ
t_count : Set.Countable t
ts : t ⊆ s
rpos : ∀ (x : E), x ∈ t → 0 < r x
st : s ⊆ ⋃ (x : E) (_ : x ∈ t), closedBall x (r x)
μt : (∑' (x : ↑t), ↑↑μ (closedBall (↑x) (r ↑x))) ≤ ↑↑μ s + a
this : Encodable ↑t
⊢ (↑m * ∑' (i : ↑t), ↑↑μ (closedBall (↑i) (r ↑i))) ≤ ↑m * (↑↑μ s + a)

tactic: apply Tendsto.mono_left _ nhdsWithin_le_nhds
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
J : ∀ᶠ (a : ℝ≥0∞) in 𝓝[Ioi 0] 0, ↑↑μ (f '' s) ≤ ↑m * (↑↑μ s + a)
⊢ Tendsto (fun a => ↑m * (↑↑μ s + a)) (𝓝[Ioi 0] 0) (𝓝 (↑m * (↑↑μ s + 0)))

tactic: apply ENNReal.Tendsto.const_mul (tendsto_const_nhds.add tendsto_id)
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
J : ∀ᶠ (a : ℝ≥0∞) in 𝓝[Ioi 0] 0, ↑↑μ (f '' s) ≤ ↑m * (↑↑μ s + a)
⊢ Tendsto (fun a => ↑m * (↑↑μ s + a)) (𝓝 0) (𝓝 (↑m * (↑↑μ s + 0)))

tactic: simp only [ENNReal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
state_before: E : Type u_1
F : Type ?u.309008
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
A : E →L[ℝ] E
m : ℝ≥0
hm : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
d : ℝ≥0∞ := ENNReal.ofReal (abs (ContinuousLinearMap.det A))
ε : ℝ
hε : ↑↑μ (closedBall 0 ε + ↑A '' closedBall 0 1) < ↑m * ↑↑μ (closedBall 0 1)
εpos : 0 < ε
this : Iio { val := ε, property := (_ : 0 ≤ ε) } ∈ 𝓝 0
δ : ℝ≥0
hδ : δ ∈ Iio { val := ε, property := (_ : 0 ≤ ε) }
s : Set E
f : E → E
hf : ApproximatesLinearOn f A s δ
I : ∀ (x : E) (r : ℝ), x ∈ s → 0 ≤ r → ↑↑μ (f '' (s ∩ closedBall x r)) ≤ ↑m * ↑↑μ (closedBall x r)
J : ∀ᶠ (a : ℝ≥0∞) in 𝓝[Ioi 0] 0, ↑↑μ (f '' s) ≤ ↑m * (↑↑μ s + a)
⊢ ↑↑μ s + 0 ≠ 0 ∨ ↑m ≠ ⊤