[GOAL]
⊢ Set.Nonempty (interior { carrier := Icc 0 1, isCompact' := (_ : IsCompact (Icc 0 1)) }.carrier)
[PROOFSTEP]
simp_rw [interior_Icc, nonempty_Ioo, zero_lt_one]
[GOAL]
ι : Type u_1
inst✝ : Fintype ι
⊢ Set.Nonempty
    (interior
      { carrier := Set.pi univ fun x => Icc 0 1, isCompact' := (_ : IsCompact (Set.pi univ fun x => Icc 0 1)) }.carrier)
[PROOFSTEP]
simp only [interior_pi_set, Set.toFinite, interior_Icc, univ_pi_nonempty_iff, nonempty_Ioo, imp_true_iff, zero_lt_one]
[GOAL]
ι : Type u_1
inst✝ : Fintype ι
⊢ ↑(parallelepiped (Pi.basisFun ℝ ι)) = ↑(PositiveCompacts.piIcc01 ι)
[PROOFSTEP]
refine' Eq.trans _ ((uIcc_of_le _).trans (Set.pi_univ_Icc _ _).symm)
[GOAL]
case refine'_1
ι : Type u_1
inst✝ : Fintype ι
⊢ ↑(parallelepiped (Pi.basisFun ℝ ι)) = uIcc (fun i => 0) fun i => 1
[PROOFSTEP]
classical convert parallelepiped_single (ι := ι) 1
[GOAL]
case refine'_1
ι : Type u_1
inst✝ : Fintype ι
⊢ ↑(parallelepiped (Pi.basisFun ℝ ι)) = uIcc (fun i => 0) fun i => 1
[PROOFSTEP]
convert parallelepiped_single (ι := ι) 1
[GOAL]
case refine'_2
ι : Type u_1
inst✝ : Fintype ι
⊢ (fun i => 0) ≤ fun i => 1
[PROOFSTEP]
exact zero_le_one
[GOAL]
⊢ addHaarMeasure Icc01 = volume
[PROOFSTEP]
convert (addHaarMeasure_unique volume Icc01).symm
[GOAL]
case h.e'_2
⊢ addHaarMeasure Icc01 = ↑↑volume ↑Icc01 • addHaarMeasure Icc01
[PROOFSTEP]
simp [Icc01]
[GOAL]
ι : Type u_1
inst✝ : Fintype ι
⊢ addHaarMeasure (piIcc01 ι) = volume
[PROOFSTEP]
convert (addHaarMeasure_unique volume (piIcc01 ι)).symm
[GOAL]
case h.e'_2
ι : Type u_1
inst✝ : Fintype ι
⊢ addHaarMeasure (piIcc01 ι) = ↑↑volume ↑(piIcc01 ι) • addHaarMeasure (piIcc01 ι)
[PROOFSTEP]
simp only [piIcc01, volume_pi_pi fun _ => Icc (0 : ℝ) 1, PositiveCompacts.coe_mk, Compacts.coe_mk,
  Finset.prod_const_one, ENNReal.ofReal_one, Real.volume_Icc, one_smul, sub_zero]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
sb : Metric.Bounded s
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
⊢ ↑↑μ s = 0
[PROOFSTEP]
by_contra h
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
sb : Metric.Bounded s
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
h : ¬↑↑μ s = 0
⊢ False
[PROOFSTEP]
apply lt_irrefl ∞
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
sb : Metric.Bounded s
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
h : ¬↑↑μ s = 0
⊢ ⊤ < ⊤
[PROOFSTEP]
calc
  ∞ = ∑' _ : ℕ, μ s := (ENNReal.tsum_const_eq_top_of_ne_zero h).symm
  _ = ∑' n : ℕ, μ ({u n} + s) := by congr 1; ext1 n; simp only [image_add_left, measure_preimage_add, singleton_add]
  _ = μ (⋃ n, {u n} + s) :=
    (Eq.symm <|
      measure_iUnion hs fun n => by simpa only [image_add_left, singleton_add] using measurable_id.const_add _ h's)
  _ = μ (range u + s) := by rw [← iUnion_add, iUnion_singleton_eq_range]
  _ < ∞ := Bounded.measure_lt_top (hu.add sb)
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
sb : Metric.Bounded s
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
h : ¬↑↑μ s = 0
⊢ ∑' (x : ℕ), ↑↑μ s = ∑' (n : ℕ), ↑↑μ ({u n} + s)
[PROOFSTEP]
congr 1
[GOAL]
case e_f
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
sb : Metric.Bounded s
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
h : ¬↑↑μ s = 0
⊢ (fun x => ↑↑μ s) = fun n => ↑↑μ ({u n} + s)
[PROOFSTEP]
ext1 n
[GOAL]
case e_f.h
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
sb : Metric.Bounded s
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
h : ¬↑↑μ s = 0
n : ℕ
⊢ ↑↑μ s = ↑↑μ ({u n} + s)
[PROOFSTEP]
simp only [image_add_left, measure_preimage_add, singleton_add]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
sb : Metric.Bounded s
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
h : ¬↑↑μ s = 0
n : ℕ
⊢ MeasurableSet ({u n} + s)
[PROOFSTEP]
simpa only [image_add_left, singleton_add] using measurable_id.const_add _ h's
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
sb : Metric.Bounded s
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
h : ¬↑↑μ s = 0
⊢ ↑↑μ (⋃ (n : ℕ), {u n} + s) = ↑↑μ (range u + s)
[PROOFSTEP]
rw [← iUnion_add, iUnion_singleton_eq_range]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
⊢ ↑↑μ s = 0
[PROOFSTEP]
suffices H : ∀ R, μ (s ∩ closedBall 0 R) = 0
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
H : ∀ (R : ℝ), ↑↑μ (s ∩ closedBall 0 R) = 0
⊢ ↑↑μ s = 0
[PROOFSTEP]
apply le_antisymm _ (zero_le _)
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
H : ∀ (R : ℝ), ↑↑μ (s ∩ closedBall 0 R) = 0
⊢ ↑↑μ s ≤ 0
[PROOFSTEP]
calc
  μ s ≤ ∑' n : ℕ, μ (s ∩ closedBall 0 n) :=
    by
    conv_lhs => rw [← iUnion_inter_closedBall_nat s 0]
    exact measure_iUnion_le _
  _ = 0 := by simp only [H, tsum_zero]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
H : ∀ (R : ℝ), ↑↑μ (s ∩ closedBall 0 R) = 0
⊢ ↑↑μ s ≤ ∑' (n : ℕ), ↑↑μ (s ∩ closedBall 0 ↑n)
[PROOFSTEP]
conv_lhs => rw [← iUnion_inter_closedBall_nat s 0]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
H : ∀ (R : ℝ), ↑↑μ (s ∩ closedBall 0 R) = 0
| ↑↑μ s
[PROOFSTEP]
rw [← iUnion_inter_closedBall_nat s 0]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
H : ∀ (R : ℝ), ↑↑μ (s ∩ closedBall 0 R) = 0
| ↑↑μ s
[PROOFSTEP]
rw [← iUnion_inter_closedBall_nat s 0]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
H : ∀ (R : ℝ), ↑↑μ (s ∩ closedBall 0 R) = 0
| ↑↑μ s
[PROOFSTEP]
rw [← iUnion_inter_closedBall_nat s 0]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
H : ∀ (R : ℝ), ↑↑μ (s ∩ closedBall 0 R) = 0
⊢ ↑↑μ (⋃ (n : ℕ), s ∩ closedBall 0 ↑n) ≤ ∑' (n : ℕ), ↑↑μ (s ∩ closedBall 0 ↑n)
[PROOFSTEP]
exact measure_iUnion_le _
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
H : ∀ (R : ℝ), ↑↑μ (s ∩ closedBall 0 R) = 0
⊢ ∑' (n : ℕ), ↑↑μ (s ∩ closedBall 0 ↑n) = 0
[PROOFSTEP]
simp only [H, tsum_zero]
[GOAL]
case H
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
⊢ ∀ (R : ℝ), ↑↑μ (s ∩ closedBall 0 R) = 0
[PROOFSTEP]
intro R
[GOAL]
case H
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
R : ℝ
⊢ ↑↑μ (s ∩ closedBall 0 R) = 0
[PROOFSTEP]
apply
  addHaar_eq_zero_of_disjoint_translates_aux μ u (bounded_closedBall.mono (inter_subset_right _ _)) hu _
    (h's.inter measurableSet_closedBall)
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
R : ℝ
⊢ Pairwise (Disjoint on fun n => {u n} + s ∩ closedBall 0 R)
[PROOFSTEP]
refine pairwise_disjoint_mono hs fun n => ?_
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Set E
u : ℕ → E
hu : Metric.Bounded (range u)
hs : Pairwise (Disjoint on fun n => {u n} + s)
h's : MeasurableSet s
R : ℝ
n : ℕ
⊢ {u n} + s ∩ closedBall 0 R ≤ {u n} + s
[PROOFSTEP]
exact add_subset_add Subset.rfl (inter_subset_left _ _)
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
⊢ ↑↑μ ↑s = 0
[PROOFSTEP]
obtain ⟨x, hx⟩ : ∃ x, x ∉ s := by simpa only [Submodule.eq_top_iff', not_exists, Ne.def, not_forall] using hs
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
⊢ ∃ x, ¬x ∈ s
[PROOFSTEP]
simpa only [Submodule.eq_top_iff', not_exists, Ne.def, not_forall] using hs
[GOAL]
case intro
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
⊢ ↑↑μ ↑s = 0
[PROOFSTEP]
obtain ⟨c, cpos, cone⟩ : ∃ c : ℝ, 0 < c ∧ c < 1 := ⟨1 / 2, by norm_num, by norm_num⟩
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
⊢ 0 < 1 / 2
[PROOFSTEP]
norm_num
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
⊢ 1 / 2 < 1
[PROOFSTEP]
norm_num
[GOAL]
case intro.intro.intro
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
⊢ ↑↑μ ↑s = 0
[PROOFSTEP]
have A : Bounded (range fun n : ℕ => c ^ n • x) :=
  haveI : Tendsto (fun n : ℕ => c ^ n • x) atTop (𝓝 ((0 : ℝ) • x)) :=
    (tendsto_pow_atTop_nhds_0_of_lt_1 cpos.le cone).smul_const x
  bounded_range_of_tendsto _ this
[GOAL]
case intro.intro.intro
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
⊢ ↑↑μ ↑s = 0
[PROOFSTEP]
apply addHaar_eq_zero_of_disjoint_translates μ _ A _ (Submodule.closed_of_finiteDimensional s).measurableSet
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
⊢ Pairwise (Disjoint on fun n => {c ^ n • x} + ↑s)
[PROOFSTEP]
intro m n hmn
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
⊢ (Disjoint on fun n => {c ^ n • x} + ↑s) m n
[PROOFSTEP]
simp only [Function.onFun, image_add_left, singleton_add, disjoint_left, mem_preimage, SetLike.mem_coe]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
⊢ ∀ ⦃a : E⦄, -(c ^ m • x) + a ∈ s → ¬-(c ^ n • x) + a ∈ s
[PROOFSTEP]
intro y hym hyn
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
⊢ False
[PROOFSTEP]
have A : (c ^ n - c ^ m) • x ∈ s := by
  convert s.sub_mem hym hyn using 1
  simp only [sub_smul, neg_sub_neg, add_sub_add_right_eq_sub]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
⊢ (c ^ n - c ^ m) • x ∈ s
[PROOFSTEP]
convert s.sub_mem hym hyn using 1
[GOAL]
case h.e'_4
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
⊢ (c ^ n - c ^ m) • x = -(c ^ m • x) + y - (-(c ^ n • x) + y)
[PROOFSTEP]
simp only [sub_smul, neg_sub_neg, add_sub_add_right_eq_sub]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A✝ : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
A : (c ^ n - c ^ m) • x ∈ s
⊢ False
[PROOFSTEP]
have H : c ^ n - c ^ m ≠ 0 := by simpa only [sub_eq_zero, Ne.def] using (strictAnti_pow cpos cone).injective.ne hmn.symm
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A✝ : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
A : (c ^ n - c ^ m) • x ∈ s
⊢ c ^ n - c ^ m ≠ 0
[PROOFSTEP]
simpa only [sub_eq_zero, Ne.def] using (strictAnti_pow cpos cone).injective.ne hmn.symm
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A✝ : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
A : (c ^ n - c ^ m) • x ∈ s
H : c ^ n - c ^ m ≠ 0
⊢ False
[PROOFSTEP]
have : x ∈ s := by
  convert s.smul_mem (c ^ n - c ^ m)⁻¹ A
  rw [smul_smul, inv_mul_cancel H, one_smul]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A✝ : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
A : (c ^ n - c ^ m) • x ∈ s
H : c ^ n - c ^ m ≠ 0
⊢ x ∈ s
[PROOFSTEP]
convert s.smul_mem (c ^ n - c ^ m)⁻¹ A
[GOAL]
case h.e'_4
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A✝ : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
A : (c ^ n - c ^ m) • x ∈ s
H : c ^ n - c ^ m ≠ 0
⊢ x = (c ^ n - c ^ m)⁻¹ • (c ^ n - c ^ m) • x
[PROOFSTEP]
rw [smul_smul, inv_mul_cancel H, one_smul]
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : Submodule ℝ E
hs : s ≠ ⊤
x : E
hx : ¬x ∈ s
c : ℝ
cpos : 0 < c
cone : c < 1
A✝ : Metric.Bounded (range fun n => c ^ n • x)
m n : ℕ
hmn : m ≠ n
y : E
hym : -(c ^ m • x) + y ∈ s
hyn : -(c ^ n • x) + y ∈ s
A : (c ^ n - c ^ m) • x ∈ s
H : c ^ n - c ^ m ≠ 0
this : x ∈ s
⊢ False
[PROOFSTEP]
exact hx this
[GOAL]
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : AffineSubspace ℝ E
hs : s ≠ ⊤
⊢ ↑↑μ ↑s = 0
[PROOFSTEP]
rcases s.eq_bot_or_nonempty with (rfl | hne)
[GOAL]
case inl
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : ⊥ ≠ ⊤
⊢ ↑↑μ ↑⊥ = 0
[PROOFSTEP]
rw [AffineSubspace.bot_coe, measure_empty]
[GOAL]
case inr
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : AffineSubspace ℝ E
hs : s ≠ ⊤
hne : Set.Nonempty ↑s
⊢ ↑↑μ ↑s = 0
[PROOFSTEP]
rw [Ne.def, ← AffineSubspace.direction_eq_top_iff_of_nonempty hne] at hs
[GOAL]
case inr
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : AffineSubspace ℝ E
hs : ¬AffineSubspace.direction s = ⊤
hne : Set.Nonempty ↑s
⊢ ↑↑μ ↑s = 0
[PROOFSTEP]
rcases hne with ⟨x, hx : x ∈ s⟩
[GOAL]
case inr.intro
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
s : AffineSubspace ℝ E
hs : ¬AffineSubspace.direction s = ⊤
x : E
hx : x ∈ s
⊢ ↑↑μ ↑s = 0
[PROOFSTEP]
simpa only [AffineSubspace.coe_direction_eq_vsub_set_right hx, vsub_eq_sub, sub_eq_add_neg, image_add_right, neg_neg,
  measure_preimage_add_right] using addHaar_submodule μ s.direction hs
[GOAL]
ι : Type u_1
inst✝¹ : Finite ι
f : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det f ≠ 0
μ : Measure (ι → ℝ)
inst✝ : IsAddHaarMeasure μ
⊢ map (↑f) μ = ENNReal.ofReal |(↑LinearMap.det f)⁻¹| • μ
[PROOFSTEP]
cases nonempty_fintype ι
[GOAL]
case intro
ι : Type u_1
inst✝¹ : Finite ι
f : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det f ≠ 0
μ : Measure (ι → ℝ)
inst✝ : IsAddHaarMeasure μ
val✝ : Fintype ι
⊢ map (↑f) μ = ENNReal.ofReal |(↑LinearMap.det f)⁻¹| • μ
[PROOFSTEP]
have := addHaarMeasure_unique μ (piIcc01 ι)
[GOAL]
case intro
ι : Type u_1
inst✝¹ : Finite ι
f : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det f ≠ 0
μ : Measure (ι → ℝ)
inst✝ : IsAddHaarMeasure μ
val✝ : Fintype ι
this : μ = ↑↑μ ↑(piIcc01 ι) • addHaarMeasure (piIcc01 ι)
⊢ map (↑f) μ = ENNReal.ofReal |(↑LinearMap.det f)⁻¹| • μ
[PROOFSTEP]
rw [this, addHaarMeasure_eq_volume_pi, Measure.map_smul, Real.map_linearMap_volume_pi_eq_smul_volume_pi hf, smul_comm]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
⊢ map (↑f) μ = ENNReal.ofReal |(↑LinearMap.det f)⁻¹| • μ
[PROOFSTEP]
let ι := Fin (finrank ℝ E)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
ι : Type := Fin (finrank ℝ E)
⊢ map (↑f) μ = ENNReal.ofReal |(↑LinearMap.det f)⁻¹| • μ
[PROOFSTEP]
haveI : FiniteDimensional ℝ (ι → ℝ) := by infer_instance
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
ι : Type := Fin (finrank ℝ E)
⊢ FiniteDimensional ℝ (ι → ℝ)
[PROOFSTEP]
infer_instance
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
ι : Type := Fin (finrank ℝ E)
this : FiniteDimensional ℝ (ι → ℝ)
⊢ map (↑f) μ = ENNReal.ofReal |(↑LinearMap.det f)⁻¹| • μ
[PROOFSTEP]
have : finrank ℝ E = finrank ℝ (ι → ℝ) := by simp
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
ι : Type := Fin (finrank ℝ E)
this : FiniteDimensional ℝ (ι → ℝ)
⊢ finrank ℝ E = finrank ℝ (ι → ℝ)
[PROOFSTEP]
simp
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
⊢ map (↑f) μ = ENNReal.ofReal |(↑LinearMap.det f)⁻¹| • μ
[PROOFSTEP]
have e : E ≃ₗ[ℝ] ι → ℝ := LinearEquiv.ofFinrankEq E (ι → ℝ) this
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
⊢ map (↑f) μ = ENNReal.ofReal |(↑LinearMap.det f)⁻¹| • μ
[PROOFSTEP]
obtain ⟨g, hg⟩ : ∃ g, g = (e : E →ₗ[ℝ] ι → ℝ).comp (f.comp (e.symm : (ι → ℝ) →ₗ[ℝ] E)) := ⟨_, rfl⟩
[GOAL]
case intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
⊢ map (↑f) μ = ENNReal.ofReal |(↑LinearMap.det f)⁻¹| • μ
[PROOFSTEP]
have gdet : LinearMap.det g = LinearMap.det f := by rw [hg]; exact LinearMap.det_conj f e
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
⊢ ↑LinearMap.det g = ↑LinearMap.det f
[PROOFSTEP]
rw [hg]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
⊢ ↑LinearMap.det (LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))) = ↑LinearMap.det f
[PROOFSTEP]
exact LinearMap.det_conj f e
[GOAL]
case intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
⊢ map (↑f) μ = ENNReal.ofReal |(↑LinearMap.det f)⁻¹| • μ
[PROOFSTEP]
rw [← gdet] at hf ⊢
[GOAL]
case intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
⊢ map (↑f) μ = ENNReal.ofReal |(↑LinearMap.det g)⁻¹| • μ
[PROOFSTEP]
have fg : f = (e.symm : (ι → ℝ) →ₗ[ℝ] E).comp (g.comp (e : E →ₗ[ℝ] ι → ℝ)) :=
  by
  ext x
  simp only [LinearEquiv.coe_coe, Function.comp_apply, LinearMap.coe_comp, LinearEquiv.symm_apply_apply, hg]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
⊢ f = LinearMap.comp (↑(LinearEquiv.symm e)) (LinearMap.comp g ↑e)
[PROOFSTEP]
ext x
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
x : E
⊢ ↑f x = ↑(LinearMap.comp (↑(LinearEquiv.symm e)) (LinearMap.comp g ↑e)) x
[PROOFSTEP]
simp only [LinearEquiv.coe_coe, Function.comp_apply, LinearMap.coe_comp, LinearEquiv.symm_apply_apply, hg]
[GOAL]
case intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
fg : f = LinearMap.comp (↑(LinearEquiv.symm e)) (LinearMap.comp g ↑e)
⊢ map (↑f) μ = ENNReal.ofReal |(↑LinearMap.det g)⁻¹| • μ
[PROOFSTEP]
simp only [fg, LinearEquiv.coe_coe, LinearMap.coe_comp]
[GOAL]
case intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
fg : f = LinearMap.comp (↑(LinearEquiv.symm e)) (LinearMap.comp g ↑e)
⊢ map (↑(LinearEquiv.symm e) ∘ ↑g ∘ ↑e) μ = ENNReal.ofReal |(↑LinearMap.det g)⁻¹| • μ
[PROOFSTEP]
have Ce : Continuous e := (e : E →ₗ[ℝ] ι → ℝ).continuous_of_finiteDimensional
[GOAL]
case intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
fg : f = LinearMap.comp (↑(LinearEquiv.symm e)) (LinearMap.comp g ↑e)
Ce : Continuous ↑e
⊢ map (↑(LinearEquiv.symm e) ∘ ↑g ∘ ↑e) μ = ENNReal.ofReal |(↑LinearMap.det g)⁻¹| • μ
[PROOFSTEP]
have Cg : Continuous g := LinearMap.continuous_of_finiteDimensional g
[GOAL]
case intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
fg : f = LinearMap.comp (↑(LinearEquiv.symm e)) (LinearMap.comp g ↑e)
Ce : Continuous ↑e
Cg : Continuous ↑g
⊢ map (↑(LinearEquiv.symm e) ∘ ↑g ∘ ↑e) μ = ENNReal.ofReal |(↑LinearMap.det g)⁻¹| • μ
[PROOFSTEP]
have Cesymm : Continuous e.symm := (e.symm : (ι → ℝ) →ₗ[ℝ] E).continuous_of_finiteDimensional
[GOAL]
case intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
fg : f = LinearMap.comp (↑(LinearEquiv.symm e)) (LinearMap.comp g ↑e)
Ce : Continuous ↑e
Cg : Continuous ↑g
Cesymm : Continuous ↑(LinearEquiv.symm e)
⊢ map (↑(LinearEquiv.symm e) ∘ ↑g ∘ ↑e) μ = ENNReal.ofReal |(↑LinearMap.det g)⁻¹| • μ
[PROOFSTEP]
rw [← map_map Cesymm.measurable (Cg.comp Ce).measurable, ← map_map Cg.measurable Ce.measurable]
[GOAL]
case intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝ : FiniteDimensional ℝ (ι → ℝ)
this : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
fg : f = LinearMap.comp (↑(LinearEquiv.symm e)) (LinearMap.comp g ↑e)
Ce : Continuous ↑e
Cg : Continuous ↑g
Cesymm : Continuous ↑(LinearEquiv.symm e)
⊢ map (↑(LinearEquiv.symm e)) (map (↑g) (map (↑e) μ)) = ENNReal.ofReal |(↑LinearMap.det g)⁻¹| • μ
[PROOFSTEP]
haveI : IsAddHaarMeasure (map e μ) := (e : E ≃+ (ι → ℝ)).isAddHaarMeasure_map μ Ce Cesymm
[GOAL]
case intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝¹ : FiniteDimensional ℝ (ι → ℝ)
this✝ : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
fg : f = LinearMap.comp (↑(LinearEquiv.symm e)) (LinearMap.comp g ↑e)
Ce : Continuous ↑e
Cg : Continuous ↑g
Cesymm : Continuous ↑(LinearEquiv.symm e)
this : IsAddHaarMeasure (map (↑e) μ)
⊢ map (↑(LinearEquiv.symm e)) (map (↑g) (map (↑e) μ)) = ENNReal.ofReal |(↑LinearMap.det g)⁻¹| • μ
[PROOFSTEP]
have ecomp : e.symm ∘ e = id := by ext x; simp only [id.def, Function.comp_apply, LinearEquiv.symm_apply_apply]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝¹ : FiniteDimensional ℝ (ι → ℝ)
this✝ : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
fg : f = LinearMap.comp (↑(LinearEquiv.symm e)) (LinearMap.comp g ↑e)
Ce : Continuous ↑e
Cg : Continuous ↑g
Cesymm : Continuous ↑(LinearEquiv.symm e)
this : IsAddHaarMeasure (map (↑e) μ)
⊢ ↑(LinearEquiv.symm e) ∘ ↑e = id
[PROOFSTEP]
ext x
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝¹ : FiniteDimensional ℝ (ι → ℝ)
this✝ : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
fg : f = LinearMap.comp (↑(LinearEquiv.symm e)) (LinearMap.comp g ↑e)
Ce : Continuous ↑e
Cg : Continuous ↑g
Cesymm : Continuous ↑(LinearEquiv.symm e)
this : IsAddHaarMeasure (map (↑e) μ)
x : E
⊢ (↑(LinearEquiv.symm e) ∘ ↑e) x = id x
[PROOFSTEP]
simp only [id.def, Function.comp_apply, LinearEquiv.symm_apply_apply]
[GOAL]
case intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
ι : Type := Fin (finrank ℝ E)
this✝¹ : FiniteDimensional ℝ (ι → ℝ)
this✝ : finrank ℝ E = finrank ℝ (ι → ℝ)
e : E ≃ₗ[ℝ] ι → ℝ
g : (ι → ℝ) →ₗ[ℝ] ι → ℝ
hf : ↑LinearMap.det g ≠ 0
hg : g = LinearMap.comp (↑e) (LinearMap.comp f ↑(LinearEquiv.symm e))
gdet : ↑LinearMap.det g = ↑LinearMap.det f
fg : f = LinearMap.comp (↑(LinearEquiv.symm e)) (LinearMap.comp g ↑e)
Ce : Continuous ↑e
Cg : Continuous ↑g
Cesymm : Continuous ↑(LinearEquiv.symm e)
this : IsAddHaarMeasure (map (↑e) μ)
ecomp : ↑(LinearEquiv.symm e) ∘ ↑e = id
⊢ map (↑(LinearEquiv.symm e)) (map (↑g) (map (↑e) μ)) = ENNReal.ofReal |(↑LinearMap.det g)⁻¹| • μ
[PROOFSTEP]
rw [map_linearMap_addHaar_pi_eq_smul_addHaar hf (map e μ), Measure.map_smul, map_map Cesymm.measurable Ce.measurable,
  ecomp, Measure.map_id]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
s : Set E
⊢ ↑↑(map (↑f) μ) s = ENNReal.ofReal |(↑LinearMap.det f)⁻¹| * ↑↑μ s
[PROOFSTEP]
rw [map_linearMap_addHaar_eq_smul_addHaar μ hf]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
hf : ↑LinearMap.det f ≠ 0
s : Set E
⊢ ↑↑(ENNReal.ofReal |(↑LinearMap.det f)⁻¹| • μ) s = ENNReal.ofReal |(↑LinearMap.det f)⁻¹| * ↑↑μ s
[PROOFSTEP]
rfl
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E ≃ₗ[ℝ] E
s : Set E
⊢ ↑↑μ (↑f ⁻¹' s) = ENNReal.ofReal |↑LinearMap.det ↑(LinearEquiv.symm f)| * ↑↑μ s
[PROOFSTEP]
have A : LinearMap.det (f : E →ₗ[ℝ] E) ≠ 0 := (LinearEquiv.isUnit_det' f).ne_zero
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E ≃ₗ[ℝ] E
s : Set E
A : ↑LinearMap.det ↑f ≠ 0
⊢ ↑↑μ (↑f ⁻¹' s) = ENNReal.ofReal |↑LinearMap.det ↑(LinearEquiv.symm f)| * ↑↑μ s
[PROOFSTEP]
convert addHaar_preimage_linearMap μ A s
[GOAL]
case h.e'_3.h.e'_5.h.e'_1.h.e'_3
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E ≃ₗ[ℝ] E
s : Set E
A : ↑LinearMap.det ↑f ≠ 0
⊢ ↑LinearMap.det ↑(LinearEquiv.symm f) = (↑LinearMap.det ↑f)⁻¹
[PROOFSTEP]
simp only [LinearEquiv.det_coe_symm]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
s : Set E
⊢ ↑↑μ (↑f '' s) = ENNReal.ofReal |↑LinearMap.det f| * ↑↑μ s
[PROOFSTEP]
rcases ne_or_eq (LinearMap.det f) 0 with (hf | hf)
[GOAL]
case inl
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
s : Set E
hf : ↑LinearMap.det f ≠ 0
⊢ ↑↑μ (↑f '' s) = ENNReal.ofReal |↑LinearMap.det f| * ↑↑μ s
[PROOFSTEP]
let g := (f.equivOfDetNeZero hf).toContinuousLinearEquiv
[GOAL]
case inl
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
s : Set E
hf : ↑LinearMap.det f ≠ 0
g : E ≃L[ℝ] E := LinearEquiv.toContinuousLinearEquiv (LinearMap.equivOfDetNeZero f hf)
⊢ ↑↑μ (↑f '' s) = ENNReal.ofReal |↑LinearMap.det f| * ↑↑μ s
[PROOFSTEP]
change μ (g '' s) = _
[GOAL]
case inl
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
s : Set E
hf : ↑LinearMap.det f ≠ 0
g : E ≃L[ℝ] E := LinearEquiv.toContinuousLinearEquiv (LinearMap.equivOfDetNeZero f hf)
⊢ ↑↑μ (↑g '' s) = ENNReal.ofReal |↑LinearMap.det f| * ↑↑μ s
[PROOFSTEP]
rw [ContinuousLinearEquiv.image_eq_preimage g s, addHaar_preimage_continuousLinearEquiv]
[GOAL]
case inl
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
s : Set E
hf : ↑LinearMap.det f ≠ 0
g : E ≃L[ℝ] E := LinearEquiv.toContinuousLinearEquiv (LinearMap.equivOfDetNeZero f hf)
⊢ ENNReal.ofReal |↑LinearMap.det ↑↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.symm g))| * ↑↑μ s =
    ENNReal.ofReal |↑LinearMap.det f| * ↑↑μ s
[PROOFSTEP]
congr
[GOAL]
case inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
s : Set E
hf : ↑LinearMap.det f = 0
⊢ ↑↑μ (↑f '' s) = ENNReal.ofReal |↑LinearMap.det f| * ↑↑μ s
[PROOFSTEP]
simp only [hf, zero_mul, ENNReal.ofReal_zero, abs_zero]
[GOAL]
case inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
s : Set E
hf : ↑LinearMap.det f = 0
⊢ ↑↑μ ((fun a => ↑f a) '' s) = 0
[PROOFSTEP]
have : μ (LinearMap.range f) = 0 := addHaar_submodule μ _ (LinearMap.range_lt_top_of_det_eq_zero hf).ne
[GOAL]
case inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f : E →ₗ[ℝ] E
s : Set E
hf : ↑LinearMap.det f = 0
this : ↑↑μ ↑(LinearMap.range f) = 0
⊢ ↑↑μ ((fun a => ↑f a) '' s) = 0
[PROOFSTEP]
exact le_antisymm (le_trans (measure_mono (image_subset_range _ _)) this.le) (zero_le _)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
r : ℝ
hr : r ≠ 0
⊢ map ((fun x x_1 => x • x_1) r) μ = ENNReal.ofReal |(r ^ finrank ℝ E)⁻¹| • μ
[PROOFSTEP]
let f : E →ₗ[ℝ] E := r • (1 : E →ₗ[ℝ] E)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
r : ℝ
hr : r ≠ 0
f : E →ₗ[ℝ] E := r • 1
⊢ map ((fun x x_1 => x • x_1) r) μ = ENNReal.ofReal |(r ^ finrank ℝ E)⁻¹| • μ
[PROOFSTEP]
change Measure.map f μ = _
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
r : ℝ
hr : r ≠ 0
f : E →ₗ[ℝ] E := r • 1
⊢ map (↑f) μ = ENNReal.ofReal |(r ^ finrank ℝ E)⁻¹| • μ
[PROOFSTEP]
have hf : LinearMap.det f ≠ 0 :=
  by
  simp only [mul_one, LinearMap.det_smul, Ne.def, MonoidHom.map_one]
  intro h
  exact hr (pow_eq_zero h)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
r : ℝ
hr : r ≠ 0
f : E →ₗ[ℝ] E := r • 1
⊢ ↑LinearMap.det f ≠ 0
[PROOFSTEP]
simp only [mul_one, LinearMap.det_smul, Ne.def, MonoidHom.map_one]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
r : ℝ
hr : r ≠ 0
f : E →ₗ[ℝ] E := r • 1
⊢ ¬r ^ finrank ℝ E = 0
[PROOFSTEP]
intro h
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
r : ℝ
hr : r ≠ 0
f : E →ₗ[ℝ] E := r • 1
h : r ^ finrank ℝ E = 0
⊢ False
[PROOFSTEP]
exact hr (pow_eq_zero h)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
r : ℝ
hr : r ≠ 0
f : E →ₗ[ℝ] E := r • 1
hf : ↑LinearMap.det f ≠ 0
⊢ map (↑f) μ = ENNReal.ofReal |(r ^ finrank ℝ E)⁻¹| • μ
[PROOFSTEP]
simp only [map_linearMap_addHaar_eq_smul_addHaar μ hf, mul_one, LinearMap.det_smul, map_one]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
r : ℝ
hr : r ≠ 0
s : Set E
⊢ ↑↑(map ((fun x x_1 => x • x_1) r) μ) s = ENNReal.ofReal |(r ^ finrank ℝ E)⁻¹| * ↑↑μ s
[PROOFSTEP]
rw [map_addHaar_smul μ hr, smul_toOuterMeasure, OuterMeasure.coe_smul, Pi.smul_apply, smul_eq_mul]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
r : ℝ
s : Set E
⊢ ↑↑μ (r • s) = ENNReal.ofReal |r ^ finrank ℝ E| * ↑↑μ s
[PROOFSTEP]
rcases ne_or_eq r 0 with (h | rfl)
[GOAL]
case inl
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
r : ℝ
s : Set E
h : r ≠ 0
⊢ ↑↑μ (r • s) = ENNReal.ofReal |r ^ finrank ℝ E| * ↑↑μ s
[PROOFSTEP]
rw [← preimage_smul_inv₀ h, addHaar_preimage_smul μ (inv_ne_zero h), inv_pow, inv_inv]
[GOAL]
case inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
⊢ ↑↑μ (0 • s) = ENNReal.ofReal |0 ^ finrank ℝ E| * ↑↑μ s
[PROOFSTEP]
rcases eq_empty_or_nonempty s with (rfl | hs)
[GOAL]
case inr.inl
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
⊢ ↑↑μ (0 • ∅) = ENNReal.ofReal |0 ^ finrank ℝ E| * ↑↑μ ∅
[PROOFSTEP]
simp only [measure_empty, mul_zero, smul_set_empty]
[GOAL]
case inr.inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
hs : Set.Nonempty s
⊢ ↑↑μ (0 • s) = ENNReal.ofReal |0 ^ finrank ℝ E| * ↑↑μ s
[PROOFSTEP]
rw [zero_smul_set hs, ← singleton_zero]
[GOAL]
case inr.inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
hs : Set.Nonempty s
⊢ ↑↑μ {0} = ENNReal.ofReal |0 ^ finrank ℝ E| * ↑↑μ s
[PROOFSTEP]
by_cases h : finrank ℝ E = 0
[GOAL]
case pos
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
hs : Set.Nonempty s
h : finrank ℝ E = 0
⊢ ↑↑μ {0} = ENNReal.ofReal |0 ^ finrank ℝ E| * ↑↑μ s
[PROOFSTEP]
haveI : Subsingleton E := finrank_zero_iff.1 h
[GOAL]
case pos
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
hs : Set.Nonempty s
h : finrank ℝ E = 0
this : Subsingleton E
⊢ ↑↑μ {0} = ENNReal.ofReal |0 ^ finrank ℝ E| * ↑↑μ s
[PROOFSTEP]
simp only [h, one_mul, ENNReal.ofReal_one, abs_one, Subsingleton.eq_univ_of_nonempty hs, pow_zero,
  Subsingleton.eq_univ_of_nonempty (singleton_nonempty (0 : E))]
[GOAL]
case neg
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
hs : Set.Nonempty s
h : ¬finrank ℝ E = 0
⊢ ↑↑μ {0} = ENNReal.ofReal |0 ^ finrank ℝ E| * ↑↑μ s
[PROOFSTEP]
haveI : Nontrivial E := nontrivial_of_finrank_pos (bot_lt_iff_ne_bot.2 h)
[GOAL]
case neg
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
hs : Set.Nonempty s
h : ¬finrank ℝ E = 0
this : Nontrivial E
⊢ ↑↑μ {0} = ENNReal.ofReal |0 ^ finrank ℝ E| * ↑↑μ s
[PROOFSTEP]
simp only [h, zero_mul, ENNReal.ofReal_zero, abs_zero, Ne.def, not_false_iff, zero_pow', measure_singleton]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
r : ℝ
hr : 0 ≤ r
s : Set E
⊢ ↑↑μ (r • s) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ s
[PROOFSTEP]
rw [addHaar_smul, abs_pow, abs_of_nonneg hr]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
hs : NullMeasurableSet s
r : ℝ
⊢ NullMeasurableSet (r • s)
[PROOFSTEP]
obtain rfl | hs' := s.eq_empty_or_nonempty
[GOAL]
case inl
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
r : ℝ
hs : NullMeasurableSet ∅
⊢ NullMeasurableSet (r • ∅)
[PROOFSTEP]
simp
[GOAL]
case inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
hs : NullMeasurableSet s
r : ℝ
hs' : Set.Nonempty s
⊢ NullMeasurableSet (r • s)
[PROOFSTEP]
obtain rfl | hr := eq_or_ne r 0
[GOAL]
case inr.inl
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
hs : NullMeasurableSet s
hs' : Set.Nonempty s
⊢ NullMeasurableSet (0 • s)
[PROOFSTEP]
simpa [zero_smul_set hs'] using nullMeasurableSet_singleton _
[GOAL]
case inr.inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
hs : NullMeasurableSet s
r : ℝ
hs' : Set.Nonempty s
hr : r ≠ 0
⊢ NullMeasurableSet (r • s)
[PROOFSTEP]
obtain ⟨t, ht, hst⟩ := hs
[GOAL]
case inr.inr.intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
r : ℝ
hs' : Set.Nonempty s
hr : r ≠ 0
t : Set E
ht : MeasurableSet t
hst : s =ᶠ[ae μ] t
⊢ NullMeasurableSet (r • s)
[PROOFSTEP]
refine' ⟨_, ht.const_smul_of_ne_zero hr, _⟩
[GOAL]
case inr.inr.intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
r : ℝ
hs' : Set.Nonempty s
hr : r ≠ 0
t : Set E
ht : MeasurableSet t
hst : s =ᶠ[ae μ] t
⊢ r • s =ᶠ[ae μ] r • t
[PROOFSTEP]
rw [← measure_symmDiff_eq_zero_iff] at hst ⊢
[GOAL]
case inr.inr.intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
r : ℝ
hs' : Set.Nonempty s
hr : r ≠ 0
t : Set E
ht : MeasurableSet t
hst : ↑↑μ (s ∆ t) = 0
⊢ ↑↑μ ((r • s) ∆ (r • t)) = 0
[PROOFSTEP]
rw [← smul_set_symmDiff₀ hr, addHaar_smul μ, hst, mul_zero]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
s : Set E
⊢ ↑↑μ (↑(AffineMap.homothety x r) '' s) = ↑↑μ ((fun y => y + x) '' (r • (fun y => y + -x) '' s))
[PROOFSTEP]
simp only [← image_smul, image_image, ← sub_eq_add_neg]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
s : Set E
⊢ ↑↑μ ((fun a => ↑(AffineMap.homothety x r) a) '' s) = ↑↑μ ((fun x_1 => r • (x_1 - x) + x) '' s)
[PROOFSTEP]
rfl
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
s : Set E
⊢ ↑↑μ ((fun y => y + x) '' (r • (fun y => y + -x) '' s)) = ENNReal.ofReal |r ^ finrank ℝ E| * ↑↑μ s
[PROOFSTEP]
simp only [image_add_right, measure_preimage_add_right, addHaar_smul]
[GOAL]
E✝ : Type u_1
inst✝¹² : NormedAddCommGroup E✝
inst✝¹¹ : NormedSpace ℝ E✝
inst✝¹⁰ : MeasurableSpace E✝
inst✝⁹ : BorelSpace E✝
inst✝⁸ : FiniteDimensional ℝ E✝
μ✝ : Measure E✝
inst✝⁷ : IsAddHaarMeasure μ✝
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : CompleteSpace F
s : Set E✝
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
x : E
r : ℝ
⊢ ↑↑μ (ball x r) = ↑↑μ (ball 0 r)
[PROOFSTEP]
have : ball (0 : E) r = (· + ·) x ⁻¹' ball x r := by simp [preimage_add_ball]
[GOAL]
E✝ : Type u_1
inst✝¹² : NormedAddCommGroup E✝
inst✝¹¹ : NormedSpace ℝ E✝
inst✝¹⁰ : MeasurableSpace E✝
inst✝⁹ : BorelSpace E✝
inst✝⁸ : FiniteDimensional ℝ E✝
μ✝ : Measure E✝
inst✝⁷ : IsAddHaarMeasure μ✝
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : CompleteSpace F
s : Set E✝
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
x : E
r : ℝ
⊢ ball 0 r = (fun x x_1 => x + x_1) x ⁻¹' ball x r
[PROOFSTEP]
simp [preimage_add_ball]
[GOAL]
E✝ : Type u_1
inst✝¹² : NormedAddCommGroup E✝
inst✝¹¹ : NormedSpace ℝ E✝
inst✝¹⁰ : MeasurableSpace E✝
inst✝⁹ : BorelSpace E✝
inst✝⁸ : FiniteDimensional ℝ E✝
μ✝ : Measure E✝
inst✝⁷ : IsAddHaarMeasure μ✝
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : CompleteSpace F
s : Set E✝
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
x : E
r : ℝ
this : ball 0 r = (fun x x_1 => x + x_1) x ⁻¹' ball x r
⊢ ↑↑μ (ball x r) = ↑↑μ (ball 0 r)
[PROOFSTEP]
rw [this, measure_preimage_add]
[GOAL]
E✝ : Type u_1
inst✝¹² : NormedAddCommGroup E✝
inst✝¹¹ : NormedSpace ℝ E✝
inst✝¹⁰ : MeasurableSpace E✝
inst✝⁹ : BorelSpace E✝
inst✝⁸ : FiniteDimensional ℝ E✝
μ✝ : Measure E✝
inst✝⁷ : IsAddHaarMeasure μ✝
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : CompleteSpace F
s : Set E✝
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
x : E
r : ℝ
⊢ ↑↑μ (closedBall x r) = ↑↑μ (closedBall 0 r)
[PROOFSTEP]
have : closedBall (0 : E) r = (· + ·) x ⁻¹' closedBall x r := by simp [preimage_add_closedBall]
[GOAL]
E✝ : Type u_1
inst✝¹² : NormedAddCommGroup E✝
inst✝¹¹ : NormedSpace ℝ E✝
inst✝¹⁰ : MeasurableSpace E✝
inst✝⁹ : BorelSpace E✝
inst✝⁸ : FiniteDimensional ℝ E✝
μ✝ : Measure E✝
inst✝⁷ : IsAddHaarMeasure μ✝
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : CompleteSpace F
s : Set E✝
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
x : E
r : ℝ
⊢ closedBall 0 r = (fun x x_1 => x + x_1) x ⁻¹' closedBall x r
[PROOFSTEP]
simp [preimage_add_closedBall]
[GOAL]
E✝ : Type u_1
inst✝¹² : NormedAddCommGroup E✝
inst✝¹¹ : NormedSpace ℝ E✝
inst✝¹⁰ : MeasurableSpace E✝
inst✝⁹ : BorelSpace E✝
inst✝⁸ : FiniteDimensional ℝ E✝
μ✝ : Measure E✝
inst✝⁷ : IsAddHaarMeasure μ✝
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : CompleteSpace F
s : Set E✝
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
x : E
r : ℝ
this : closedBall 0 r = (fun x x_1 => x + x_1) x ⁻¹' closedBall x r
⊢ ↑↑μ (closedBall x r) = ↑↑μ (closedBall 0 r)
[PROOFSTEP]
rw [this, measure_preimage_add]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 < r
s : ℝ
⊢ ↑↑μ (ball x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (ball 0 s)
[PROOFSTEP]
have : ball (0 : E) (r * s) = r • ball (0 : E) s := by
  simp only [_root_.smul_ball hr.ne' (0 : E) s, Real.norm_eq_abs, abs_of_nonneg hr.le, smul_zero]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 < r
s : ℝ
⊢ ball 0 (r * s) = r • ball 0 s
[PROOFSTEP]
simp only [_root_.smul_ball hr.ne' (0 : E) s, Real.norm_eq_abs, abs_of_nonneg hr.le, smul_zero]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 < r
s : ℝ
this : ball 0 (r * s) = r • ball 0 s
⊢ ↑↑μ (ball x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (ball 0 s)
[PROOFSTEP]
simp only [this, addHaar_smul, abs_of_nonneg hr.le, addHaar_ball_center, abs_pow]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
x : E
r : ℝ
hr : 0 < r
⊢ ↑↑μ (ball x r) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (ball 0 1)
[PROOFSTEP]
rw [← addHaar_ball_mul_of_pos μ x hr, mul_one]
[GOAL]
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : IsAddHaarMeasure μ
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s✝ : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
hr : 0 ≤ r
s : ℝ
⊢ ↑↑μ (ball x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (ball 0 s)
[PROOFSTEP]
rcases hr.eq_or_lt with (rfl | h)
[GOAL]
case inl
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : IsAddHaarMeasure μ
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s✝ : Set E
inst✝ : Nontrivial E
x : E
s : ℝ
hr : 0 ≤ 0
⊢ ↑↑μ (ball x (0 * s)) = ENNReal.ofReal (0 ^ finrank ℝ E) * ↑↑μ (ball 0 s)
[PROOFSTEP]
simp only [zero_pow (finrank_pos (K := ℝ) (V := E)), measure_empty, zero_mul, ENNReal.ofReal_zero, ball_zero]
[GOAL]
case inr
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : IsAddHaarMeasure μ
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s✝ : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
hr : 0 ≤ r
s : ℝ
h : 0 < r
⊢ ↑↑μ (ball x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (ball 0 s)
[PROOFSTEP]
exact addHaar_ball_mul_of_pos μ x h s
[GOAL]
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : IsAddHaarMeasure μ
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
hr : 0 ≤ r
⊢ ↑↑μ (ball x r) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (ball 0 1)
[PROOFSTEP]
rw [← addHaar_ball_mul μ x hr, mul_one]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 < r
s : ℝ
⊢ ↑↑μ (closedBall x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 s)
[PROOFSTEP]
have : closedBall (0 : E) (r * s) = r • closedBall (0 : E) s := by
  simp [smul_closedBall' hr.ne' (0 : E), abs_of_nonneg hr.le]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 < r
s : ℝ
⊢ closedBall 0 (r * s) = r • closedBall 0 s
[PROOFSTEP]
simp [smul_closedBall' hr.ne' (0 : E), abs_of_nonneg hr.le]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 < r
s : ℝ
this : closedBall 0 (r * s) = r • closedBall 0 s
⊢ ↑↑μ (closedBall x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 s)
[PROOFSTEP]
simp only [this, addHaar_smul, abs_of_nonneg hr.le, addHaar_closedBall_center, abs_pow]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 ≤ r
s : ℝ
hs : 0 ≤ s
⊢ ↑↑μ (closedBall x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 s)
[PROOFSTEP]
have : closedBall (0 : E) (r * s) = r • closedBall (0 : E) s := by simp [smul_closedBall r (0 : E) hs, abs_of_nonneg hr]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 ≤ r
s : ℝ
hs : 0 ≤ s
⊢ closedBall 0 (r * s) = r • closedBall 0 s
[PROOFSTEP]
simp [smul_closedBall r (0 : E) hs, abs_of_nonneg hr]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 ≤ r
s : ℝ
hs : 0 ≤ s
this : closedBall 0 (r * s) = r • closedBall 0 s
⊢ ↑↑μ (closedBall x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 s)
[PROOFSTEP]
simp only [this, addHaar_smul, abs_of_nonneg hr, addHaar_closedBall_center, abs_pow]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
x : E
r : ℝ
hr : 0 ≤ r
⊢ ↑↑μ (closedBall x r) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 1)
[PROOFSTEP]
rw [← addHaar_closedBall_mul μ x hr zero_le_one, mul_one]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
⊢ ↑↑μ (closedBall 0 1) = ↑↑μ (ball 0 1)
[PROOFSTEP]
apply le_antisymm _ (measure_mono ball_subset_closedBall)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
⊢ ↑↑μ (closedBall 0 1) ≤ ↑↑μ (ball 0 1)
[PROOFSTEP]
have A :
  Tendsto (fun r : ℝ => ENNReal.ofReal (r ^ finrank ℝ E) * μ (closedBall (0 : E) 1)) (𝓝[<] 1)
    (𝓝 (ENNReal.ofReal ((1 : ℝ) ^ finrank ℝ E) * μ (closedBall (0 : E) 1))) :=
  by
  refine' ENNReal.Tendsto.mul _ (by simp) tendsto_const_nhds (by simp)
  exact ENNReal.tendsto_ofReal ((tendsto_id'.2 nhdsWithin_le_nhds).pow _)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
⊢ Tendsto (fun r => ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 1)) (𝓝[Iio 1] 1)
    (𝓝 (ENNReal.ofReal (1 ^ finrank ℝ E) * ↑↑μ (closedBall 0 1)))
[PROOFSTEP]
refine' ENNReal.Tendsto.mul _ (by simp) tendsto_const_nhds (by simp)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
⊢ ENNReal.ofReal (1 ^ finrank ℝ E) ≠ 0 ∨ ↑↑μ (closedBall 0 1) ≠ ⊤
[PROOFSTEP]
simp
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
⊢ ↑↑μ (closedBall 0 1) ≠ 0 ∨ ENNReal.ofReal (1 ^ finrank ℝ E) ≠ ⊤
[PROOFSTEP]
simp
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
⊢ Tendsto (fun r => ENNReal.ofReal (r ^ finrank ℝ E)) (𝓝[Iio 1] 1) (𝓝 (ENNReal.ofReal (1 ^ finrank ℝ E)))
[PROOFSTEP]
exact ENNReal.tendsto_ofReal ((tendsto_id'.2 nhdsWithin_le_nhds).pow _)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
A :
  Tendsto (fun r => ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 1)) (𝓝[Iio 1] 1)
    (𝓝 (ENNReal.ofReal (1 ^ finrank ℝ E) * ↑↑μ (closedBall 0 1)))
⊢ ↑↑μ (closedBall 0 1) ≤ ↑↑μ (ball 0 1)
[PROOFSTEP]
simp only [one_pow, one_mul, ENNReal.ofReal_one] at A
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
A : Tendsto (fun r => ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 1)) (𝓝[Iio 1] 1) (𝓝 (↑↑μ (closedBall 0 1)))
⊢ ↑↑μ (closedBall 0 1) ≤ ↑↑μ (ball 0 1)
[PROOFSTEP]
refine' le_of_tendsto A _
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
A : Tendsto (fun r => ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 1)) (𝓝[Iio 1] 1) (𝓝 (↑↑μ (closedBall 0 1)))
⊢ ∀ᶠ (c : ℝ) in 𝓝[Iio 1] 1, ENNReal.ofReal (c ^ finrank ℝ E) * ↑↑μ (closedBall 0 1) ≤ ↑↑μ (ball 0 1)
[PROOFSTEP]
refine' mem_nhdsWithin_Iio_iff_exists_Ioo_subset.2 ⟨(0 : ℝ), by simp, fun r hr => _⟩
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
A : Tendsto (fun r => ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 1)) (𝓝[Iio 1] 1) (𝓝 (↑↑μ (closedBall 0 1)))
⊢ 0 ∈ Iio 1
[PROOFSTEP]
simp
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
A : Tendsto (fun r => ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 1)) (𝓝[Iio 1] 1) (𝓝 (↑↑μ (closedBall 0 1)))
r : ℝ
hr : r ∈ Ioo 0 1
⊢ r ∈ {x | (fun c => ENNReal.ofReal (c ^ finrank ℝ E) * ↑↑μ (closedBall 0 1) ≤ ↑↑μ (ball 0 1)) x}
[PROOFSTEP]
dsimp
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
A : Tendsto (fun r => ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 1)) (𝓝[Iio 1] 1) (𝓝 (↑↑μ (closedBall 0 1)))
r : ℝ
hr : r ∈ Ioo 0 1
⊢ ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 1) ≤ ↑↑μ (ball 0 1)
[PROOFSTEP]
rw [← addHaar_closedBall' μ (0 : E) hr.1.le]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
A : Tendsto (fun r => ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 1)) (𝓝[Iio 1] 1) (𝓝 (↑↑μ (closedBall 0 1)))
r : ℝ
hr : r ∈ Ioo 0 1
⊢ ↑↑μ (closedBall 0 r) ≤ ↑↑μ (ball 0 1)
[PROOFSTEP]
exact measure_mono (closedBall_subset_ball hr.2)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
x : E
r : ℝ
hr : 0 ≤ r
⊢ ↑↑μ (closedBall x r) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (ball 0 1)
[PROOFSTEP]
rw [addHaar_closedBall' μ x hr, addHaar_closed_unit_ball_eq_addHaar_unit_ball]
[GOAL]
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : IsAddHaarMeasure μ
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
⊢ ↑↑μ (closedBall x r) = ↑↑μ (ball x r)
[PROOFSTEP]
by_cases h : r < 0
[GOAL]
case pos
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : IsAddHaarMeasure μ
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
h : r < 0
⊢ ↑↑μ (closedBall x r) = ↑↑μ (ball x r)
[PROOFSTEP]
rw [Metric.closedBall_eq_empty.mpr h, Metric.ball_eq_empty.mpr h.le]
[GOAL]
case neg
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : IsAddHaarMeasure μ
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
h : ¬r < 0
⊢ ↑↑μ (closedBall x r) = ↑↑μ (ball x r)
[PROOFSTEP]
push_neg at h
[GOAL]
case neg
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : IsAddHaarMeasure μ
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
h : 0 ≤ r
⊢ ↑↑μ (closedBall x r) = ↑↑μ (ball x r)
[PROOFSTEP]
rw [addHaar_closedBall μ x h, addHaar_ball μ x h]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
x : E
r : ℝ
hr : r ≠ 0
⊢ ↑↑μ (sphere x r) = 0
[PROOFSTEP]
rcases hr.lt_or_lt with (h | h)
[GOAL]
case inl
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
x : E
r : ℝ
hr : r ≠ 0
h : r < 0
⊢ ↑↑μ (sphere x r) = 0
[PROOFSTEP]
simp only [empty_diff, measure_empty, ← closedBall_diff_ball, closedBall_eq_empty.2 h]
[GOAL]
case inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
x : E
r : ℝ
hr : r ≠ 0
h : 0 < r
⊢ ↑↑μ (sphere x r) = 0
[PROOFSTEP]
rw [← closedBall_diff_ball, measure_diff ball_subset_closedBall measurableSet_ball measure_ball_lt_top.ne,
  addHaar_ball_of_pos μ _ h, addHaar_closedBall μ _ h.le, tsub_self]
[GOAL]
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : IsAddHaarMeasure μ
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
⊢ ↑↑μ (sphere x r) = 0
[PROOFSTEP]
rcases eq_or_ne r 0 with (rfl | h)
[GOAL]
case inl
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : IsAddHaarMeasure μ
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
⊢ ↑↑μ (sphere x 0) = 0
[PROOFSTEP]
rw [sphere_zero, measure_singleton]
[GOAL]
case inr
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : IsAddHaarMeasure μ
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
h : r ≠ 0
⊢ ↑↑μ (sphere x r) = 0
[PROOFSTEP]
exact addHaar_sphere_of_ne_zero μ x h
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
r : ℝ
hr : r ≠ 0
x y : E
s t : Set E
⊢ ↑↑μ ({x} + r • s) / ↑↑μ ({y} + r • t) =
    ENNReal.ofReal (|r| ^ finrank ℝ E) * ↑↑μ s * (ENNReal.ofReal (|r| ^ finrank ℝ E) * ↑↑μ t)⁻¹
[PROOFSTEP]
simp only [div_eq_mul_inv, addHaar_smul, image_add_left, measure_preimage_add, abs_pow, singleton_add]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
r : ℝ
hr : r ≠ 0
x y : E
s t : Set E
⊢ ENNReal.ofReal (|r| ^ finrank ℝ E) * ↑↑μ s * (ENNReal.ofReal (|r| ^ finrank ℝ E) * ↑↑μ t)⁻¹ =
    ENNReal.ofReal (|r| ^ finrank ℝ E) * (ENNReal.ofReal (|r| ^ finrank ℝ E))⁻¹ * (↑↑μ s * (↑↑μ t)⁻¹)
[PROOFSTEP]
rw [ENNReal.mul_inv]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
r : ℝ
hr : r ≠ 0
x y : E
s t : Set E
⊢ ENNReal.ofReal (|r| ^ finrank ℝ E) * ↑↑μ s * ((ENNReal.ofReal (|r| ^ finrank ℝ E))⁻¹ * (↑↑μ t)⁻¹) =
    ENNReal.ofReal (|r| ^ finrank ℝ E) * (ENNReal.ofReal (|r| ^ finrank ℝ E))⁻¹ * (↑↑μ s * (↑↑μ t)⁻¹)
[PROOFSTEP]
ring
[GOAL]
case ha
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
r : ℝ
hr : r ≠ 0
x y : E
s t : Set E
⊢ ENNReal.ofReal (|r| ^ finrank ℝ E) ≠ 0 ∨ ↑↑μ t ≠ ⊤
[PROOFSTEP]
simp only [pow_pos (abs_pos.mpr hr), ENNReal.ofReal_eq_zero, not_le, Ne.def, true_or_iff]
[GOAL]
case hb
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
r : ℝ
hr : r ≠ 0
x y : E
s t : Set E
⊢ ENNReal.ofReal (|r| ^ finrank ℝ E) ≠ ⊤ ∨ ↑↑μ t ≠ 0
[PROOFSTEP]
simp only [ENNReal.ofReal_ne_top, true_or_iff, Ne.def, not_false_iff]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
r : ℝ
hr : r ≠ 0
x y : E
s t : Set E
⊢ ENNReal.ofReal (|r| ^ finrank ℝ E) * (ENNReal.ofReal (|r| ^ finrank ℝ E))⁻¹ * (↑↑μ s * (↑↑μ t)⁻¹) = ↑↑μ s / ↑↑μ t
[PROOFSTEP]
rw [ENNReal.mul_inv_cancel, one_mul, div_eq_mul_inv]
[GOAL]
case h0
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
r : ℝ
hr : r ≠ 0
x y : E
s t : Set E
⊢ ENNReal.ofReal (|r| ^ finrank ℝ E) ≠ 0
[PROOFSTEP]
simp only [pow_pos (abs_pos.mpr hr), ENNReal.ofReal_eq_zero, not_le, Ne.def]
[GOAL]
case ht
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
r : ℝ
hr : r ≠ 0
x y : E
s t : Set E
⊢ ENNReal.ofReal (|r| ^ finrank ℝ E) ≠ ⊤
[PROOFSTEP]
simp only [ENNReal.ofReal_ne_top, Ne.def, not_false_iff]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
⊢ IsUnifLocDoublingMeasure μ
[PROOFSTEP]
refine' ⟨⟨(2 : ℝ≥0) ^ finrank ℝ E, _⟩⟩
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
⊢ ∀ᶠ (ε : ℝ) in 𝓝[Ioi 0] 0, ∀ (x : E), ↑↑μ (closedBall x (2 * ε)) ≤ ↑(2 ^ finrank ℝ E) * ↑↑μ (closedBall x ε)
[PROOFSTEP]
filter_upwards [self_mem_nhdsWithin] with r hr x
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
r : ℝ
hr : r ∈ Ioi 0
x : E
⊢ ↑↑μ (closedBall x (2 * r)) ≤ ↑(2 ^ finrank ℝ E) * ↑↑μ (closedBall x r)
[PROOFSTEP]
rw [addHaar_closedBall_mul μ x zero_le_two (le_of_lt hr), addHaar_closedBall_center μ x, ENNReal.ofReal,
  Real.toNNReal_pow zero_le_two]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
r : ℝ
hr : r ∈ Ioi 0
x : E
⊢ ↑(Real.toNNReal 2 ^ finrank ℝ E) * ↑↑μ (closedBall 0 r) ≤ ↑(2 ^ finrank ℝ E) * ↑↑μ (closedBall 0 r)
[PROOFSTEP]
simp only [Real.toNNReal_ofNat, le_refl]
[GOAL]
E : Type u_1
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace ℝ E
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
inst✝¹⁰ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁹ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace ℝ F
inst✝⁶ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : DecidableEq ι
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
b : Basis ι ℝ G
v : ι → G
⊢ ↑↑(Basis.addHaar b) (parallelepiped v) = ENNReal.ofReal |↑(Basis.det b) v|
[PROOFSTEP]
have : FiniteDimensional ℝ G := FiniteDimensional.of_fintype_basis b
[GOAL]
E : Type u_1
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace ℝ E
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
inst✝¹⁰ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁹ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace ℝ F
inst✝⁶ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : DecidableEq ι
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
b : Basis ι ℝ G
v : ι → G
this : FiniteDimensional ℝ G
⊢ ↑↑(Basis.addHaar b) (parallelepiped v) = ENNReal.ofReal |↑(Basis.det b) v|
[PROOFSTEP]
have A : parallelepiped v = b.constr ℕ v '' parallelepiped b :=
  by
  rw [image_parallelepiped]
    -- porting note: was `congr 1 with i` but Lean 4 `congr` applies `ext` first
  refine congr_arg _ <| funext fun i ↦ ?_
  exact (b.constr_basis ℕ v i).symm
[GOAL]
E : Type u_1
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace ℝ E
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
inst✝¹⁰ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁹ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace ℝ F
inst✝⁶ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : DecidableEq ι
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
b : Basis ι ℝ G
v : ι → G
this : FiniteDimensional ℝ G
⊢ parallelepiped v = ↑(↑(Basis.constr b ℕ) v) '' parallelepiped ↑b
[PROOFSTEP]
rw [image_parallelepiped]
  -- porting note: was `congr 1 with i` but Lean 4 `congr` applies `ext` first
[GOAL]
E : Type u_1
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace ℝ E
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
inst✝¹⁰ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁹ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace ℝ F
inst✝⁶ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : DecidableEq ι
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
b : Basis ι ℝ G
v : ι → G
this : FiniteDimensional ℝ G
⊢ parallelepiped v = parallelepiped (↑(↑(Basis.constr b ℕ) v) ∘ ↑b)
[PROOFSTEP]
refine congr_arg _ <| funext fun i ↦ ?_
[GOAL]
E : Type u_1
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace ℝ E
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
inst✝¹⁰ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁹ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace ℝ F
inst✝⁶ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : DecidableEq ι
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
b : Basis ι ℝ G
v : ι → G
this : FiniteDimensional ℝ G
i : ι
⊢ v i = (↑(↑(Basis.constr b ℕ) v) ∘ ↑b) i
[PROOFSTEP]
exact (b.constr_basis ℕ v i).symm
[GOAL]
E : Type u_1
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace ℝ E
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
inst✝¹⁰ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁹ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace ℝ F
inst✝⁶ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : DecidableEq ι
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
b : Basis ι ℝ G
v : ι → G
this : FiniteDimensional ℝ G
A : parallelepiped v = ↑(↑(Basis.constr b ℕ) v) '' parallelepiped ↑b
⊢ ↑↑(Basis.addHaar b) (parallelepiped v) = ENNReal.ofReal |↑(Basis.det b) v|
[PROOFSTEP]
rw [A, addHaar_image_linearMap, b.addHaar_self, mul_one, ← LinearMap.det_toMatrix b, ←
  Basis.toMatrix_eq_toMatrix_constr, Basis.det_apply]
[GOAL]
E : Type u_1
inst✝¹⁵ : NormedAddCommGroup E
inst✝¹⁴ : NormedSpace ℝ E
inst✝¹³ : MeasurableSpace E
inst✝¹² : BorelSpace E
inst✝¹¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝¹⁰ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace ℝ F
inst✝⁷ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : DecidableEq ι
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
inst✝² : MeasurableSpace G
inst✝¹ : BorelSpace G
inst✝ : FiniteDimensional ℝ G
n : ℕ
_i : Fact (finrank ℝ G = n)
ω : AlternatingMap ℝ G ℝ (Fin n)
v : Fin n → G
⊢ ↑↑(AlternatingMap.measure ω) (parallelepiped v) = ENNReal.ofReal |↑ω v|
[PROOFSTEP]
conv_rhs => rw [ω.eq_smul_basis_det (finBasisOfFinrankEq ℝ G _i.out)]
[GOAL]
E : Type u_1
inst✝¹⁵ : NormedAddCommGroup E
inst✝¹⁴ : NormedSpace ℝ E
inst✝¹³ : MeasurableSpace E
inst✝¹² : BorelSpace E
inst✝¹¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝¹⁰ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace ℝ F
inst✝⁷ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : DecidableEq ι
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
inst✝² : MeasurableSpace G
inst✝¹ : BorelSpace G
inst✝ : FiniteDimensional ℝ G
n : ℕ
_i : Fact (finrank ℝ G = n)
ω : AlternatingMap ℝ G ℝ (Fin n)
v : Fin n → G
| ENNReal.ofReal |↑ω v|
[PROOFSTEP]
rw [ω.eq_smul_basis_det (finBasisOfFinrankEq ℝ G _i.out)]
[GOAL]
E : Type u_1
inst✝¹⁵ : NormedAddCommGroup E
inst✝¹⁴ : NormedSpace ℝ E
inst✝¹³ : MeasurableSpace E
inst✝¹² : BorelSpace E
inst✝¹¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝¹⁰ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace ℝ F
inst✝⁷ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : DecidableEq ι
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
inst✝² : MeasurableSpace G
inst✝¹ : BorelSpace G
inst✝ : FiniteDimensional ℝ G
n : ℕ
_i : Fact (finrank ℝ G = n)
ω : AlternatingMap ℝ G ℝ (Fin n)
v : Fin n → G
| ENNReal.ofReal |↑ω v|
[PROOFSTEP]
rw [ω.eq_smul_basis_det (finBasisOfFinrankEq ℝ G _i.out)]
[GOAL]
E : Type u_1
inst✝¹⁵ : NormedAddCommGroup E
inst✝¹⁴ : NormedSpace ℝ E
inst✝¹³ : MeasurableSpace E
inst✝¹² : BorelSpace E
inst✝¹¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝¹⁰ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace ℝ F
inst✝⁷ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : DecidableEq ι
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
inst✝² : MeasurableSpace G
inst✝¹ : BorelSpace G
inst✝ : FiniteDimensional ℝ G
n : ℕ
_i : Fact (finrank ℝ G = n)
ω : AlternatingMap ℝ G ℝ (Fin n)
v : Fin n → G
| ENNReal.ofReal |↑ω v|
[PROOFSTEP]
rw [ω.eq_smul_basis_det (finBasisOfFinrankEq ℝ G _i.out)]
[GOAL]
E : Type u_1
inst✝¹⁵ : NormedAddCommGroup E
inst✝¹⁴ : NormedSpace ℝ E
inst✝¹³ : MeasurableSpace E
inst✝¹² : BorelSpace E
inst✝¹¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝¹⁰ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace ℝ F
inst✝⁷ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : DecidableEq ι
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
inst✝² : MeasurableSpace G
inst✝¹ : BorelSpace G
inst✝ : FiniteDimensional ℝ G
n : ℕ
_i : Fact (finrank ℝ G = n)
ω : AlternatingMap ℝ G ℝ (Fin n)
v : Fin n → G
⊢ ↑↑(AlternatingMap.measure ω) (parallelepiped v) =
    ENNReal.ofReal
      |↑(↑ω ↑(finBasisOfFinrankEq ℝ G (_ : finrank ℝ G = n)) •
              Basis.det (finBasisOfFinrankEq ℝ G (_ : finrank ℝ G = n)))
          v|
[PROOFSTEP]
simp only [addHaar_parallelepiped, AlternatingMap.measure, coe_nnreal_smul_apply, AlternatingMap.smul_apply,
  Algebra.id.smul_eq_mul, abs_mul, ENNReal.ofReal_mul (abs_nonneg _), Real.ennnorm_eq_ofReal_abs]
[GOAL]
E : Type u_1
inst✝¹⁵ : NormedAddCommGroup E
inst✝¹⁴ : NormedSpace ℝ E
inst✝¹³ : MeasurableSpace E
inst✝¹² : BorelSpace E
inst✝¹¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝¹⁰ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace ℝ F
inst✝⁷ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : DecidableEq ι
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
inst✝² : MeasurableSpace G
inst✝¹ : BorelSpace G
inst✝ : FiniteDimensional ℝ G
n : ℕ
_i : Fact (finrank ℝ G = n)
ω : AlternatingMap ℝ G ℝ (Fin n)
⊢ IsAddLeftInvariant (AlternatingMap.measure ω)
[PROOFSTEP]
rw [AlternatingMap.measure]
[GOAL]
E : Type u_1
inst✝¹⁵ : NormedAddCommGroup E
inst✝¹⁴ : NormedSpace ℝ E
inst✝¹³ : MeasurableSpace E
inst✝¹² : BorelSpace E
inst✝¹¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝¹⁰ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace ℝ F
inst✝⁷ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : DecidableEq ι
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
inst✝² : MeasurableSpace G
inst✝¹ : BorelSpace G
inst✝ : FiniteDimensional ℝ G
n : ℕ
_i : Fact (finrank ℝ G = n)
ω : AlternatingMap ℝ G ℝ (Fin n)
⊢ IsAddLeftInvariant
    (‖↑ω ↑(finBasisOfFinrankEq ℝ G (_ : finrank ℝ G = n))‖₊ •
      Basis.addHaar (finBasisOfFinrankEq ℝ G (_ : finrank ℝ G = n)))
[PROOFSTEP]
infer_instance
[GOAL]
E : Type u_1
inst✝¹⁵ : NormedAddCommGroup E
inst✝¹⁴ : NormedSpace ℝ E
inst✝¹³ : MeasurableSpace E
inst✝¹² : BorelSpace E
inst✝¹¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝¹⁰ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace ℝ F
inst✝⁷ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : DecidableEq ι
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
inst✝² : MeasurableSpace G
inst✝¹ : BorelSpace G
inst✝ : FiniteDimensional ℝ G
n : ℕ
_i : Fact (finrank ℝ G = n)
ω : AlternatingMap ℝ G ℝ (Fin n)
⊢ IsLocallyFiniteMeasure (AlternatingMap.measure ω)
[PROOFSTEP]
rw [AlternatingMap.measure]
[GOAL]
E : Type u_1
inst✝¹⁵ : NormedAddCommGroup E
inst✝¹⁴ : NormedSpace ℝ E
inst✝¹³ : MeasurableSpace E
inst✝¹² : BorelSpace E
inst✝¹¹ : FiniteDimensional ℝ E
μ : Measure E
inst✝¹⁰ : IsAddHaarMeasure μ
F : Type u_2
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace ℝ F
inst✝⁷ : CompleteSpace F
s : Set E
ι : Type u_3
G : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : DecidableEq ι
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
inst✝² : MeasurableSpace G
inst✝¹ : BorelSpace G
inst✝ : FiniteDimensional ℝ G
n : ℕ
_i : Fact (finrank ℝ G = n)
ω : AlternatingMap ℝ G ℝ (Fin n)
⊢ IsLocallyFiniteMeasure
    (‖↑ω ↑(finBasisOfFinrankEq ℝ G (_ : finrank ℝ G = n))‖₊ •
      Basis.addHaar (finBasisOfFinrankEq ℝ G (_ : finrank ℝ G = n)))
[PROOFSTEP]
infer_instance
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
have A : Tendsto (fun r : ℝ => μ (s ∩ ({ x } + r • t)) / μ (closedBall x r)) (𝓝[>] 0) (𝓝 0) :=
  by
  apply tendsto_of_tendsto_of_tendsto_of_le_of_le' tendsto_const_nhds h (eventually_of_forall fun b => zero_le _)
  filter_upwards [self_mem_nhdsWithin]
  rintro r (rpos : 0 < r)
  apply mul_le_mul_right' (measure_mono (inter_subset_inter_right _ _)) _
  intro y hy
  have : y - x ∈ r • closedBall (0 : E) 1 := by
    apply smul_set_mono t_bound
    simpa [neg_add_eq_sub] using hy
  simpa only [smul_closedBall _ _ zero_le_one, Real.norm_of_nonneg rpos.le, mem_closedBall_iff_norm, mul_one, sub_zero,
    smul_zero]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
apply tendsto_of_tendsto_of_tendsto_of_le_of_le' tendsto_const_nhds h (eventually_of_forall fun b => zero_le _)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0,
    ↑↑μ (s ∩ ({x} + b • t)) / ↑↑μ (closedBall x b) ≤ ↑↑μ (s ∩ closedBall x b) / ↑↑μ (closedBall x b)
[PROOFSTEP]
filter_upwards [self_mem_nhdsWithin]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
⊢ ∀ (a : ℝ),
    a ∈ Ioi 0 → ↑↑μ (s ∩ ({x} + a • t)) / ↑↑μ (closedBall x a) ≤ ↑↑μ (s ∩ closedBall x a) / ↑↑μ (closedBall x a)
[PROOFSTEP]
rintro r (rpos : 0 < r)
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
r : ℝ
rpos : 0 < r
⊢ ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) ≤ ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)
[PROOFSTEP]
apply mul_le_mul_right' (measure_mono (inter_subset_inter_right _ _)) _
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
r : ℝ
rpos : 0 < r
⊢ {x} + r • t ⊆ closedBall x r
[PROOFSTEP]
intro y hy
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
r : ℝ
rpos : 0 < r
y : E
hy : y ∈ {x} + r • t
⊢ y ∈ closedBall x r
[PROOFSTEP]
have : y - x ∈ r • closedBall (0 : E) 1 := by
  apply smul_set_mono t_bound
  simpa [neg_add_eq_sub] using hy
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
r : ℝ
rpos : 0 < r
y : E
hy : y ∈ {x} + r • t
⊢ y - x ∈ r • closedBall 0 1
[PROOFSTEP]
apply smul_set_mono t_bound
[GOAL]
case a
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
r : ℝ
rpos : 0 < r
y : E
hy : y ∈ {x} + r • t
⊢ y - x ∈ r • t
[PROOFSTEP]
simpa [neg_add_eq_sub] using hy
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
r : ℝ
rpos : 0 < r
y : E
hy : y ∈ {x} + r • t
this : y - x ∈ r • closedBall 0 1
⊢ y ∈ closedBall x r
[PROOFSTEP]
simpa only [smul_closedBall _ _ zero_le_one, Real.norm_of_nonneg rpos.le, mem_closedBall_iff_norm, mul_one, sub_zero,
  smul_zero]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
have B :
  Tendsto (fun r : ℝ => μ (closedBall x r) / μ ({ x } + r • u)) (𝓝[>] 0) (𝓝 (μ (closedBall x 1) / μ ({ x } + u))) :=
  by
  apply tendsto_const_nhds.congr' _
  filter_upwards [self_mem_nhdsWithin]
  rintro r (rpos : 0 < r)
  have : closedBall x r = { x } + r • closedBall (0 : E) 1 := by
    simp only [_root_.smul_closedBall, Real.norm_of_nonneg rpos.le, zero_le_one, add_zero, mul_one,
      singleton_add_closedBall, smul_zero]
  simp only [this, addHaar_singleton_add_smul_div_singleton_add_smul μ rpos.ne']
  simp only [addHaar_closedBall_center, image_add_left, measure_preimage_add, singleton_add]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
[PROOFSTEP]
apply tendsto_const_nhds.congr' _
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ (fun x_1 => ↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)) =ᶠ[𝓝[Ioi 0] 0] fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)
[PROOFSTEP]
filter_upwards [self_mem_nhdsWithin]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ ∀ (a : ℝ), a ∈ Ioi 0 → ↑↑μ (closedBall x 1) / ↑↑μ ({x} + u) = ↑↑μ (closedBall x a) / ↑↑μ ({x} + a • u)
[PROOFSTEP]
rintro r (rpos : 0 < r)
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : 0 < r
⊢ ↑↑μ (closedBall x 1) / ↑↑μ ({x} + u) = ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)
[PROOFSTEP]
have : closedBall x r = { x } + r • closedBall (0 : E) 1 := by
  simp only [_root_.smul_closedBall, Real.norm_of_nonneg rpos.le, zero_le_one, add_zero, mul_one,
    singleton_add_closedBall, smul_zero]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : 0 < r
⊢ closedBall x r = {x} + r • closedBall 0 1
[PROOFSTEP]
simp only [_root_.smul_closedBall, Real.norm_of_nonneg rpos.le, zero_le_one, add_zero, mul_one,
  singleton_add_closedBall, smul_zero]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : 0 < r
this : closedBall x r = {x} + r • closedBall 0 1
⊢ ↑↑μ (closedBall x 1) / ↑↑μ ({x} + u) = ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)
[PROOFSTEP]
simp only [this, addHaar_singleton_add_smul_div_singleton_add_smul μ rpos.ne']
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : 0 < r
this : closedBall x r = {x} + r • closedBall 0 1
⊢ ↑↑μ (closedBall x 1) / ↑↑μ ({x} + u) = ↑↑μ (closedBall 0 1) / ↑↑μ u
[PROOFSTEP]
simp only [addHaar_closedBall_center, image_add_left, measure_preimage_add, singleton_add]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
have C :
  Tendsto (fun r : ℝ => μ (s ∩ ({ x } + r • t)) / μ (closedBall x r) * (μ (closedBall x r) / μ ({ x } + r • u)))
    (𝓝[>] 0) (𝓝 (0 * (μ (closedBall x 1) / μ ({ x } + u)))) :=
  by
  apply ENNReal.Tendsto.mul A _ B (Or.inr ENNReal.zero_ne_top)
  simp only [ne_eq, not_true, singleton_add, image_add_left, measure_preimage_add, false_or, ENNReal.div_eq_top, h'u,
    false_or_iff, not_and, and_false_iff]
  intro aux
  exact (measure_closedBall_lt_top.ne aux).elim
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)))
    (𝓝[Ioi 0] 0) (𝓝 (0 * (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u))))
[PROOFSTEP]
apply ENNReal.Tendsto.mul A _ B (Or.inr ENNReal.zero_ne_top)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
⊢ 0 ≠ 0 ∨ ↑↑μ (closedBall x 1) / ↑↑μ ({x} + u) ≠ ⊤
[PROOFSTEP]
simp only [ne_eq, not_true, singleton_add, image_add_left, measure_preimage_add, false_or, ENNReal.div_eq_top, h'u,
  false_or_iff, not_and, and_false_iff]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
⊢ ↑↑μ (closedBall x 1) = ⊤ → ¬¬↑↑μ u = ⊤
[PROOFSTEP]
intro aux
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
aux : ↑↑μ (closedBall x 1) = ⊤
⊢ ¬¬↑↑μ u = ⊤
[PROOFSTEP]
exact (measure_closedBall_lt_top.ne aux).elim
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
C :
  Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)))
    (𝓝[Ioi 0] 0) (𝓝 (0 * (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u))))
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
simp only [zero_mul] at C
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
C :
  Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)))
    (𝓝[Ioi 0] 0) (𝓝 0)
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
apply C.congr' _
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
C :
  Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)))
    (𝓝[Ioi 0] 0) (𝓝 0)
⊢ (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u))) =ᶠ[𝓝[Ioi 0] 0]
    fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)
[PROOFSTEP]
filter_upwards [self_mem_nhdsWithin]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
C :
  Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)))
    (𝓝[Ioi 0] 0) (𝓝 0)
⊢ ∀ (a : ℝ),
    a ∈ Ioi 0 →
      ↑↑μ (s ∩ ({x} + a • t)) / ↑↑μ (closedBall x a) * (↑↑μ (closedBall x a) / ↑↑μ ({x} + a • u)) =
        ↑↑μ (s ∩ ({x} + a • t)) / ↑↑μ ({x} + a • u)
[PROOFSTEP]
rintro r (rpos : 0 < r)
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
C :
  Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)))
    (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : 0 < r
⊢ ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) =
    ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)
[PROOFSTEP]
calc
  μ (s ∩ ({ x } + r • t)) / μ (closedBall x r) * (μ (closedBall x r) / μ ({ x } + r • u)) =
      μ (closedBall x r) * (μ (closedBall x r))⁻¹ * (μ (s ∩ ({ x } + r • t)) / μ ({ x } + r • u)) :=
    by simp only [div_eq_mul_inv]; ring
  _ = μ (s ∩ ({ x } + r • t)) / μ ({ x } + r • u) := by
    rw [ENNReal.mul_inv_cancel (measure_closedBall_pos μ x rpos).ne' measure_closedBall_lt_top.ne, one_mul]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
C :
  Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)))
    (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : 0 < r
⊢ ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) =
    ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r))⁻¹ * (↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u))
[PROOFSTEP]
simp only [div_eq_mul_inv]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
C :
  Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)))
    (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : 0 < r
⊢ ↑↑μ (s ∩ ({x} + r • t)) * (↑↑μ (closedBall x r))⁻¹ * (↑↑μ (closedBall x r) * (↑↑μ ({x} + r • u))⁻¹) =
    ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r))⁻¹ * (↑↑μ (s ∩ ({x} + r • t)) * (↑↑μ ({x} + r • u))⁻¹)
[PROOFSTEP]
ring
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
t_bound : t ⊆ closedBall 0 1
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 (↑↑μ (closedBall x 1) / ↑↑μ ({x} + u)))
C :
  Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r) / ↑↑μ ({x} + r • u)))
    (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : 0 < r
⊢ ↑↑μ (closedBall x r) * (↑↑μ (closedBall x r))⁻¹ * (↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)) =
    ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)
[PROOFSTEP]
rw [ENNReal.mul_inv_cancel (measure_closedBall_pos μ x rpos).ne' measure_closedBall_lt_top.ne, one_mul]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
set t' := R⁻¹ • t with ht'
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
set u' := R⁻¹ • u with hu'
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
have A : Tendsto (fun r : ℝ => μ (s ∩ ({ x } + r • t')) / μ ({ x } + r • u')) (𝓝[>] 0) (𝓝 0) :=
  by
  apply tendsto_addHaar_inter_smul_zero_of_density_zero_aux1 μ s x h t' u'
  ·
    simp only [h'u, (pow_pos Rpos _).ne', abs_nonpos_iff, addHaar_smul, not_false_iff, ENNReal.ofReal_eq_zero,
      inv_eq_zero, inv_pow, Ne.def, or_self_iff, mul_eq_zero]
  · refine (smul_set_mono t_bound).trans_eq ?_
    rw [smul_closedBall _ _ Rpos.le, smul_zero, Real.norm_of_nonneg (inv_nonneg.2 Rpos.le), inv_mul_cancel Rpos.ne']
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
apply tendsto_addHaar_inter_smul_zero_of_density_zero_aux1 μ s x h t' u'
[GOAL]
case h'u
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
⊢ ↑↑μ u' ≠ 0
[PROOFSTEP]
simp only [h'u, (pow_pos Rpos _).ne', abs_nonpos_iff, addHaar_smul, not_false_iff, ENNReal.ofReal_eq_zero, inv_eq_zero,
  inv_pow, Ne.def, or_self_iff, mul_eq_zero]
[GOAL]
case t_bound
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
⊢ t' ⊆ closedBall 0 1
[PROOFSTEP]
refine (smul_set_mono t_bound).trans_eq ?_
[GOAL]
case t_bound
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
⊢ R⁻¹ • closedBall 0 R = closedBall 0 1
[PROOFSTEP]
rw [smul_closedBall _ _ Rpos.le, smul_zero, Real.norm_of_nonneg (inv_nonneg.2 Rpos.le), inv_mul_cancel Rpos.ne']
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
have B : Tendsto (fun r : ℝ => R * r) (𝓝[>] 0) (𝓝[>] (R * 0)) :=
  by
  apply tendsto_nhdsWithin_of_tendsto_nhds_of_eventually_within
  · exact (tendsto_const_nhds.mul tendsto_id).mono_left nhdsWithin_le_nhds
  · filter_upwards [self_mem_nhdsWithin]
    intro r rpos
    rw [mul_zero]
    exact mul_pos Rpos rpos
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ Tendsto (fun r => R * r) (𝓝[Ioi 0] 0) (𝓝[Ioi (R * 0)] (R * 0))
[PROOFSTEP]
apply tendsto_nhdsWithin_of_tendsto_nhds_of_eventually_within
[GOAL]
case h1
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ Tendsto (fun r => R * r) (𝓝[Ioi 0] 0) (𝓝 (R * 0))
[PROOFSTEP]
exact (tendsto_const_nhds.mul tendsto_id).mono_left nhdsWithin_le_nhds
[GOAL]
case h2
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ ∀ᶠ (x : ℝ) in 𝓝[Ioi 0] 0, R * x ∈ Ioi (R * 0)
[PROOFSTEP]
filter_upwards [self_mem_nhdsWithin]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ ∀ (a : ℝ), a ∈ Ioi 0 → R * a ∈ Ioi (R * 0)
[PROOFSTEP]
intro r rpos
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : r ∈ Ioi 0
⊢ R * r ∈ Ioi (R * 0)
[PROOFSTEP]
rw [mul_zero]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : r ∈ Ioi 0
⊢ R * r ∈ Ioi 0
[PROOFSTEP]
exact mul_pos Rpos rpos
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => R * r) (𝓝[Ioi 0] 0) (𝓝[Ioi (R * 0)] (R * 0))
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
rw [mul_zero] at B
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => R * r) (𝓝[Ioi 0] 0) (𝓝[Ioi 0] 0)
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
apply (A.comp B).congr' _
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => R * r) (𝓝[Ioi 0] 0) (𝓝[Ioi 0] 0)
⊢ ((fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) ∘ fun r => R * r) =ᶠ[𝓝[Ioi 0] 0] fun r =>
    ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)
[PROOFSTEP]
filter_upwards [self_mem_nhdsWithin]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => R * r) (𝓝[Ioi 0] 0) (𝓝[Ioi 0] 0)
⊢ ∀ (a : ℝ),
    a ∈ Ioi 0 →
      ((fun r => ↑↑μ (s ∩ ({x} + r • R⁻¹ • t)) / ↑↑μ ({x} + r • R⁻¹ • u)) ∘ fun r => R * r) a =
        ↑↑μ (s ∩ ({x} + a • t)) / ↑↑μ ({x} + a • u)
[PROOFSTEP]
rintro r -
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => R * r) (𝓝[Ioi 0] 0) (𝓝[Ioi 0] 0)
r : ℝ
⊢ ((fun r => ↑↑μ (s ∩ ({x} + r • R⁻¹ • t)) / ↑↑μ ({x} + r • R⁻¹ • u)) ∘ fun r => R * r) r =
    ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)
[PROOFSTEP]
have T : (R * r) • t' = r • t := by rw [mul_comm, ht', smul_smul, mul_assoc, mul_inv_cancel Rpos.ne', mul_one]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => R * r) (𝓝[Ioi 0] 0) (𝓝[Ioi 0] 0)
r : ℝ
⊢ (R * r) • t' = r • t
[PROOFSTEP]
rw [mul_comm, ht', smul_smul, mul_assoc, mul_inv_cancel Rpos.ne', mul_one]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => R * r) (𝓝[Ioi 0] 0) (𝓝[Ioi 0] 0)
r : ℝ
T : (R * r) • t' = r • t
⊢ ((fun r => ↑↑μ (s ∩ ({x} + r • R⁻¹ • t)) / ↑↑μ ({x} + r • R⁻¹ • u)) ∘ fun r => R * r) r =
    ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)
[PROOFSTEP]
have U : (R * r) • u' = r • u := by rw [mul_comm, hu', smul_smul, mul_assoc, mul_inv_cancel Rpos.ne', mul_one]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => R * r) (𝓝[Ioi 0] 0) (𝓝[Ioi 0] 0)
r : ℝ
T : (R * r) • t' = r • t
⊢ (R * r) • u' = r • u
[PROOFSTEP]
rw [mul_comm, hu', smul_smul, mul_assoc, mul_inv_cancel Rpos.ne', mul_one]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => R * r) (𝓝[Ioi 0] 0) (𝓝[Ioi 0] 0)
r : ℝ
T : (R * r) • t' = r • t
U : (R * r) • u' = r • u
⊢ ((fun r => ↑↑μ (s ∩ ({x} + r • R⁻¹ • t)) / ↑↑μ ({x} + r • R⁻¹ • u)) ∘ fun r => R * r) r =
    ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)
[PROOFSTEP]
dsimp
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t u : Set E
h'u : ↑↑μ u ≠ 0
R : ℝ
Rpos : 0 < R
t_bound : t ⊆ closedBall 0 R
t' : Set E := R⁻¹ • t
ht' : t' = R⁻¹ • t
u' : Set E := R⁻¹ • u
hu' : u' = R⁻¹ • u
A : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • u')) (𝓝[Ioi 0] 0) (𝓝 0)
B : Tendsto (fun r => R * r) (𝓝[Ioi 0] 0) (𝓝[Ioi 0] 0)
r : ℝ
T : (R * r) • t' = r • t
U : (R * r) • u' = r • u
⊢ ↑↑μ (s ∩ ({x} + (R * r) • R⁻¹ • t)) / ↑↑μ ({x} + (R * r) • R⁻¹ • u) = ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • u)
[PROOFSTEP]
rw [T, U]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
refine' tendsto_order.2 ⟨fun a' ha' => (ENNReal.not_lt_zero ha').elim, fun ε (εpos : 0 < ε) => _⟩
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0, ↑↑μ (s ∩ ({x} + b • t)) / ↑↑μ ({x} + b • t) < ε
[PROOFSTEP]
rcases eq_or_ne (μ t) 0 with (h't | h't)
[GOAL]
case inl
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0, ↑↑μ (s ∩ ({x} + b • t)) / ↑↑μ ({x} + b • t) < ε
[PROOFSTEP]
apply eventually_of_forall fun r => ?_
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
r : ℝ
⊢ ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t) < ε
[PROOFSTEP]
suffices H : μ (s ∩ ({ x } + r • t)) = 0
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
r : ℝ
H : ↑↑μ (s ∩ ({x} + r • t)) = 0
⊢ ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t) < ε
[PROOFSTEP]
rw [H]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
r : ℝ
H : ↑↑μ (s ∩ ({x} + r • t)) = 0
⊢ 0 / ↑↑μ ({x} + r • t) < ε
[PROOFSTEP]
simpa only [ENNReal.zero_div] using εpos
[GOAL]
case H
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
r : ℝ
⊢ ↑↑μ (s ∩ ({x} + r • t)) = 0
[PROOFSTEP]
apply le_antisymm _ (zero_le _)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
r : ℝ
⊢ ↑↑μ (s ∩ ({x} + r • t)) ≤ 0
[PROOFSTEP]
calc
  μ (s ∩ ({ x } + r • t)) ≤ μ ({ x } + r • t) := measure_mono (inter_subset_right _ _)
  _ = 0 := by simp only [h't, addHaar_smul, image_add_left, measure_preimage_add, singleton_add, mul_zero]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
r : ℝ
⊢ ↑↑μ ({x} + r • t) = 0
[PROOFSTEP]
simp only [h't, addHaar_smul, image_add_left, measure_preimage_add, singleton_add, mul_zero]
[GOAL]
case inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0, ↑↑μ (s ∩ ({x} + b • t)) / ↑↑μ ({x} + b • t) < ε
[PROOFSTEP]
obtain ⟨n, npos, hn⟩ : ∃ n : ℕ, 0 < n ∧ μ (t \ closedBall 0 n) < ε / 2 * μ t :=
  by
  have A : Tendsto (fun n : ℕ => μ (t \ closedBall 0 n)) atTop (𝓝 (μ (⋂ n : ℕ, t \ closedBall 0 n))) :=
    by
    have N : ∃ n : ℕ, μ (t \ closedBall 0 n) ≠ ∞ := ⟨0, ((measure_mono (diff_subset t _)).trans_lt h''t.lt_top).ne⟩
    refine' tendsto_measure_iInter (fun n ↦ ht.diff measurableSet_closedBall) (fun m n hmn ↦ _) N
    exact diff_subset_diff Subset.rfl (closedBall_subset_closedBall (Nat.cast_le.2 hmn))
  have : ⋂ n : ℕ, t \ closedBall 0 n = ∅ := by
    simp_rw [diff_eq, ← inter_iInter, iInter_eq_compl_iUnion_compl, compl_compl, iUnion_closedBall_nat, compl_univ,
      inter_empty]
  simp only [this, measure_empty] at A
  have I : 0 < ε / 2 * μ t := ENNReal.mul_pos (ENNReal.half_pos εpos.ne').ne' h't
  exact (Eventually.and (Ioi_mem_atTop 0) ((tendsto_order.1 A).2 _ I)).exists
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
⊢ ∃ n, 0 < n ∧ ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
[PROOFSTEP]
have A : Tendsto (fun n : ℕ => μ (t \ closedBall 0 n)) atTop (𝓝 (μ (⋂ n : ℕ, t \ closedBall 0 n))) :=
  by
  have N : ∃ n : ℕ, μ (t \ closedBall 0 n) ≠ ∞ := ⟨0, ((measure_mono (diff_subset t _)).trans_lt h''t.lt_top).ne⟩
  refine' tendsto_measure_iInter (fun n ↦ ht.diff measurableSet_closedBall) (fun m n hmn ↦ _) N
  exact diff_subset_diff Subset.rfl (closedBall_subset_closedBall (Nat.cast_le.2 hmn))
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
⊢ Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 (↑↑μ (⋂ (n : ℕ), t \ closedBall 0 ↑n)))
[PROOFSTEP]
have N : ∃ n : ℕ, μ (t \ closedBall 0 n) ≠ ∞ := ⟨0, ((measure_mono (diff_subset t _)).trans_lt h''t.lt_top).ne⟩
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
N : ∃ n, ↑↑μ (t \ closedBall 0 ↑n) ≠ ⊤
⊢ Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 (↑↑μ (⋂ (n : ℕ), t \ closedBall 0 ↑n)))
[PROOFSTEP]
refine' tendsto_measure_iInter (fun n ↦ ht.diff measurableSet_closedBall) (fun m n hmn ↦ _) N
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
N : ∃ n, ↑↑μ (t \ closedBall 0 ↑n) ≠ ⊤
m n : ℕ
hmn : m ≤ n
⊢ t \ closedBall 0 ↑n ≤ t \ closedBall 0 ↑m
[PROOFSTEP]
exact diff_subset_diff Subset.rfl (closedBall_subset_closedBall (Nat.cast_le.2 hmn))
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
A : Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 (↑↑μ (⋂ (n : ℕ), t \ closedBall 0 ↑n)))
⊢ ∃ n, 0 < n ∧ ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
[PROOFSTEP]
have : ⋂ n : ℕ, t \ closedBall 0 n = ∅ := by
  simp_rw [diff_eq, ← inter_iInter, iInter_eq_compl_iUnion_compl, compl_compl, iUnion_closedBall_nat, compl_univ,
    inter_empty]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
A : Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 (↑↑μ (⋂ (n : ℕ), t \ closedBall 0 ↑n)))
⊢ ⋂ (n : ℕ), t \ closedBall 0 ↑n = ∅
[PROOFSTEP]
simp_rw [diff_eq, ← inter_iInter, iInter_eq_compl_iUnion_compl, compl_compl, iUnion_closedBall_nat, compl_univ,
  inter_empty]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
A : Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 (↑↑μ (⋂ (n : ℕ), t \ closedBall 0 ↑n)))
this : ⋂ (n : ℕ), t \ closedBall 0 ↑n = ∅
⊢ ∃ n, 0 < n ∧ ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
[PROOFSTEP]
simp only [this, measure_empty] at A
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
this : ⋂ (n : ℕ), t \ closedBall 0 ↑n = ∅
A : Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 0)
⊢ ∃ n, 0 < n ∧ ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
[PROOFSTEP]
have I : 0 < ε / 2 * μ t := ENNReal.mul_pos (ENNReal.half_pos εpos.ne').ne' h't
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
this : ⋂ (n : ℕ), t \ closedBall 0 ↑n = ∅
A : Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 0)
I : 0 < ε / 2 * ↑↑μ t
⊢ ∃ n, 0 < n ∧ ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
[PROOFSTEP]
exact (Eventually.and (Ioi_mem_atTop 0) ((tendsto_order.1 A).2 _ I)).exists
[GOAL]
case inr.intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0, ↑↑μ (s ∩ ({x} + b • t)) / ↑↑μ ({x} + b • t) < ε
[PROOFSTEP]
have L : Tendsto (fun r : ℝ => μ (s ∩ ({ x } + r • (t ∩ closedBall 0 n))) / μ ({ x } + r • t)) (𝓝[>] 0) (𝓝 0) :=
  tendsto_addHaar_inter_smul_zero_of_density_zero_aux2 μ s x h _ t h't n (Nat.cast_pos.2 npos) (inter_subset_right _ _)
[GOAL]
case inr.intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0, ↑↑μ (s ∩ ({x} + b • t)) / ↑↑μ ({x} + b • t) < ε
[PROOFSTEP]
filter_upwards [(tendsto_order.1 L).2 _ (ENNReal.half_pos εpos.ne'), self_mem_nhdsWithin]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ ∀ (a : ℝ),
    ↑↑μ (s ∩ ({x} + a • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + a • t) < ε / 2 →
      a ∈ Ioi 0 → ↑↑μ (s ∩ ({x} + a • t)) / ↑↑μ ({x} + a • t) < ε
[PROOFSTEP]
rintro r hr (rpos : 0 < r)
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
hr : ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) < ε / 2
rpos : 0 < r
⊢ ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t) < ε
[PROOFSTEP]
have I : μ (s ∩ ({ x } + r • t)) ≤ μ (s ∩ ({ x } + r • (t ∩ closedBall 0 n))) + μ ({ x } + r • (t \ closedBall 0 n)) :=
  calc
    μ (s ∩ ({ x } + r • t)) = μ (s ∩ ({ x } + r • (t ∩ closedBall 0 n)) ∪ s ∩ ({ x } + r • (t \ closedBall 0 n))) := by
      rw [← inter_union_distrib_left, ← add_union, ← smul_set_union, inter_union_diff]
    _ ≤ μ (s ∩ ({ x } + r • (t ∩ closedBall 0 n))) + μ (s ∩ ({ x } + r • (t \ closedBall 0 n))) :=
      (measure_union_le _ _)
    _ ≤ μ (s ∩ ({ x } + r • (t ∩ closedBall 0 n))) + μ ({ x } + r • (t \ closedBall 0 n)) :=
      add_le_add le_rfl (measure_mono (inter_subset_right _ _))
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
hr : ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) < ε / 2
rpos : 0 < r
⊢ ↑↑μ (s ∩ ({x} + r • t)) = ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n)) ∪ s ∩ ({x} + r • (t \ closedBall 0 ↑n)))
[PROOFSTEP]
rw [← inter_union_distrib_left, ← add_union, ← smul_set_union, inter_union_diff]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
hr : ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) < ε / 2
rpos : 0 < r
I : ↑↑μ (s ∩ ({x} + r • t)) ≤ ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) + ↑↑μ ({x} + r • (t \ closedBall 0 ↑n))
⊢ ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t) < ε
[PROOFSTEP]
calc
  μ (s ∩ ({ x } + r • t)) / μ ({ x } + r • t) ≤
      (μ (s ∩ ({ x } + r • (t ∩ closedBall 0 n))) + μ ({ x } + r • (t \ closedBall 0 n))) / μ ({ x } + r • t) :=
    mul_le_mul_right' I _
  _ < ε / 2 + ε / 2 := by
    rw [ENNReal.add_div]
    apply ENNReal.add_lt_add hr _
    rwa [addHaar_singleton_add_smul_div_singleton_add_smul μ rpos.ne', ENNReal.div_lt_iff (Or.inl h't) (Or.inl h''t)]
  _ = ε := ENNReal.add_halves _
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
hr : ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) < ε / 2
rpos : 0 < r
I : ↑↑μ (s ∩ ({x} + r • t)) ≤ ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) + ↑↑μ ({x} + r • (t \ closedBall 0 ↑n))
⊢ (↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) + ↑↑μ ({x} + r • (t \ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) <
    ε / 2 + ε / 2
[PROOFSTEP]
rw [ENNReal.add_div]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
hr : ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) < ε / 2
rpos : 0 < r
I : ↑↑μ (s ∩ ({x} + r • t)) ≤ ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) + ↑↑μ ({x} + r • (t \ closedBall 0 ↑n))
⊢ ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) +
      ↑↑μ ({x} + r • (t \ closedBall 0 ↑n)) / ↑↑μ ({x} + r • t) <
    ε / 2 + ε / 2
[PROOFSTEP]
apply ENNReal.add_lt_add hr _
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
hr : ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) < ε / 2
rpos : 0 < r
I : ↑↑μ (s ∩ ({x} + r • t)) ≤ ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) + ↑↑μ ({x} + r • (t \ closedBall 0 ↑n))
⊢ ↑↑μ ({x} + r • (t \ closedBall 0 ↑n)) / ↑↑μ ({x} + r • t) < ε / 2
[PROOFSTEP]
rwa [addHaar_singleton_add_smul_div_singleton_add_smul μ rpos.ne', ENNReal.div_lt_iff (Or.inl h't) (Or.inl h''t)]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
have I : ∀ u v, μ u ≠ 0 → μ u ≠ ∞ → MeasurableSet v → μ u / μ u - μ (vᶜ ∩ u) / μ u = μ (v ∩ u) / μ u :=
  by
  intro u v uzero utop vmeas
  simp_rw [div_eq_mul_inv]
  rw [← ENNReal.sub_mul]; swap
  · simp only [uzero, ENNReal.inv_eq_top, imp_true_iff, Ne.def, not_false_iff]
  congr 1
  apply ENNReal.sub_eq_of_add_eq (ne_top_of_le_ne_top utop (measure_mono (inter_subset_right _ _)))
  rw [inter_comm _ u, inter_comm _ u]
  exact measure_inter_add_diff u vmeas
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
⊢ ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
[PROOFSTEP]
intro u v uzero utop vmeas
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
u v : Set E
uzero : ↑↑μ u ≠ 0
utop : ↑↑μ u ≠ ⊤
vmeas : MeasurableSet v
⊢ ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
[PROOFSTEP]
simp_rw [div_eq_mul_inv]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
u v : Set E
uzero : ↑↑μ u ≠ 0
utop : ↑↑μ u ≠ ⊤
vmeas : MeasurableSet v
⊢ ↑↑μ u * (↑↑μ u)⁻¹ - ↑↑μ (vᶜ ∩ u) * (↑↑μ u)⁻¹ = ↑↑μ (v ∩ u) * (↑↑μ u)⁻¹
[PROOFSTEP]
rw [← ENNReal.sub_mul]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
u v : Set E
uzero : ↑↑μ u ≠ 0
utop : ↑↑μ u ≠ ⊤
vmeas : MeasurableSet v
⊢ (↑↑μ u - ↑↑μ (vᶜ ∩ u)) * (↑↑μ u)⁻¹ = ↑↑μ (v ∩ u) * (↑↑μ u)⁻¹
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
u v : Set E
uzero : ↑↑μ u ≠ 0
utop : ↑↑μ u ≠ ⊤
vmeas : MeasurableSet v
⊢ 0 < ↑↑μ (vᶜ ∩ u) → ↑↑μ (vᶜ ∩ u) < ↑↑μ u → (↑↑μ u)⁻¹ ≠ ⊤
[PROOFSTEP]
swap
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
u v : Set E
uzero : ↑↑μ u ≠ 0
utop : ↑↑μ u ≠ ⊤
vmeas : MeasurableSet v
⊢ 0 < ↑↑μ (vᶜ ∩ u) → ↑↑μ (vᶜ ∩ u) < ↑↑μ u → (↑↑μ u)⁻¹ ≠ ⊤
[PROOFSTEP]
simp only [uzero, ENNReal.inv_eq_top, imp_true_iff, Ne.def, not_false_iff]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
u v : Set E
uzero : ↑↑μ u ≠ 0
utop : ↑↑μ u ≠ ⊤
vmeas : MeasurableSet v
⊢ (↑↑μ u - ↑↑μ (vᶜ ∩ u)) * (↑↑μ u)⁻¹ = ↑↑μ (v ∩ u) * (↑↑μ u)⁻¹
[PROOFSTEP]
congr 1
[GOAL]
case e_a
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
u v : Set E
uzero : ↑↑μ u ≠ 0
utop : ↑↑μ u ≠ ⊤
vmeas : MeasurableSet v
⊢ ↑↑μ u - ↑↑μ (vᶜ ∩ u) = ↑↑μ (v ∩ u)
[PROOFSTEP]
apply ENNReal.sub_eq_of_add_eq (ne_top_of_le_ne_top utop (measure_mono (inter_subset_right _ _)))
[GOAL]
case e_a
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
u v : Set E
uzero : ↑↑μ u ≠ 0
utop : ↑↑μ u ≠ ⊤
vmeas : MeasurableSet v
⊢ ↑↑μ (v ∩ u) + ↑↑μ (vᶜ ∩ u) = ↑↑μ u
[PROOFSTEP]
rw [inter_comm _ u, inter_comm _ u]
[GOAL]
case e_a
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
u v : Set E
uzero : ↑↑μ u ≠ 0
utop : ↑↑μ u ≠ ⊤
vmeas : MeasurableSet v
⊢ ↑↑μ (u ∩ v) + ↑↑μ (u ∩ vᶜ) = ↑↑μ u
[PROOFSTEP]
exact measure_inter_add_diff u vmeas
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
have L : Tendsto (fun r => μ (sᶜ ∩ closedBall x r) / μ (closedBall x r)) (𝓝[>] 0) (𝓝 0) :=
  by
  have A : Tendsto (fun r => μ (closedBall x r) / μ (closedBall x r)) (𝓝[>] 0) (𝓝 1) :=
    by
    apply tendsto_const_nhds.congr' _
    filter_upwards [self_mem_nhdsWithin]
    intro r hr
    rw [div_eq_mul_inv, ENNReal.mul_inv_cancel]
    · exact (measure_closedBall_pos μ _ hr).ne'
    · exact measure_closedBall_lt_top.ne
  have B := ENNReal.Tendsto.sub A h (Or.inl ENNReal.one_ne_top)
  simp only [tsub_self] at B
  apply B.congr' _
  filter_upwards [self_mem_nhdsWithin]
  rintro r (rpos : 0 < r)
  convert I (closedBall x r) sᶜ (measure_closedBall_pos μ _ rpos).ne' measure_closedBall_lt_top.ne hs.compl
  rw [compl_compl]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
⊢ Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
have A : Tendsto (fun r => μ (closedBall x r) / μ (closedBall x r)) (𝓝[>] 0) (𝓝 1) :=
  by
  apply tendsto_const_nhds.congr' _
  filter_upwards [self_mem_nhdsWithin]
  intro r hr
  rw [div_eq_mul_inv, ENNReal.mul_inv_cancel]
  · exact (measure_closedBall_pos μ _ hr).ne'
  · exact measure_closedBall_lt_top.ne
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
⊢ Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
apply tendsto_const_nhds.congr' _
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
⊢ (fun x => 1) =ᶠ[𝓝[Ioi 0] 0] fun r => ↑↑μ (closedBall x r) / ↑↑μ (closedBall x r)
[PROOFSTEP]
filter_upwards [self_mem_nhdsWithin]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
⊢ ∀ (a : ℝ), a ∈ Ioi 0 → 1 = ↑↑μ (closedBall x a) / ↑↑μ (closedBall x a)
[PROOFSTEP]
intro r hr
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
r : ℝ
hr : r ∈ Ioi 0
⊢ 1 = ↑↑μ (closedBall x r) / ↑↑μ (closedBall x r)
[PROOFSTEP]
rw [div_eq_mul_inv, ENNReal.mul_inv_cancel]
[GOAL]
case h.h0
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
r : ℝ
hr : r ∈ Ioi 0
⊢ ↑↑μ (closedBall x r) ≠ 0
[PROOFSTEP]
exact (measure_closedBall_pos μ _ hr).ne'
[GOAL]
case h.ht
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
r : ℝ
hr : r ∈ Ioi 0
⊢ ↑↑μ (closedBall x r) ≠ ⊤
[PROOFSTEP]
exact measure_closedBall_lt_top.ne
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
A : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
⊢ Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
have B := ENNReal.Tendsto.sub A h (Or.inl ENNReal.one_ne_top)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
A : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
B :
  Tendsto (fun a => ↑↑μ (closedBall x a) / ↑↑μ (closedBall x a) - ↑↑μ (s ∩ closedBall x a) / ↑↑μ (closedBall x a))
    (𝓝[Ioi 0] 0) (𝓝 (1 - 1))
⊢ Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
simp only [tsub_self] at B
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
A : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
B :
  Tendsto (fun a => ↑↑μ (closedBall x a) / ↑↑μ (closedBall x a) - ↑↑μ (s ∩ closedBall x a) / ↑↑μ (closedBall x a))
    (𝓝[Ioi 0] 0) (𝓝 0)
⊢ Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
[PROOFSTEP]
apply B.congr' _
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
A : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
B :
  Tendsto (fun a => ↑↑μ (closedBall x a) / ↑↑μ (closedBall x a) - ↑↑μ (s ∩ closedBall x a) / ↑↑μ (closedBall x a))
    (𝓝[Ioi 0] 0) (𝓝 0)
⊢ (fun a =>
      ↑↑μ (closedBall x a) / ↑↑μ (closedBall x a) - ↑↑μ (s ∩ closedBall x a) / ↑↑μ (closedBall x a)) =ᶠ[𝓝[Ioi 0] 0]
    fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)
[PROOFSTEP]
filter_upwards [self_mem_nhdsWithin]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
A : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
B :
  Tendsto (fun a => ↑↑μ (closedBall x a) / ↑↑μ (closedBall x a) - ↑↑μ (s ∩ closedBall x a) / ↑↑μ (closedBall x a))
    (𝓝[Ioi 0] 0) (𝓝 0)
⊢ ∀ (a : ℝ),
    a ∈ Ioi 0 →
      ↑↑μ (closedBall x a) / ↑↑μ (closedBall x a) - ↑↑μ (s ∩ closedBall x a) / ↑↑μ (closedBall x a) =
        ↑↑μ (sᶜ ∩ closedBall x a) / ↑↑μ (closedBall x a)
[PROOFSTEP]
rintro r (rpos : 0 < r)
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
A : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
B :
  Tendsto (fun a => ↑↑μ (closedBall x a) / ↑↑μ (closedBall x a) - ↑↑μ (s ∩ closedBall x a) / ↑↑μ (closedBall x a))
    (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : 0 < r
⊢ ↑↑μ (closedBall x r) / ↑↑μ (closedBall x r) - ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r) =
    ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)
[PROOFSTEP]
convert I (closedBall x r) sᶜ (measure_closedBall_pos μ _ rpos).ne' measure_closedBall_lt_top.ne hs.compl
[GOAL]
case h.e'_2.h.e'_6.h.e'_5.h.e'_3.h.e'_3
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
A : Tendsto (fun r => ↑↑μ (closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
B :
  Tendsto (fun a => ↑↑μ (closedBall x a) / ↑↑μ (closedBall x a) - ↑↑μ (s ∩ closedBall x a) / ↑↑μ (closedBall x a))
    (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : 0 < r
⊢ s = sᶜᶜ
[PROOFSTEP]
rw [compl_compl]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
have L' : Tendsto (fun r : ℝ => μ (sᶜ ∩ ({ x } + r • t)) / μ ({ x } + r • t)) (𝓝[>] 0) (𝓝 0) :=
  tendsto_addHaar_inter_smul_zero_of_density_zero μ sᶜ x L t ht h''t
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
have L'' : Tendsto (fun r : ℝ => μ ({ x } + r • t) / μ ({ x } + r • t)) (𝓝[>] 0) (𝓝 1) :=
  by
  apply tendsto_const_nhds.congr' _
  filter_upwards [self_mem_nhdsWithin]
  rintro r (rpos : 0 < r)
  rw [addHaar_singleton_add_smul_div_singleton_add_smul μ rpos.ne', ENNReal.div_self h't h''t]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ Tendsto (fun r => ↑↑μ ({x} + r • t) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
apply tendsto_const_nhds.congr' _
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ (fun x => 1) =ᶠ[𝓝[Ioi 0] 0] fun r => ↑↑μ ({x} + r • t) / ↑↑μ ({x} + r • t)
[PROOFSTEP]
filter_upwards [self_mem_nhdsWithin]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ ∀ (a : ℝ), a ∈ Ioi 0 → 1 = ↑↑μ ({x} + a • t) / ↑↑μ ({x} + a • t)
[PROOFSTEP]
rintro r (rpos : 0 < r)
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
rpos : 0 < r
⊢ 1 = ↑↑μ ({x} + r • t) / ↑↑μ ({x} + r • t)
[PROOFSTEP]
rw [addHaar_singleton_add_smul_div_singleton_add_smul μ rpos.ne', ENNReal.div_self h't h''t]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
L'' : Tendsto (fun r => ↑↑μ ({x} + r • t) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
have := ENNReal.Tendsto.sub L'' L' (Or.inl ENNReal.one_ne_top)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
L'' : Tendsto (fun r => ↑↑μ ({x} + r • t) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
this :
  Tendsto (fun a => ↑↑μ ({x} + a • t) / ↑↑μ ({x} + a • t) - ↑↑μ (sᶜ ∩ ({x} + a • t)) / ↑↑μ ({x} + a • t)) (𝓝[Ioi 0] 0)
    (𝓝 (1 - 0))
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
simp only [tsub_zero] at this
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
L'' : Tendsto (fun r => ↑↑μ ({x} + r • t) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
this :
  Tendsto (fun a => ↑↑μ ({x} + a • t) / ↑↑μ ({x} + a • t) - ↑↑μ (sᶜ ∩ ({x} + a • t)) / ↑↑μ ({x} + a • t)) (𝓝[Ioi 0] 0)
    (𝓝 1)
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
apply this.congr' _
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
L'' : Tendsto (fun r => ↑↑μ ({x} + r • t) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
this :
  Tendsto (fun a => ↑↑μ ({x} + a • t) / ↑↑μ ({x} + a • t) - ↑↑μ (sᶜ ∩ ({x} + a • t)) / ↑↑μ ({x} + a • t)) (𝓝[Ioi 0] 0)
    (𝓝 1)
⊢ (fun a => ↑↑μ ({x} + a • t) / ↑↑μ ({x} + a • t) - ↑↑μ (sᶜ ∩ ({x} + a • t)) / ↑↑μ ({x} + a • t)) =ᶠ[𝓝[Ioi 0] 0]
    fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)
[PROOFSTEP]
filter_upwards [self_mem_nhdsWithin]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
L'' : Tendsto (fun r => ↑↑μ ({x} + r • t) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
this :
  Tendsto (fun a => ↑↑μ ({x} + a • t) / ↑↑μ ({x} + a • t) - ↑↑μ (sᶜ ∩ ({x} + a • t)) / ↑↑μ ({x} + a • t)) (𝓝[Ioi 0] 0)
    (𝓝 1)
⊢ ∀ (a : ℝ),
    a ∈ Ioi 0 →
      ↑↑μ ({x} + a • t) / ↑↑μ ({x} + a • t) - ↑↑μ (sᶜ ∩ ({x} + a • t)) / ↑↑μ ({x} + a • t) =
        ↑↑μ (s ∩ ({x} + a • t)) / ↑↑μ ({x} + a • t)
[PROOFSTEP]
rintro r (rpos : 0 < r)
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
L'' : Tendsto (fun r => ↑↑μ ({x} + r • t) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
this :
  Tendsto (fun a => ↑↑μ ({x} + a • t) / ↑↑μ ({x} + a • t) - ↑↑μ (sᶜ ∩ ({x} + a • t)) / ↑↑μ ({x} + a • t)) (𝓝[Ioi 0] 0)
    (𝓝 1)
r : ℝ
rpos : 0 < r
⊢ ↑↑μ ({x} + r • t) / ↑↑μ ({x} + r • t) - ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t) =
    ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)
[PROOFSTEP]
refine' I ({ x } + r • t) s _ _ hs
[GOAL]
case h.refine'_1
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
L'' : Tendsto (fun r => ↑↑μ ({x} + r • t) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
this :
  Tendsto (fun a => ↑↑μ ({x} + a • t) / ↑↑μ ({x} + a • t) - ↑↑μ (sᶜ ∩ ({x} + a • t)) / ↑↑μ ({x} + a • t)) (𝓝[Ioi 0] 0)
    (𝓝 1)
r : ℝ
rpos : 0 < r
⊢ ↑↑μ ({x} + r • t) ≠ 0
[PROOFSTEP]
simp only [h't, abs_of_nonneg rpos.le, pow_pos rpos, addHaar_smul, image_add_left, ENNReal.ofReal_eq_zero, not_le,
  or_false_iff, Ne.def, measure_preimage_add, abs_pow, singleton_add, mul_eq_zero]
[GOAL]
case h.refine'_2
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
hs : MeasurableSet s
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
I :
  ∀ (u v : Set E), ↑↑μ u ≠ 0 → ↑↑μ u ≠ ⊤ → MeasurableSet v → ↑↑μ u / ↑↑μ u - ↑↑μ (vᶜ ∩ u) / ↑↑μ u = ↑↑μ (v ∩ u) / ↑↑μ u
L : Tendsto (fun r => ↑↑μ (sᶜ ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
L' : Tendsto (fun r => ↑↑μ (sᶜ ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
L'' : Tendsto (fun r => ↑↑μ ({x} + r • t) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
this :
  Tendsto (fun a => ↑↑μ ({x} + a • t) / ↑↑μ ({x} + a • t) - ↑↑μ (sᶜ ∩ ({x} + a • t)) / ↑↑μ ({x} + a • t)) (𝓝[Ioi 0] 0)
    (𝓝 1)
r : ℝ
rpos : 0 < r
⊢ ↑↑μ ({x} + r • t) ≠ ⊤
[PROOFSTEP]
simp [h''t, ENNReal.ofReal_ne_top, addHaar_smul, image_add_left, ENNReal.mul_eq_top, Ne.def, not_false_iff,
  measure_preimage_add, singleton_add, and_false_iff, false_and_iff, or_self_iff]
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
have : Tendsto (fun r : ℝ => μ (toMeasurable μ s ∩ ({ x } + r • t)) / μ ({ x } + r • t)) (𝓝[>] 0) (𝓝 1) :=
  by
  apply tendsto_addHaar_inter_smul_one_of_density_one_aux μ _ (measurableSet_toMeasurable _ _) _ _ t ht h't h''t
  apply tendsto_of_tendsto_of_tendsto_of_le_of_le' h tendsto_const_nhds
  · refine' eventually_of_forall fun r => mul_le_mul_right' _ _
    exact measure_mono (inter_subset_inter_left _ (subset_toMeasurable _ _))
  · filter_upwards [self_mem_nhdsWithin]
    rintro r -
    apply ENNReal.div_le_of_le_mul
    rw [one_mul]
    exact measure_mono (inter_subset_right _ _)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
⊢ Tendsto (fun r => ↑↑μ (toMeasurable μ s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
apply tendsto_addHaar_inter_smul_one_of_density_one_aux μ _ (measurableSet_toMeasurable _ _) _ _ t ht h't h''t
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
⊢ Tendsto (fun r => ↑↑μ (toMeasurable μ s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
apply tendsto_of_tendsto_of_tendsto_of_le_of_le' h tendsto_const_nhds
[GOAL]
case hgf
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0,
    ↑↑μ (s ∩ closedBall x b) / ↑↑μ (closedBall x b) ≤ ↑↑μ (toMeasurable μ s ∩ closedBall x b) / ↑↑μ (closedBall x b)
[PROOFSTEP]
refine' eventually_of_forall fun r => mul_le_mul_right' _ _
[GOAL]
case hgf
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
r : ℝ
⊢ ↑↑μ (s ∩ closedBall x r) ≤ ↑↑μ (toMeasurable μ s ∩ closedBall x r)
[PROOFSTEP]
exact measure_mono (inter_subset_inter_left _ (subset_toMeasurable _ _))
[GOAL]
case hfh
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0, ↑↑μ (toMeasurable μ s ∩ closedBall x b) / ↑↑μ (closedBall x b) ≤ 1
[PROOFSTEP]
filter_upwards [self_mem_nhdsWithin]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
⊢ ∀ (a : ℝ), a ∈ Ioi 0 → ↑↑μ (toMeasurable μ s ∩ closedBall x a) / ↑↑μ (closedBall x a) ≤ 1
[PROOFSTEP]
rintro r -
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
r : ℝ
⊢ ↑↑μ (toMeasurable μ s ∩ closedBall x r) / ↑↑μ (closedBall x r) ≤ 1
[PROOFSTEP]
apply ENNReal.div_le_of_le_mul
[GOAL]
case h.h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
r : ℝ
⊢ ↑↑μ (toMeasurable μ s ∩ closedBall x r) ≤ 1 * ↑↑μ (closedBall x r)
[PROOFSTEP]
rw [one_mul]
[GOAL]
case h.h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
r : ℝ
⊢ ↑↑μ (toMeasurable μ s ∩ closedBall x r) ≤ ↑↑μ (closedBall x r)
[PROOFSTEP]
exact measure_mono (inter_subset_right _ _)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
this : Tendsto (fun r => ↑↑μ (toMeasurable μ s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
[PROOFSTEP]
refine this.congr fun r => ?_
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
this : Tendsto (fun r => ↑↑μ (toMeasurable μ s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
r : ℝ
⊢ ↑↑μ (toMeasurable μ s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t) = ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)
[PROOFSTEP]
congr 1
[GOAL]
case e_a
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
this : Tendsto (fun r => ↑↑μ (toMeasurable μ s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
r : ℝ
⊢ ↑↑μ (toMeasurable μ s ∩ ({x} + r • t)) = ↑↑μ (s ∩ ({x} + r • t))
[PROOFSTEP]
apply measure_toMeasurable_inter_of_sigmaFinite
[GOAL]
case e_a.hs
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
this : Tendsto (fun r => ↑↑μ (toMeasurable μ s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
r : ℝ
⊢ MeasurableSet ({x} + r • t)
[PROOFSTEP]
simp only [image_add_left, singleton_add]
[GOAL]
case e_a.hs
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
h''t : ↑↑μ t ≠ ⊤
this : Tendsto (fun r => ↑↑μ (toMeasurable μ s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 1)
r : ℝ
⊢ MeasurableSet ((fun x_1 => -x + x_1) ⁻¹' (r • t))
[PROOFSTEP]
apply (continuous_add_left (-x)).measurable (ht.const_smul₀ r)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
⊢ ∀ᶠ (r : ℝ) in 𝓝[Ioi 0] 0, Set.Nonempty (s ∩ ({x} + r • t))
[PROOFSTEP]
obtain ⟨t', t'_meas, t't, t'pos, t'top⟩ : ∃ t', MeasurableSet t' ∧ t' ⊆ t ∧ 0 < μ t' ∧ μ t' < ⊤ :=
  exists_subset_measure_lt_top ht h't.bot_lt
[GOAL]
case intro.intro.intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
t' : Set E
t'_meas : MeasurableSet t'
t't : t' ⊆ t
t'pos : 0 < ↑↑μ t'
t'top : ↑↑μ t' < ⊤
⊢ ∀ᶠ (r : ℝ) in 𝓝[Ioi 0] 0, Set.Nonempty (s ∩ ({x} + r • t))
[PROOFSTEP]
filter_upwards [(tendsto_order.1
        (tendsto_addHaar_inter_smul_one_of_density_one μ s x h t' t'_meas t'pos.ne' t'top.ne)).1
    0 zero_lt_one]
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
t' : Set E
t'_meas : MeasurableSet t'
t't : t' ⊆ t
t'pos : 0 < ↑↑μ t'
t'top : ↑↑μ t' < ⊤
⊢ ∀ (a : ℝ), 0 < ↑↑μ (s ∩ ({x} + a • t')) / ↑↑μ ({x} + a • t') → Set.Nonempty (s ∩ ({x} + a • t))
[PROOFSTEP]
intro r hr
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
t' : Set E
t'_meas : MeasurableSet t'
t't : t' ⊆ t
t'pos : 0 < ↑↑μ t'
t'top : ↑↑μ t' < ⊤
r : ℝ
hr : 0 < ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • t')
⊢ Set.Nonempty (s ∩ ({x} + r • t))
[PROOFSTEP]
have : μ (s ∩ ({ x } + r • t')) ≠ 0 := fun h' => by simp only [ENNReal.not_lt_zero, ENNReal.zero_div, h'] at hr
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
t' : Set E
t'_meas : MeasurableSet t'
t't : t' ⊆ t
t'pos : 0 < ↑↑μ t'
t'top : ↑↑μ t' < ⊤
r : ℝ
hr : 0 < ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • t')
h' : ↑↑μ (s ∩ ({x} + r • t')) = 0
⊢ False
[PROOFSTEP]
simp only [ENNReal.not_lt_zero, ENNReal.zero_div, h'] at hr
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
t' : Set E
t'_meas : MeasurableSet t'
t't : t' ⊆ t
t'pos : 0 < ↑↑μ t'
t'top : ↑↑μ t' < ⊤
r : ℝ
hr : 0 < ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • t')
this : ↑↑μ (s ∩ ({x} + r • t')) ≠ 0
⊢ Set.Nonempty (s ∩ ({x} + r • t))
[PROOFSTEP]
have : (s ∩ ({ x } + r • t')).Nonempty := nonempty_of_measure_ne_zero this
[GOAL]
case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
t' : Set E
t'_meas : MeasurableSet t'
t't : t' ⊆ t
t'pos : 0 < ↑↑μ t'
t'top : ↑↑μ t' < ⊤
r : ℝ
hr : 0 < ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • t')
this✝ : ↑↑μ (s ∩ ({x} + r • t')) ≠ 0
this : Set.Nonempty (s ∩ ({x} + r • t'))
⊢ Set.Nonempty (s ∩ ({x} + r • t))
[PROOFSTEP]
apply this.mono (inter_subset_inter Subset.rfl _)
[GOAL]
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
t : Set E
ht : MeasurableSet t
h't : ↑↑μ t ≠ 0
t' : Set E
t'_meas : MeasurableSet t'
t't : t' ⊆ t
t'pos : 0 < ↑↑μ t'
t'top : ↑↑μ t' < ⊤
r : ℝ
hr : 0 < ↑↑μ (s ∩ ({x} + r • t')) / ↑↑μ ({x} + r • t')
this✝ : ↑↑μ (s ∩ ({x} + r • t')) ≠ 0
this : Set.Nonempty (s ∩ ({x} + r • t'))
⊢ {x} + r • t' ⊆ {x} + r • t
[PROOFSTEP]
exact add_subset_add Subset.rfl (smul_set_mono t't)