l3lab/ntp-mathlib huggingface dataset:
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  

Proof state:
case inr
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
⊢ ↑↑μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • ↑↑μH[1] s

Next tactic:
suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
      ext e
      simp only [mem_image]
      refine' ⟨fun ⟨x, h⟩ => ⟨x, _⟩, fun ⟨x, h⟩ => ⟨x, _⟩⟩
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn]
        exact h
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn] at h
        exact h
    · exact hausdorffMeasure_real.symm
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    

Proof state:
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
this : ↑↑μH[1] ((fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)) = ‖v‖₊ • ↑↑μH[1] s
⊢ ↑↑μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • ↑↑μH[1] s

Next tactic:
simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    

Proof state:
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
this : ↑↑μH[1] ((fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)) = ‖v‖₊ • ↑↑μH[1] s
⊢ ↑↑μH[1] ((fun r => r • v) '' s) = ↑‖v‖₊ * ↑↑volume s

Next tactic:
convert this
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · 

Proof state:
case h.e'_2.h.e'_3
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
this : ↑↑μH[1] ((fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)) = ‖v‖₊ • ↑↑μH[1] s
⊢ (fun r => r • v) '' s = (fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)

Next tactic:
simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
      

Proof state:
case h.e'_2.h.e'_3
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
this : ↑↑μH[1] ((fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)) = ‖v‖₊ • ↑↑μH[1] s
⊢ (fun r => r • v) '' s = (fun x => ‖v‖ • x • ‖v‖⁻¹ • v) '' s

Next tactic:
ext e
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
      ext e
      

Proof state:
case h.e'_2.h.e'_3.h
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
this : ↑↑μH[1] ((fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)) = ‖v‖₊ • ↑↑μH[1] s
e : E
⊢ e ∈ (fun r => r • v) '' s ↔ e ∈ (fun x => ‖v‖ • x • ‖v‖⁻¹ • v) '' s

Next tactic:
simp only [mem_image]
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
      ext e
      simp only [mem_image]
      

Proof state:
case h.e'_2.h.e'_3.h
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
this : ↑↑μH[1] ((fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)) = ‖v‖₊ • ↑↑μH[1] s
e : E
⊢ (∃ x ∈ s, x • v = e) ↔ ∃ x ∈ s, ‖v‖ • x • ‖v‖⁻¹ • v = e

Next tactic:
refine' ⟨fun ⟨x, h⟩ => ⟨x, _⟩, fun ⟨x, h⟩ => ⟨x, _⟩⟩
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
      ext e
      simp only [mem_image]
      refine' ⟨fun ⟨x, h⟩ => ⟨x, _⟩, fun ⟨x, h⟩ => ⟨x, _⟩⟩
      · 

Proof state:
case h.e'_2.h.e'_3.h.refine'_1
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
this : ↑↑μH[1] ((fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)) = ‖v‖₊ • ↑↑μH[1] s
e : E
x✝ : ∃ x ∈ s, x • v = e
x : ℝ
h : x ∈ s ∧ x • v = e
⊢ x ∈ s ∧ ‖v‖ • x • ‖v‖⁻¹ • v = e

Next tactic:
rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn]
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
      ext e
      simp only [mem_image]
      refine' ⟨fun ⟨x, h⟩ => ⟨x, _⟩, fun ⟨x, h⟩ => ⟨x, _⟩⟩
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn]
        

Proof state:
case h.e'_2.h.e'_3.h.refine'_1
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
this : ↑↑μH[1] ((fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)) = ‖v‖₊ • ↑↑μH[1] s
e : E
x✝ : ∃ x ∈ s, x • v = e
x : ℝ
h : x ∈ s ∧ x • v = e
⊢ x ∈ s ∧ x • v = e

Next tactic:
exact h
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
      ext e
      simp only [mem_image]
      refine' ⟨fun ⟨x, h⟩ => ⟨x, _⟩, fun ⟨x, h⟩ => ⟨x, _⟩⟩
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn]
        exact h
      · 

Proof state:
case h.e'_2.h.e'_3.h.refine'_2
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
this : ↑↑μH[1] ((fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)) = ‖v‖₊ • ↑↑μH[1] s
e : E
x✝ : ∃ x ∈ s, ‖v‖ • x • ‖v‖⁻¹ • v = e
x : ℝ
h : x ∈ s ∧ ‖v‖ • x • ‖v‖⁻¹ • v = e
⊢ x ∈ s ∧ x • v = e

Next tactic:
rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn] at h
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
      ext e
      simp only [mem_image]
      refine' ⟨fun ⟨x, h⟩ => ⟨x, _⟩, fun ⟨x, h⟩ => ⟨x, _⟩⟩
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn]
        exact h
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn] at h
        

Proof state:
case h.e'_2.h.e'_3.h.refine'_2
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
this : ↑↑μH[1] ((fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)) = ‖v‖₊ • ↑↑μH[1] s
e : E
x✝ : ∃ x ∈ s, ‖v‖ • x • ‖v‖⁻¹ • v = e
x : ℝ
h : x ∈ s ∧ x • v = e
⊢ x ∈ s ∧ x • v = e

Next tactic:
exact h
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
      ext e
      simp only [mem_image]
      refine' ⟨fun ⟨x, h⟩ => ⟨x, _⟩, fun ⟨x, h⟩ => ⟨x, _⟩⟩
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn]
        exact h
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn] at h
        exact h
    · 

Proof state:
case h.e'_3.h.e'_1.h.e'_2.h.e'_3
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
this : ↑↑μH[1] ((fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)) = ‖v‖₊ • ↑↑μH[1] s
⊢ volume = μH[1]

Next tactic:
exact hausdorffMeasure_real.symm
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
      ext e
      simp only [mem_image]
      refine' ⟨fun ⟨x, h⟩ => ⟨x, _⟩, fun ⟨x, h⟩ => ⟨x, _⟩⟩
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn]
        exact h
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn] at h
        exact h
    · exact hausdorffMeasure_real.symm
  

Proof state:
case inr
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
⊢ ↑↑μH[1] ((fun x => ‖v‖ • x) '' (⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) '' s)) = ‖v‖₊ • ↑↑μH[1] s

Next tactic:
have iso_smul : Isometry (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) := by
    refine' AddMonoidHomClass.isometry_of_norm _ fun x => (norm_smul _ _).trans _
    rw [norm_smul, norm_inv, norm_norm, inv_mul_cancel hn, mul_one, LinearMap.id_apply]
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
      ext e
      simp only [mem_image]
      refine' ⟨fun ⟨x, h⟩ => ⟨x, _⟩, fun ⟨x, h⟩ => ⟨x, _⟩⟩
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn]
        exact h
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn] at h
        exact h
    · exact hausdorffMeasure_real.symm
  have iso_smul : Isometry (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) := by
    

Proof state:
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
⊢ Isometry ⇑(LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v))

Next tactic:
refine' AddMonoidHomClass.isometry_of_norm _ fun x => (norm_smul _ _).trans _
theorem hausdorffMeasure_smul_right_image [NormedAddCommGroup E] [NormedSpace ℝ E]
    [MeasurableSpace E] [BorelSpace E] (v : E) (s : Set ℝ) :
    μH[1] ((fun r => r • v) '' s) = ‖v‖₊ • μH[1] s := by
  obtain rfl | hv := eq_or_ne v 0
  · haveI := noAtoms_hausdorff E one_pos
    obtain rfl | hs := s.eq_empty_or_nonempty
    · simp
    simp [hs]
  have hn : ‖v‖ ≠ 0 := norm_ne_zero_iff.mpr hv
  -- break lineMap into pieces
  suffices
      μH[1] ((‖v‖ • ·) '' (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v) '' s)) = ‖v‖₊ • μH[1] s by
    -- porting note: proof was shorter, could need some golf
    simp only [hausdorffMeasure_real, nnreal_smul_coe_apply]
    convert this
    · simp only [image_smul, LinearMap.toSpanSingleton_apply, Set.image_image]
      ext e
      simp only [mem_image]
      refine' ⟨fun ⟨x, h⟩ => ⟨x, _⟩, fun ⟨x, h⟩ => ⟨x, _⟩⟩
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn]
        exact h
      · rw [smul_comm (norm _), smul_comm (norm _), inv_smul_smul₀ hn] at h
        exact h
    · exact hausdorffMeasure_real.symm
  have iso_smul : Isometry (LinearMap.toSpanSingleton ℝ E (‖v‖⁻¹ • v)) := by
    refine' AddMonoidHomClass.isometry_of_norm _ fun x => (norm_smul _ _).trans _
    

Proof state:
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
v : E
s : Set ℝ
hv : v ≠ 0
hn : ‖v‖ ≠ 0
x : ℝ
⊢ ‖LinearMap.id x‖ * ‖‖v‖⁻¹ • v‖ = ‖x‖

Next tactic:
rw [norm_smul, norm_inv, norm_norm, inv_mul_cancel hn, mul_one, LinearMap.id_apply]